diff options
-rwxr-xr-x | test-compatibility.sh | 64 |
1 files changed, 64 insertions, 0 deletions
diff --git a/test-compatibility.sh b/test-compatibility.sh new file mode 100755 index 000000000..3069e46bf --- /dev/null +++ b/test-compatibility.sh @@ -0,0 +1,64 @@ +#!/bin/sh + +# Licensed to the Apache Software Foundation (ASF) under one or more +# contributor license agreements. See the NOTICE file distributed with +# this work for additional information regarding copyright ownership. +# The ASF licenses this file to You under the Apache License, Version 2.0 +# (the "License"); you may not use this file except in compliance with +# the License. You may obtain a copy of the License at +# +# https://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +# Compiles and builds Ant with various different recent versions of Java and +# then runs (only the) tests with the minimal supported version of Java runtime +# (which as of Aug 2019, is Java 8). +# This ensures/verifies that various Ant functionality works as expected +# when Ant is built with a higher version of Java and is run against the minimal +# supported version. +# This script is ideal for using in a CI environment where it can be invoked +# through a job which is configured to use various different JDK versions. + +# Fail the script on error +set -e + +# Build (compile and generate the dist) the project using the Java version +# that's already set in the environment +echo "Using ${JAVA_HOME} to build Ant" +java -version + +# Fetch all the necessary thirdparty libs, before boostraping Ant +ant -f fetch.xml -Ddest=optional + +# Now bootstrap Ant with all necessary thirdparty libs already fetched +./build.sh allclean dist + +# Switch the JDK to Java 8 to run *only* the tests. +# This will ensure that Ant built with different (higher) version of Ant +# can be used by Java 8 runtime and can function properly for all Ant +# functionality +mkdir java-8-latest +cd java-8-latest +# Download latest Java 8 (we use Adopt OpenJDK binaries) +wget https://github.com/AdoptOpenJDK/openjdk8-binaries/releases/download/jdk8u222-b10/OpenJDK8U-jdk_x64_linux_hotspot_8u222b10.tar.gz +tar -zxf ./*.tar.gz +# set JAVA_HOME to point to the newly extracted tar's content +export JAVA_HOME=`echo \`pwd\`/\`echo */\`` +export PATH=$JAVA_HOME/bin:$PATH +cd .. + +echo "Using ${JAVA_HOME} to run Ant tests" +java -version + +# Set ANT_HOME to the boostraped version - the one which was built, using a different Java version, a few steps +# earlier in this script +export ANT_HOME=`pwd`/bootstrap +# Run the tests. We intentionally skip the build (compilation etc) to avoid compiling the project +# with the newly set Java version. +ant -nouserlib -lib lib/optional test -Dskip.build=true -Dignore.tests.failed=true -Doptional.jars.whenmanifestonly=skip -Djenkins=t + |