This uses Travis's new(ish) Ubuntu Trusty image, and changes the
version number of the Swift binaries that we download.
We now install clang-3.6. This is not the default on Trusty, but
it's required by the Swift 4.0 toolchain.
This also removes the lines to upgrade libicu-dev and sqlite3. These
are sufficiently up-to-date in the Trusty image.
We require Xcode 9 for the Swift target, and the C++ and .NET tests
shouldn't care either way.
We no longer need to install cmake: this is already in the Travis
Xcode 9.0 image (and it barfs if we try to install it again).
We no longer need the rvm bug workarounds; a newer version of rvm is
in the Xcode 9.0 image so this is no longer a problem.
The openssl package is already installed and up-to-date now, so there is
no need to install that.
These changes mean that we don't need before-install-osx-cpp.sh
or before-install-os-swift.sh at all, and before-install-osx-dotnet.sh
gets a bit shorter. .travis.yml gets a small change to handle the
fact that some platform / target combos don't need before-install any more.
This gives a "smoke-test" phase which just runs the Java tests, to get a
quick check that compilation is working. It is followed by the
"main-test" phase that tests each target on their preferred platform
(e.g. Swift on macOS, Python on Linux) followed by "test-extended"
which runs all the remaining tests (all the other Java variants, and
any other platforms supported by each target).
This means that those tests in the later phases won't run unless the
earlier phases have passed. This should vastly improve our Travis
turnaround.
This changeset also changes the matrix so that we get some coverage across
all of openjdk7,8 and oraclejdk7,8 and moves the Go and Javascript tests
to Trusty just so that they are more up-to-date. This adds one additional
Java test run, so now we compare oraclejdk8 and openjdk8 in case of
problems in that regard.
Note that the test matrix has not been extended to cover oraclejdk9. This
currently fails for us with a build issue, so it is not included in this
changeset.
This changeset also removes the meaningless custom apt configuration in the
section for macOS .NET tests.
This means that it will write a line to the log each minute while the
tests are running, up to the specified timeout. This works around the
fact that one of Maven / Surefire / JUnit are buffering our test output
until a whole test class has run.
This is a problem in particular with the TestLeftRecursion tests because
they are taking over 9 minutes on their own. After 10 minutes of silence
Travis assumes that a job is broken and kills it. We've been hitting
that timeout regularly.
This is recommended by the Travis docs to speed up the parts of the
tests where unpack / install has a significant cost, as opposed to the
download.
This changeset adds entries for ~/.m2 (for Maven) and
~/Library/Caches/Homebrew for (brew on macOS).