#! /bin/bash
# Copyright (C) 2013, 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
# Run Eclipse Test Bundles
# The definiton of an Eclipse Test Bundle for our purposes is any packaged
# OSGi bundle containing a pom.xml with a packaging type of
# 'eclipse-test-plugin'
# Takes a single argument (absolute path of folder containing test bundles)
if [ ! $# -eq 1 ]; then
echo "USAGE : $0 PATH/TO/BUNDLES/DIRECTORY"
exit 1
fi
testBundleFolder=$1
echo 'Eclipse-BundleShape: dir' > MANIFEST.MF
for jar in `find ${testBundleFolder} -name "*.jar"`; do
jarPomPath=`jar -tf ${jar} | grep 'pom.xml'`
unzip -p ${jar} ${jarPomPath} | grep -q 'eclipse-test-plugin'
if [ $? -eq 0 ]; then
jarPomPath=`jar -tf ${jar} | grep 'pom.xml'`
bsname=`unzip -p ${jar} META-INF/MANIFEST.MF | grep 'Bundle-SymbolicName' | sed 's/Bundle-SymbolicName: \([a-zA-Z.]*\)\(;\)\?.*/\1/'`
# Detect SWTBot Tests
useSWTBot='false'
unzip -p ${jar} META-INF/MANIFEST.MF | grep -q 'swtbot'
if [ $? -eq 0 ]; then
useSWTBot='true'
fi
# Find Test class(es)
testclass=`unzip -p ${jar} ${jarPomPath} | grep '' | sed 's/.*\(.*\)<\/testClass>.*/\1/'`
if [ "${testclass}" = '' ]; then
testclass=`jar -tf ${jar} | grep '/AllTests.class' | tr '/' '.' | sed 's/\.class//'`
fi
if [ "${testclass}" = '' ]; then
testclasses=`jar -tf ${jar} | grep -E '/[^/]*Test.*\.class' | grep -vE '/[^/]*Abstract.*\.class' | grep -v '\\$' | tr '/' '.' | sed 's/\.class//'`
else
testclasses="${testclass}"
fi
for testclass in ${testclasses} ; do
sed -i "// a \\
\\
\\
\\
\\
\\
" \
target/test.xml
done
fi
# Make 'Eclipse-BundleShape: dir'
jarName=`basename ${jar}`
symJarName=`ls target-sdk/plugins/ | grep ${jarName}`
rm target-sdk/plugins/${symJarName}
cp ${jar} target-sdk/plugins/
jar -umf ./MANIFEST.MF target-sdk/plugins/${jarName}
done
rm ./MANIFEST.MF
pushd target
../genRepo.sh $(pwd)