Mercurial > hg > vamp-build-and-test
view process.sh @ 5:57da88814766
Run tester, report
author | Chris Cannam |
---|---|
date | Sat, 26 Jul 2014 10:50:24 +0100 |
parents | 780c4fc19f3e |
children |
line wrap: on
line source
#!/bin/bash ## Things to test: ## the plugin builds! ## plugin loads ## passes vamp-plugin-tester tests ## does not export any unnecessary symbols ## has valid .cat and .n3 platform=linux bits=64 configure() { dir="$1" if [ -f "$dir/configure" ] ; then ( cd "$dir" ; ./configure ) fi } configure_maybe() { dir="$1" if [ ! -f "$dir/Makefile" ] ; then configure "$dir" fi } 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 if [ -f "$dir/$f" ]; then echo $f break fi done } build() { dir="$1" if configure_maybe "$dir"; then mfile=$(find_makefile "$dir") if [ -n "$mfile" ]; then make -C "$dir" -f "$mfile" else echo "Failed to find a Makefile in $dir" return 1 fi fi } rebuild() { dir="$1" if configure "$dir"; then mfile=$(find_makefile "$dir") if [ -n "$mfile" ]; then make -C "$dir" -f "$mfile" clean make -C "$dir" -f "$mfile" else echo "Failed to find a Makefile in $dir" return 1 fi fi } run_tester() { ##!!! todo: list the plugins in each library and run the tester ##!!! separately on each -- that way we can report on specific ##!!! plugins rather than whole libraries (though for the ##!!! "printout" report we should include the whole library test, ##!!! just for information's sake?) and we can have separate ##!!! nondeterministic statuses dir="$1" extra="" if grep -q "^$dir\$" nondeterministic.txt; then extra="-n" fi if VAMP_PATH="$dir" vamp-plugin-tester/vamp-plugin-tester "$extra" -a ; then echo "OK" else echo echo "Tester failed: running again with valgrind and verbose for a report..." VAMP_PATH="$dir" valgrind vamp-plugin-tester/vamp-plugin-tester -v "$extra" -a fi } successes="/tmp/successes.$$.txt" partials="/tmp/successes.$$.txt" failures="/tmp/failures.$$.txt" trap 'rm -f "$successes" "$partials" "$failures"' 0 if ! build "vamp-plugin-sdk"; then echo "Failed to build Vamp plugin SDK!" exit 1 fi if ! build "vamp-plugin-tester"; then echo "Failed to build Vamp plugin tester!" exit 1 fi for dir in $(cat .hgsub | grep -v vamp-plugin-sdk | grep -v vamp-plugin-tester | awk '{ print $1; }') ; do echo echo "Processing: $dir" if build "$dir"; then if run_tester "$dir"; then echo "$dir" >> "$successes" else echo "$dir" >> "$partials" fi else echo "$dir" >> "$failures" fi done echo echo "** Successfully built and tested:" cat "$successes" echo echo "** Built, but failed tests:" cat "$partials" echo echo "** Failed to build:" cat "$failures" echo