call methods on $config; don't use as hash #89
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# brian's standard GitHub Actions Windows config for Perl 5 modules | |
# version 20241126.001 | |
# https://github.com/briandfoy/github_workflows | |
# https://github.com/features/actions | |
# This file is licensed under the Artistic License 2.0 | |
# | |
# This uses the AUTOMATED_TESTING environment that you can set up | |
# in your repo settings. Or not. It still works if it isn't defined. | |
# In that environment, add whatever environment variables or secrets | |
# that you want. | |
--- | |
name: windows | |
# https://github.com/actions/checkout/issues/1590 | |
env: | |
ACTIONS_ALLOW_USE_UNSECURE_NODE_VERSION: true | |
# https://docs.github.com/en/actions/writing-workflows/choosing-what-your-workflow-does/using-concurrency | |
concurrency: | |
group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.ref || github.run_id }} | |
cancel-in-progress: true | |
on: | |
push: | |
branches: | |
- '**' | |
- '!**appveyor**' | |
- '!**circleci**' | |
- '!**linux**' | |
- '!**macos**' | |
- '!**notest**' | |
- '!**release**' | |
tags-ignore: | |
# I tag release pushes but those should have already been tested | |
- 'release-*' | |
paths-ignore: | |
# list all the files which are irrelevant to the tests | |
# non-code, support files, docs, etc | |
- '.appveyor.yml' | |
- '.circleci' | |
- '.gitattributes' | |
- '.github/workflows/linux.yml' | |
- '.github/workflows/macos.yml' | |
- '.github/workflows/release.yml' | |
- '.gitignore' | |
- '.releaserc' | |
- 'Changes' | |
- 'LICENSE' | |
- 'README.pod' | |
pull_request: | |
jobs: | |
perl: | |
environment: automated_testing | |
runs-on: ${{ matrix.os }} | |
# store any secrets in an environment named "testing" | |
strategy: | |
matrix: | |
os: | |
- windows-2019 | |
- windows-2022 | |
steps: | |
- run: git config --global core.autocrlf false | |
- uses: actions/checkout@v3 | |
- name: Set up Perl | |
run: | | |
choco install strawberryperl | |
echo "C:\strawberry\c\bin" | Out-File -FilePath $env:GITHUB_PATH -Encoding utf8 -Append | |
echo "C:\strawberry\perl\site\bin" | Out-File -FilePath $env:GITHUB_PATH -Encoding utf8 -Append | |
echo "C:\strawberry\perl\bin" | Out-File -FilePath $env:GITHUB_PATH -Encoding utf8 -Append | |
- name: Perl version | |
run: perl -V | |
# Install the dependencies, again not testing them. This installs the | |
# module in the current directory, so we end up installing the module, | |
# but that's not a big deal. | |
- name: Install dependencies | |
run: | | |
cpan -M https://www.cpan.org -T . | |
cpan -M https://www.cpan.org -T Test::Manifest ${{ vars.EXTRA_CPAN_MODULES }} | |
- name: Run tests | |
run: | | |
perl Makefile.PL | |
make test | |
# Run author tests, but only if there's an xt/ directory | |
- name: Author tests | |
if: hashFiles('xt') != '' | |
run: | | |
cpan -M https://www.cpan.org -T Test::CPAN::Changes | |
prove -r -b xt | |
# Running tests in parallel should be faster, but it's also more | |
# tricky in cases where different tests share a feature, such as a | |
# file they want to write to. Parallel tests can stomp on each other. | |
# Test in parallel to catch that, because other people will test your | |
# stuff in parallel. | |
- name: Run tests in parallel | |
env: | |
HARNESS_OPTIONS: j10 | |
run: | | |
perl Makefile.PL | |
make test | |
# The disttest target creates the distribution, unwraps it, changes | |
# into the dist dir, then runs the tests there. That checks that | |
# everything that should be in the dist is in the dist. If you forget | |
# to update MANIFEST with new modules, data files, and so on, you | |
# should notice the error. | |
- name: Run distribution tests | |
run: | | |
perl Makefile.PL | |
make disttest | |
make clean | |
# And, coverage reports. Windows Devel::Coverage can't handle threads, | |
# so set the env var WINDOWS_SKIP_COVERAGE to skip this part. | |
- name: Run coverage tests | |
if: env.WINDOWS_SKIP_COVERAGE != 0 | |
env: | |
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
run: | | |
cpan -M https://www.cpan.org -T Devel::Cover Devel::Cover::Report::Coveralls | |
perl Makefile.PL | |
cover -test -report coveralls |