+# Some overall notes on how this works
+#
+# * We smoke using the system provided latest, and custom built "oddball perls"
+# The reason for not having a blanket matrix is to conserve travis resources
+# as a full DBIC depchain isn't cheap
+#
+# * Minimum perl officially supported by DBIC is 5.8.3. This *includes* the
+# basic depchain. On failure either attempt to fix it or bring it to the
+# attention of ribasushi. *DO NOT* disable 5.8 testing - it is here for a
+# reason
+#
+# * The matrix is built from two main modes - CLEANTEST = [true|false]. In
+# the first case we test with minimal deps available, and skip everything
+# listed in DBIC::OptDesps. Without CLEANTEST we bring the armada of RDBMS
+# and install the maximum possible set of deps and configs
+#
+# * All builds/tests run under NUMTHREADS number of threads.
+#
+# * The way .travis.yml is fed to the command controller is idiotic - it
+# makes using multiline `bash -c` statements impossible. Therefore to
+# aid readability (our travis logic is rather complex), the bulk of
+# functionality is moved to a script. More about the problem (and the
+# WONTFIX "explanation") here: https://github.com/travis-ci/travis-ci/issues/497
+#
+
+# Smoke only specific branches to a) not overload the queue and b) not
+# overspam the notification channels
+# Furthermore if the branch is ^topic/ - the custom compiled smokes will
+# not run at all, again in order to conserve queue resources
+branches:
+ only:
+ - master
+ - /^smoke\//
+ - /^topic\//
+
+notifications:
+ irc:
+ channels:
+ - "irc.perl.org#dbic-smoke"
+ template:
+ - "%{branch}#%{build_number} by %{author}: %{message} (%{build_url})"
+ on_success: change
+ on_failure: always
+ use_notice: true
+
+ email:
+ recipients:
+ - ribasushi@cpan.org
+ # Temporary - if it proves to be too noisy, we'll shut it off
+ #- dbix-class-devel@lists.scsys.co.uk
+ on_success: change
+ on_failure: change
+
language: perl
+
perl:
- - "5.14"
- - "5.12"
- - "5.10"
+ - "5.16"
+
+env:
+ - CLEANTEST=false
+ - CLEANTEST=true
-### TODO: Add in all of the various databases that Travis has access to,
-### and set the DBICTEST_*_DSN, _USER, _PASS env variables.
-### MySQL, PostgreSQL, Firebird, SQL Anywhere
+matrix:
+ include:
+ # minimum supported with threads
+ - perl: 5.8.5_thr
+ env:
+ - CLEANTEST=false
+ - BREWOPTS="-Duseithreads"
+ - BREWVER=5.8.5
+
+ # minimum supported without threads
+ - perl: 5.8.3_nt
+ env:
+ - CLEANTEST=false
+ - BREWOPTS=""
+ - BREWVER=5.8.3
+
+ # this is the perl suse ships
+ - perl: 5.10.0_thr_dbg
+ env:
+ - CLEANTEST=true
+ - BREWOPTS="-DDEBUGGING -Duseithreads"
+ - BREWVER=5.10.0
+
+ # this particular perl is quite widespread
+ - perl: 5.8.8_thr_mb
+ env:
+ - CLEANTEST=true
+ - BREWOPTS="-Duseithreads -Dusemorebits"
+ - BREWVER=5.8.8
+
+before_install:
+ # Do not make this part of the env-matrix
+ # different boxes we run on have different amount of hw threads
+ # hence why we need to query
+ # result is 1.5 times the physical threads
+ - export NUMTHREADS=$(( ( $(cut -f 2 -d '-' /sys/devices/system/cpu/online) + 1 ) * 15 / 10 ))
install:
- # Deal with all of the dependancies, quickly and quietly
- - cpanm --quiet --notest Module::Install
- - perl Makefile.PL --alldeps
- - make listalldeps | cpanm --quiet --notest
-
- ### FIXME: Development releases need a nicer way of installing ###
- - cpanm FREW/SQL-Abstract-1.73_01.tar.gz
-script:
- # Make sure we don't run Makefile.PL without --alldeps
- - make test
+ # Build and switch to a custom perl if requested
+ # Set the environment based on CLEANTEST
+ # Preinstall/install deps
+ #
+ # sourcing the file is *EXTREMELY* important - otherwise
+ # no envvars will survive
+ - source maint/travis-ci_prepare_env
-# whitelist
-branches:
- only:
- - master
+script:
+ - export HARNESS_TIMER=1 HARNESS_OPTIONS=c:j$NUMTHREADS
-notifications:
- irc: "irc.perl.org#dbix-class"
-
\ No newline at end of file
+ # either a plain 'make test' OR a shuffled prove torture
+ # use the random order test plan unless CLEANTEST
+ # prepare_env may have short-circuited the test entirely
+ - test -n "$SHORT_CIRCUIT_SMOKE" || (test "$CLEANTEST" = "true" && make test || prove -lrswj$NUMTHREADS t xt)