| #! /bin/bash |
| |
| # Copyright (C) 2013-2017, Red Hat, Inc. |
| # All rights reserved. This program and the accompanying materials |
| # are made available under the terms of the Eclipse Public License v1.0 |
| # which accompanies this distribution, and is available at |
| # http://www.eclipse.org/legal/epl-v10.html |
| |
| # The first argument of this script is the location of the tests to run |
| # If no argument is given, the platform tests are run |
| tests=$1 |
| |
| # Location of test machinery |
| eclipse_testing_dir=$(cd $(dirname $(readlink -f $(which eclipse)))/../../share/eclipse-testing && pwd) |
| # Location of platform tests |
| platform_tests=$(cd $(dirname $(readlink -f $(which eclipse)))/../../share/java/eclipse-tests && pwd) |
| |
| # If tests are not specified, then find the platform tests |
| if [ -z "$tests" ] ; then |
| if [ ! -d "$platform_tests" ] ; then |
| echo "No tests specified and platform tests are not installed." |
| exit 2 |
| else |
| tests=$(cd $platform_tests && pwd) |
| fi |
| else |
| if [ ! -d "$tests" ] ; then |
| echo "Specified tests are not installed." |
| exit 2 |
| fi |
| fi |
| |
| # Tests might exist in a sub-directory |
| if [ -d "$tests/eclipse" ] ; then |
| tests="$tests/eclipse" |
| fi |
| |
| # Prepare test execution environment |
| mkdir target |
| cp -rp $eclipse_testing_dir/* target/ |
| . target/label.properties |
| executionDir=$(pwd)/target/workarea/$buildId/eclipse-testing |
| mkdir -p $executionDir |
| cp -p target/library.xml target/JUNIT.XSL target/splitter.xsl target/*.txt $executionDir |
| |
| # Create an SDK of all system OSGi bundles plus specified test bundles |
| $eclipse_testing_dir/testbundle/gatherBundles.sh "$(pwd)/target/sdk" "$tests" |
| |
| # Gather extra IUs to install when running tests that have extra requirements |
| # specified in the pom.xml |
| $eclipse_testing_dir/testbundle/gatherExtraIUs.sh "$tests" |
| |
| # If a test location was specified, prep for and use those tests |
| if [ -n "$1" ] ; then |
| $eclipse_testing_dir/testbundle/prepRuntimeLocation.sh || exit 1 |
| $eclipse_testing_dir/testbundle/prepAllTestBundles.sh "$tests" || exit 1 |
| fi |
| |
| # Build a p2 repository from the constructed SDK |
| java -jar $(dirname $(readlink -f $(which eclipse)))/plugins/org.eclipse.equinox.launcher_*.jar \ |
| -nosplash \ |
| -application org.eclipse.equinox.p2.publisher.FeaturesAndBundlesPublisher \ |
| -metadataRepository file:$executionDir/testRepo \ |
| -artifactRepository file:$executionDir/testRepo \ |
| -source $(pwd)/target/sdk \ |
| -compress -append -publishArtifacts |
| |
| # Get arch of running platform |
| if uname -m > /dev/null 2>&1; then |
| arch=$(uname -m) |
| else |
| arch=$(uname -p) |
| fi |
| |
| # Massage arch for Eclipse-uname differences |
| case $arch in |
| i[0-9]*86) |
| arch=x86 ;; |
| ppc64p7) |
| arch=ppc64 ;; |
| arm*) |
| arch=arm ;; |
| esac |
| |
| # Set some values expected by runtests.sh |
| export jvm=/usr/lib/jvm/java-1.8.0/jre/bin/java |
| export stableEclipseInstallLocation=$executionDir/platformLocation |
| |
| # Create platform tarball used during testing |
| mkdir -p $stableEclipseInstallLocation |
| pushd $(dirname $(readlink -f $(which eclipse)))/.. 2>&1 >/dev/null |
| tar caf $stableEclipseInstallLocation/eclipse-SDK-${buildId}-linux-gtk-x86_64.tar.gz eclipse |
| cp -p $stableEclipseInstallLocation/eclipse-SDK-${buildId}-linux-gtk-x86_64.tar.gz $executionDir |
| popd 2>&1 >/dev/null |
| |
| # Kick off tests |
| pushd target 2>&1 >/dev/null |
| ./runtests.sh -os linux -ws gtk -arch $arch |
| popd 2>&1 >/dev/null |