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
The 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/.
The 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 5.26.1.1). Then the relevant program directories are added to the PATH
.
The next commands switch to the build directory and install any module dependencies (I run author tests on AppVeyor, so I include developer dependencies).
The build_script
and 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 dmake
.
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:
Booking.com, cPanel, craigslist, bluehost, Assurant, Grant Street Group
Leave a comment