---
language: perl
perl:
- "blead" ## build perl from git
- "dev" ## latest point release
- "stable" ## latest stable release
- "5.28"
# - "5.26"
- "5.24"
# - "5.22"
- "5.20"
# - "5.18"
- "5.16"
# - "5.14"
- "5.12"
- "5.10"
# - "5.8.9"
# - "5.8.8"
- "5.8"
env:
global:
- AUTOMATED_TESTING=1
matrix:
include:
- perl: "stable"
env: COVERAGE="Coveralls Codecov" DEVEL_COVER_OPTIONS="-ignore,^t/"
- perl: "stable"
env: AUTHOR_TESTING=1 RELEASE_TESTING=1 TEST_SIGNATURE=1
allow_failures:
- perl: "blead"
- perl: "dev"
- perl: "5.8.9" ## allow specific perl v5.8.9 failures; (v5.8.9 can be problematic for many projects)
- perl: "5.8.8" ## allow specific perl v5.8.8 failures; (v5.8.8 can be problematic for many projects)
- perl: "5.8" ## allow perl v5.8 failures; (v5.8.x can be problematic for many projects)
- perl: "stable"
env: AUTHOR_TESTING=1 RELEASE_TESTING=1 TEST_SIGNATURE=1
# addons:
# apt:
# packages:
# - aspell
# - aspell-en
before_install:
# * global defaults (allows project network-side overloads [enables build flexibility and use by non-AUTHOR's])
- export AUTHOR_TESTING=${AUTHOR_TESTING:=}
- export RELEASE_TESTING=${RELEASE_TESTING:=}
#
- git clone git://github.com/travis-perl/helpers ~/travis-perl-helpers
- source ~/travis-perl-helpers/init
- build-perl
- perl -V
- |
function falsey { X=$(echo "$1" | tr '[:upper:]' '[:lower:]'); if test -n "$X" -o "$X" == "0" -o "$X" == "f" -o "$X" == "false" -o "$X" == "n" -o "$X" == "no" -o "$X" == "off"; then return 1; else return 0; fi; }
function truthy { if falsey "$1"; then return 1; else return 0; fi; }
function unsupported { truthy "$OS_unsupported"; }
function unsupported_msg { printf "\e[35mWARNING ~ OS unsupported\e[m\n"; }
function warn_if_unsupported { if unsupported; then unsupported_msg >&2 ; fi; }
function warn_and_fail_if_unsupported { if unsupported; then unsupported_msg >&2 ; return 1; fi; }
- export CI_BUILD_FILE=$(test -e Build.PL && echo "Build.PL" || (test -e Makefile.PL && echo "Makefile.PL" || echo ""))
install:
# ensure CWD is project main directory
- cd "$TRAVIS_BUILD_DIR"
# install baseline dependencies + check OS_unsupported
- export OS_unsupported=""
# * attempt install of prereqs, ignoring errors; for "OS unsupported" check
- if test -n "$CI_BUILD_FILE"; then cpanm --no-interactive --no-man-pages --notest --skip-satisfied --installdeps . || true; fi;
- if test -n "$CI_BUILD_FILE"; then OS_unsupported=$(test $(perl $CI_BUILD_FILE 2>&1 | grep -c "^OS unsupported\b") -ge 1 && echo "OS unsupported" || echo "$OS_unsupported"); fi;
# install dependencies
- unsupported || cpan-install --deps # installs prereqs, including recommends
- unsupported || cpan-install --coverage # installs coverage prereqs, if enabled
# setup coverage
- unsupported || coverage-setup
# build
- unsupported || build-dist
- unsupported || cd "$BUILD_DIR"
before_script:
# setup environment options
- export HARNESS_OPTIONS="c" # enable color
- truthy "$COVERAGE" || export HARNESS_OPTIONS="j:$HARNESS_OPTIONS" # for non-COVERAGE builds, enable parallel test processing
- export HARNESS_TIMER="1"
# * preload JSON:PP to avoid JSON::PP::Boolean redefine warning (see <https://github.com/rurban/Cpanel-JSON-XS/issues/65#issuecomment-219352754>)
- falsey "$COVERAGE" || export HARNESS_PERL_SWITCHES="-MJSON::PP -MDevel::Cover"
- echo "# environment" && for v in BUILD_DIR CI_BUILD_FILE COVERAGE DEVEL_COVER_OPTIONS HARNESS_OPTIONS HARNESS_PERL_SWITCHES OS_unsupported PERL5OPT PWD; do echo "$v=$(printenv $v)"; done
script:
- unsupported || prove -l $(test-files)
- warn_if_unsupported # show warning if OS is unsupported ## HACK: additional display here until "after_script" version stops being folded
after_success:
- unsupported || coverage-report # coveralls.io + codecov.io for `COVERAGE="Coveralls Codecov"`
after_script:
- warn_and_fail_if_unsupported # show warning if OS is unsupported; failing here forces unfolding and display of the warning ## NOT WORKING
notifications:
on_success: change
on_failure: always
# irc:
# channels:
# - "irc.perl.org#modulesignature"
# template:
# - "%{branch}: %{message} %{build_url}"
# email: false
# slack:
# secure: jm6FQqg+Pkly1+Jl7glx9evbyDq7WJ9ecmvYU2o+HXLlxq8A0l2BUejfJdf/3akrdQa2I+lMI92rujLAUWVu2okfD0rI3634hkpXZfKrj689OlWOMnI4da0sHYJhzmWGMLgiiqAH/QZiCBpXgNKomRHrit39wSa1v4b17l+2fVaOOGoUzpHYK5r/6CCYXjFvm0ayZ0hcw5vWMMuPOIdVcDBUHbzKri/JRA3tWUZ0uPi36g6D9r4Gn0v+hA9Qgyk8XhT7edmFPkLpANxnCyuMTPU2T+3grHsGZZj9C5euzlNmm47dXjKKSD17jH7cSa4+vRgat0ffYUHA/WRvjEVyYgDMDanp/2cRmLgU3RNNoiB8/qiFhOuoCUS6PdGnDJF+enKs7JdRiTrYfOqJulknZFH1FKrj36S8P6zbRggoyjyzZBQOO+FO2U3HvVZ99W+7nMGj58IzuFz1HljMlul1esYIgVxqVLDyu0iwM7RZsxf+1XND/J9qmbDT5GdeXc0NJm5BiLmZ2bOmmyss3nMX9pk3WyUU0dK731rmT60SzoTxT+BZoa3OkCr1bKxGGVGrltdigkCQZhwfyofvLm83GkEF3vu27fXeiyqj7O5rUku4yrae8jsVz4V4chOFIrWBunjsUFM/q4+NGBaxtl3l+kVLlggazLJgLSzmr6P7VFk=