Skipping automated coverage testing for v5.8 on Travis

Previously I had a kludge to allow coverage testing on v5.8 through Travis CI. I used cpanm to install exactly Devel::Cover 1.23 because it supported v5.8. The problem now is that it doesn’t support v5.26 and my automated testing fails.

My Travis config can be a bit more complicated. I can create a matrix of tests and apply different setting to them. I make one for v5.8 and create set NO_DEVEL_COVER=1. That overrides the global NO_DEVEL_COVER=1.

At each command line I can test that variable and decide what to do based on its value. I thought about installing different versions of Devel::Cover in each case but that’s a bit too much I think. I’m already getting the coverage data from several other versions already.

sudo: false

language: perl
perl:
    - "5.10"
    - "5.12"
    - "5.14"
    - "5.16"
    - "5.18"
    - "5.20"
    - "5.22"
    - "5.24"
    - "5.26"

env:
    - NO_DEVEL_COVER=0

matrix:
    include:
        - perl: 5.8
          env: NO_DEVEL_COVER=1

before_install:
    - git clone git://github.com/travis-perl/helpers ~/travis-perl-helpers
    - source ~/travis-perl-helpers/init --auto

install:
    - cpanm --quiet --installdeps --notest .
    - if [ "$NO_DEVEL_COVER" = "0" ]; then cpanm --quiet --notest Devel::Cover; fi
    - if [ "$NO_DEVEL_COVER" = "0" ]; then cpanm --quiet --notest Devel::Cover::Report::Coveralls; fi

script:
    - if [ "$NO_DEVEL_COVER" = "0" ]; then cover -delete && cover -test; fi
    - if [ "$NO_DEVEL_COVER" = "1" ]; then perl Makefile.PL && make test; fi

after_success:
    - if [ "$NO_DEVEL_COVER" = "0" ]; then cover -report coveralls; fi

But, then I couldn’t help myself and I thought maybe I could do it another way and get both of them. Instead of turning off coverage testing I’ll use the environment variable to decide which version of Devel::Cover to install. That means there’s only one command line that might do something different.

I think I like my first solution (and maybe should extend it to only do coverage testing on the latest version). This one looks prettier though:

sudo: false

language: perl
perl:
    - "5.10"
    - "5.12"
    - "5.14"
    - "5.16"
    - "5.18"
    - "5.20"
    - "5.22"
    - "5.24"
    - "5.26"

env:
    - OLD_DEVEL_COVER=0

matrix:
    include:
        - perl: 5.8
          env: OLD_DEVEL_COVER=1

before_install:
    - git clone git://github.com/travis-perl/helpers ~/travis-perl-helpers
    - source ~/travis-perl-helpers/init --auto

install:
    - cpanm --quiet --installdeps --notest .
    - if [ "$OLD_DEVEL_COVER" = "0" ]; then cpanm --quiet --notest Devel::Cover; fi
    - if [ "$OLD_DEVEL_COVER" = "1" ]; then cpanm --quiet --notest Devel::[email protected]; fi
    - cpanm --quiet --notest Devel::Cover::Report::Coveralls

script:
    - cover -delete && cover -test

after_success:
    - cover -report coveralls

Leave a Reply

Your email address will not be published. Required fields are marked *