Mercurial > hg > vamp-build-and-test
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