summaryrefslogtreecommitdiff
path: root/test-compatibility.sh
diff options
context:
space:
mode:
authorJaikiran Pai <jaikiran@apache.org>2019-08-26 11:29:20 +0530
committerJaikiran Pai <jaikiran@apache.org>2019-08-26 11:30:30 +0530
commit1f3323dd40b896cf1c332b55504be4fe6e43e29b (patch)
tree1674b17937cfbb4de7137cfb5e8f6954487715dd /test-compatibility.sh
parent3a1ff0d804eca83d3ecdab35a47deac5f3cf9f9d (diff)
downloadant-1f3323dd40b896cf1c332b55504be4fe6e43e29b.tar.gz
Introduce a script which can be used in a CI job to make it easier to test Java version compatibility of Ant
Diffstat (limited to 'test-compatibility.sh')
-rwxr-xr-xtest-compatibility.sh64
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
+