blob: ce24409952896d63b8bbb81ff594b954593c6dc1 [file] [log] [blame]
#! /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