#! /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)