Extra poison - have our latest stable in PERL5LIB
[dbsrgits/DBIx-Class.git] / maint / travis-ci_scripts / 30_before_script.bash
index c2faa1a..33f050e 100755 (executable)
@@ -3,19 +3,33 @@
 source maint/travis-ci_scripts/common.bash
 if [[ -n "$SHORT_CIRCUIT_SMOKE" ]] ; then return ; fi
 
-# poison the environment - basically look through lib, find all mentioned
-# ENVvars and set them to true and see if anything explodes
+# poison the environment
 if [[ "$POISON_ENV" = "true" ]] ; then
+
+  # look through lib, find all mentioned ENVvars and set them
+  # to true and see if anything explodes
   for var in $(grep -P '\$ENV\{' -r lib/ | grep -oP 'DBIC_\w+' | sort -u | grep -v DBIC_TRACE) ; do
     if [[ -z "${!var}" ]] ; then
       export $var=1
     fi
   done
 
+  # bogus nonexisting DBI_*
   export DBI_DSN="dbi:ODBC:server=NonexistentServerAddress"
   export DBI_DRIVER="ADO"
 
+  # make sure tests do not rely on implicid order of returned results
   export DBICTEST_SQLITE_REVERSE_DEFAULT_ORDER=1
+
+  # emulate a local::lib-like env
+  # trick cpanm into executing true as shell - we just need the find+unpack
+  run_or_err "Downloading latest stable DBIC from CPAN" \
+    "SHELL=/bin/true cpanm --look DBIx::Class"
+
+  export PERL5LIB="$( ls -d ~/.cpanm/latest-build/DBIx-Class-*/lib | tail -n1 ):$PERL5LIB"
+
+  # perldoc -l <mod> searches $(pwd)/lib in addition to PERL5LIB etc, hence the cd /
+  echo_err "Latest stable DBIC (without deps) locatable via \$PERL5LIB at $(cd / && perldoc -l DBIx::Class)"
 fi
 
 if [[ "$CLEANTEST" = "true" ]]; then
@@ -26,7 +40,7 @@ if [[ "$CLEANTEST" = "true" ]]; then
   # effects from travis preinstalls)
 
   # trick cpanm into executing true as shell - we just need the find+unpack
-  run_or_err "Downloading DBIC inc/ from CPAN" \
+  [[ -d ~/.cpanm/latest-build/DBIx-Class-*/inc ]] || run_or_err "Downloading latest stable DBIC inc/ from CPAN" \
     "SHELL=/bin/true cpanm --look DBIx::Class"
 
   mv ~/.cpanm/latest-build/DBIx-Class-*/inc .
@@ -39,15 +53,19 @@ if [[ "$CLEANTEST" = "true" ]]; then
   # So instead we still use our stock (possibly old) CPAN, and add some
   # handholding
 
-  # no configure_requires - we will need the usual suspects anyway
-  # without pre-installign these in one pass things like extract_prereqs won't work
-  CPAN_is_sane || installdeps ExtUtils::MakeMaker ExtUtils::CBuilder Module::Build
-
-  # FIXME - need new TB1.5 devrel
-  # if we run under --dev install latest github of TB1.5 first
-  # (unreleased workaround for precedence warnings)
   if [[ "$DEVREL_DEPS" == "true" ]] ; then
-    installdeps git://github.com/nthykier/test-more.git@fix-return-precedence-issue
+    # Many dists still do not pass tests under tb1.5 properly (and it itself
+    # does not even install on things like 5.10). Install the *stable-dev*
+    # latest T::B here, so that it will not show up as a dependency, and
+    # hence it will not get installed a second time as an unsatisfied dep
+    # under cpanm --dev
+    installdeps 'Test::Builder~<1.005'
+
+  elif ! CPAN_is_sane ; then
+    # no configure_requires - we will need the usual suspects anyway
+    # without pre-installing these in one pass things like extract_prereqs won't work
+    installdeps ExtUtils::MakeMaker ExtUtils::CBuilder Module::Build
+
   fi
 
 else
@@ -82,10 +100,7 @@ else
     # the official version is very much outdated and does not compile on 5.14+
     # use this rather updated source tree (needs to go to PAUSE):
     # https://github.com/pilcrow/perl-dbd-interbase
-    run_or_err "Fetching patched DBD::InterBase" \
-      "git clone https://github.com/dbsrgits/perl-dbd-interbase ~/dbd-interbase"
-
-    parallel_installdeps_notest ~/dbd-interbase/
+    parallel_installdeps_notest git://github.com/dbsrgits/perl-dbd-interbase.git
   fi
 
 fi