annotate process.sh @ 5:57da88814766

Run tester, report
author Chris Cannam
date Sat, 26 Jul 2014 10:50:24 +0100
parents 780c4fc19f3e
children
rev   line source
Chris@1 1 #!/bin/bash
Chris@1 2
Chris@1 3 ## Things to test:
Chris@1 4 ## the plugin builds!
Chris@1 5 ## plugin loads
Chris@1 6 ## passes vamp-plugin-tester tests
Chris@1 7 ## does not export any unnecessary symbols
Chris@1 8 ## has valid .cat and .n3
Chris@1 9
Chris@1 10 platform=linux
Chris@2 11 bits=64
Chris@1 12
Chris@4 13 configure() {
Chris@4 14 dir="$1"
Chris@4 15 if [ -f "$dir/configure" ] ; then
Chris@4 16 ( cd "$dir" ; ./configure )
Chris@4 17 fi
Chris@4 18 }
Chris@4 19
Chris@1 20 configure_maybe() {
Chris@1 21 dir="$1"
Chris@1 22 if [ ! -f "$dir/Makefile" ] ; then
Chris@4 23 configure "$dir"
Chris@1 24 fi
Chris@1 25 }
Chris@1 26
Chris@1 27 find_makefile() {
Chris@1 28 dir="$1"
Chris@2 29 for f in Makefile Makefile.$platform Makefile.$platform$bits build/$platform/Makefile build/$platform/Makefile.$platform build/$platform/Makefile.$platform$bits; do
Chris@1 30 if [ -f "$dir/$f" ]; then
Chris@1 31 echo $f
Chris@1 32 break
Chris@1 33 fi
Chris@1 34 done
Chris@1 35 }
Chris@1 36
Chris@4 37 build() {
Chris@4 38 dir="$1"
Chris@1 39 if configure_maybe "$dir"; then
Chris@1 40 mfile=$(find_makefile "$dir")
Chris@1 41 if [ -n "$mfile" ]; then
Chris@1 42 make -C "$dir" -f "$mfile"
Chris@1 43 else
Chris@1 44 echo "Failed to find a Makefile in $dir"
Chris@4 45 return 1
Chris@1 46 fi
Chris@1 47 fi
Chris@4 48 }
Chris@4 49
Chris@4 50 rebuild() {
Chris@4 51 dir="$1"
Chris@4 52 if configure "$dir"; then
Chris@4 53 mfile=$(find_makefile "$dir")
Chris@4 54 if [ -n "$mfile" ]; then
Chris@4 55 make -C "$dir" -f "$mfile" clean
Chris@4 56 make -C "$dir" -f "$mfile"
Chris@4 57 else
Chris@4 58 echo "Failed to find a Makefile in $dir"
Chris@4 59 return 1
Chris@4 60 fi
Chris@4 61 fi
Chris@4 62 }
Chris@4 63
Chris@5 64 run_tester() {
Chris@5 65 ##!!! todo: list the plugins in each library and run the tester
Chris@5 66 ##!!! separately on each -- that way we can report on specific
Chris@5 67 ##!!! plugins rather than whole libraries (though for the
Chris@5 68 ##!!! "printout" report we should include the whole library test,
Chris@5 69 ##!!! just for information's sake?) and we can have separate
Chris@5 70 ##!!! nondeterministic statuses
Chris@5 71 dir="$1"
Chris@5 72 extra=""
Chris@5 73 if grep -q "^$dir\$" nondeterministic.txt; then
Chris@5 74 extra="-n"
Chris@5 75 fi
Chris@5 76 if VAMP_PATH="$dir" vamp-plugin-tester/vamp-plugin-tester "$extra" -a ; then
Chris@5 77 echo "OK"
Chris@5 78 else
Chris@5 79 echo
Chris@5 80 echo "Tester failed: running again with valgrind and verbose for a report..."
Chris@5 81 VAMP_PATH="$dir" valgrind vamp-plugin-tester/vamp-plugin-tester -v "$extra" -a
Chris@5 82 fi
Chris@5 83 }
Chris@5 84
Chris@4 85 successes="/tmp/successes.$$.txt"
Chris@5 86 partials="/tmp/successes.$$.txt"
Chris@4 87 failures="/tmp/failures.$$.txt"
Chris@5 88 trap 'rm -f "$successes" "$partials" "$failures"' 0
Chris@4 89
Chris@5 90 if ! build "vamp-plugin-sdk"; then
Chris@5 91 echo "Failed to build Vamp plugin SDK!"
Chris@5 92 exit 1
Chris@5 93 fi
Chris@5 94
Chris@5 95 if ! build "vamp-plugin-tester"; then
Chris@5 96 echo "Failed to build Vamp plugin tester!"
Chris@5 97 exit 1
Chris@5 98 fi
Chris@5 99
Chris@5 100 for dir in $(cat .hgsub | grep -v vamp-plugin-sdk | grep -v vamp-plugin-tester | awk '{ print $1; }') ; do
Chris@4 101 echo
Chris@4 102 echo "Processing: $dir"
Chris@4 103 if build "$dir"; then
Chris@5 104 if run_tester "$dir"; then
Chris@5 105 echo "$dir" >> "$successes"
Chris@5 106 else
Chris@5 107 echo "$dir" >> "$partials"
Chris@5 108 fi
Chris@4 109 else
Chris@4 110 echo "$dir" >> "$failures"
Chris@4 111 fi
Chris@1 112 done
Chris@1 113
Chris@4 114 echo
Chris@5 115 echo "** Successfully built and tested:"
Chris@4 116 cat "$successes"
Chris@4 117
Chris@4 118 echo
Chris@5 119 echo "** Built, but failed tests:"
Chris@5 120 cat "$partials"
Chris@5 121
Chris@5 122 echo
Chris@4 123 echo "** Failed to build:"
Chris@4 124 cat "$failures"
Chris@4 125
Chris@4 126 echo