changeset 9:2fa8c82e835e

Fixes to testing & reporting
author Chris Cannam
date Thu, 31 Jul 2014 16:24:11 +0100
parents 9b898377f016
children eb46b43a7c85
files SCRIPTS/process.sh
diffstat 1 files changed, 41 insertions(+), 6 deletions(-) [+]
line wrap: on
line diff
--- a/SCRIPTS/process.sh	Mon Jul 28 14:44:32 2014 +0100
+++ b/SCRIPTS/process.sh	Thu Jul 31 16:24:11 2014 +0100
@@ -15,6 +15,12 @@
 reportdir="REPORTS/$platform$bits"
 mkdir -p "$reportdir" || exit 1
 
+built="/tmp/built.$$.txt"
+testfailed="/tmp/testfailed.$$.txt"
+notbuilt="/tmp/notbuilt.$$.txt"
+trap 'rm -f "$built" "$testfailed" "$notbuilt"' 0
+touch "$built" "$testfailed" "$notbuilt"
+
 configure() {
     dir="$1"
     if [ -f "$dir/configure" ] ; then
@@ -31,7 +37,14 @@
 
 find_makefile() {
     dir="$1"
-    for f in Makefile Makefile.$platform Makefile.$platform$bits build/$platform/Makefile build/$platform/Makefile.$platform build/$platform/Makefile.$platform$bits; do
+
+    for f in \
+	Makefile \
+	Makefile.$platform \
+	Makefile.$platform$bits \
+	build/$platform/Makefile \
+	build/$platform/Makefile.$platform \
+	build/$platform/Makefile.$platform$bits; do
 	if [ -f "$dir/$f" ]; then
 	    echo $f
 	    break
@@ -45,6 +58,7 @@
 	mfile=$(find_makefile "$dir")
 	if [ -n "$mfile" ]; then
 	    make -C "$dir" -f "$mfile" 2>&1 | tee "$reportdir/$dir.build.txt"
+	    return ${PIPESTATUS[0]}
 	else
 	    echo "Failed to find a Makefile in $dir"
 	    return 1
@@ -59,6 +73,7 @@
 	if [ -n "$mfile" ]; then
 	    make -C "$dir" -f "$mfile" clean
 	    make -C "$dir" -f "$mfile" 2>&1 | tee "$reportdir/$dir.build.txt"
+	    return ${PIPESTATUS[0]}
 	else
 	    echo "Failed to find a Makefile in $dir"
 	    return 1
@@ -80,22 +95,41 @@
 	    if grep -q "^$id\$" nondeterministic.txt; then
 		extra="-n"
 	    fi
-	    if VAMP_PATH="$dir" vamp-plugin-tester/vamp-plugin-tester "$extra" "$id" 2>&1 | tee "$reportdir/$dir.test.txt" ; then
+	    if ( VAMP_PATH="$dir" vamp-plugin-tester/vamp-plugin-tester "$extra" "$id" 2>&1 | tee "$reportdir/$dir.test.txt" ; exit ${PIPESTATUS[0]} ) ; then
 		echo "OK"
 	    else
 		echo
 		echo "Tester failed for id $id: running again with valgrind and verbose for a report..."
 		echo "$dir" >> "$testfailed"
 		VAMP_PATH="$dir" valgrind vamp-plugin-tester/vamp-plugin-tester -v "$extra" "$id" 2>&1 | tee -a "$reportdir/$dir.test.txt"
+		return 1
 	    fi
 	done
     fi
 }
 
-built="/tmp/built.$$.txt"
-testfailed="/tmp/testfailed.$$.txt"
-notbuilt="/tmp/notbuilt.$$.txt"
-trap 'rm -f "$built" "$testfailed" "$notbuilt"' 0
+public_symbols() {
+    lib="$1"
+    nm -g --defined-only "$lib" | awk '{ print $3; }'
+}
+
+run_environmental_tests() {
+    dir="$1"
+    for lib in $dir/*.so; do 
+	if public_symbols "$lib" | grep -q vampGetPluginDescriptor; then
+	    others=`public_symbols "$lib" | grep -v vampGetPluginDescriptor`
+	    if [ -n "$others" ]; then
+		count=`echo "$others" | wc -l`
+		echo "WARNING: $count extra symbols exported by plugin library"
+		#!!! what to do about it?
+	    else
+		echo "GOOD: library $lib only exports vampGetPluginDescriptor"
+	    fi
+	else
+	    echo "NOTE: found library $lib that is not a Vamp plugin library"
+	fi
+    done
+}
 
 if ! build "vamp-plugin-sdk"; then 
     echo "Failed to build Vamp plugin SDK!"
@@ -113,6 +147,7 @@
     if rebuild "$dir"; then
 	echo "$dir" >> "$built"
 	run_tester "$dir"
+	run_environmental_tests "$dir"
     else
 	echo "$dir" >> "$notbuilt"
     fi