Automated testing on Windows with AppVeyor
AppVeyor is a continuous integration service similar to Travis CI, just on Windows. If you have a Perl module on GitHub, it's not that hard to have it run tests automatically on Windows; it's just not well documented.
(The following information was taken from https://blogs.perl.org/users/eserte/2016/04/testing-with-appveyor.html, the AppVeyor documentation, and random trial and error.)
First you need to sign in to AppVeyor with your GitHub account and let it access your repositories, as described on https://www.appveyor.com/docs/.
Then you need to add a
.appveyor.yml file to your repository. Mine looks like this:
cache: - C:\strawberry install: - if not exist "C:\strawberry" choco install strawberryperl -y - set PATH=C:\strawberry\c\bin;C:\strawberry\perl\site\bin;C:\strawberry\perl\bin;%PATH% - cd %APPVEYOR_BUILD_FOLDER% - cpanm --quiet --installdeps --with-develop --notest . build_script: - perl Makefile.PL - gmake test_script: - gmake test
cache part tells AppVeyor to save the contents of
C:\strawberry after every successful build and to restore
C:\strawberry (if available) before starting a fresh build. See https://www.appveyor.com/docs/build-cache/.
install script checks for the existence of
C:\strawberry. If it's not there, Chocolatey (a Windows package manager) is used to install the Strawberry Perl package (currently using Strawberry Perl 184.108.40.206). Then the relevant program directories are added to the
The next commands switch to the build directory and install any module dependencies (I run author tests on AppVeyor, so I include developer dependencies).
test_script parts are just the usual
perl Makefile.PL && make && make test step. Strawberry Perl comes with GNU make now, so we can use
gmake instead of the older
And that's it. My module (including development branches and pull requests) is now automatically tested on Windows.
This post is not directly related to core perl, but AppVeyor was discussed at the 2017 Perl 5 Hackathon and this is what got me to take a closer look at the system (and write up the results). We had a good time.
Sponsors for the Perl 5 Hackathon 2017
This conference could not have happened without the generous contributions from the following companies: