annotate test/run-test-plugin-regression.sh @ 440:f6909c9cedc3

Test script using vamp-test-plugin
author Chris Cannam
date Wed, 17 Aug 2016 14:01:39 +0100
parents
children 88261e7c1db8
rev   line source
Chris@440 1 #!/bin/bash
Chris@440 2
Chris@440 3 set -eu
Chris@440 4
Chris@440 5 MYDIR=$(dirname "$0")
Chris@440 6
Chris@440 7 TEST_PLUGIN_DIR="$MYDIR/../../vamp-test-plugin"
Chris@440 8 HOST_DIR="$MYDIR/../host"
Chris@440 9 HOST="$HOST_DIR/vamp-simple-host"
Chris@440 10 TEST_FILE="$MYDIR/20sec-silence.wav"
Chris@440 11
Chris@440 12 mkdir -p "$MYDIR/obtained"
Chris@440 13 mkdir -p "$MYDIR/failures"
Chris@440 14
Chris@440 15 echo "Rebuilding SDK and simple host..." 1>&2
Chris@440 16 ( cd "$MYDIR/.." && ./configure && make clean && make )
Chris@440 17
Chris@440 18 if [ ! -d "$TEST_PLUGIN_DIR" ]; then
Chris@440 19 echo "Can't find test plugin dir at $TEST_PLUGIN_DIR" 1>&2
Chris@440 20 exit 1
Chris@440 21 fi
Chris@440 22
Chris@440 23 if [ ! -x "$HOST" ]; then
Chris@440 24 echo "Can't find host at $HOST" 1>&2
Chris@440 25 exit 1
Chris@440 26 fi
Chris@440 27
Chris@440 28 echo "Rebuilding test plugin..." 1>&2
Chris@440 29 ( cd "$TEST_PLUGIN_DIR" && make -f Makefile.linux clean && make -f Makefile.linux )
Chris@440 30
Chris@440 31 export VAMP_PATH="$TEST_PLUGIN_DIR"
Chris@440 32
Chris@440 33 # check that the two expected test plugin ids are present:
Chris@440 34
Chris@440 35 ids=$("$HOST" --list-ids)
Chris@440 36
Chris@440 37 expected="vamp:vamp-test-plugin:vamp-test-plugin
Chris@440 38 vamp:vamp-test-plugin:vamp-test-plugin-freq"
Chris@440 39
Chris@440 40 if [ "$ids" != "$expected" ]; then
Chris@440 41 echo "Unexpected id list: $ids" 1>&2
Chris@440 42 echo "Expected: $expected" 1>&2
Chris@440 43 exit 1
Chris@440 44 fi
Chris@440 45
Chris@440 46 some_failed=nope
Chris@440 47 echo
Chris@440 48
Chris@440 49 for test in $("$HOST" --list-outputs | sed 's/^vamp://') ; do
Chris@440 50
Chris@440 51 filename="$(echo "$test.txt" | sed 's/^[^:]*://' | sed 's/:/_/g')"
Chris@440 52 expected="$MYDIR/expected/$filename"
Chris@440 53 obtained="$MYDIR/obtained/$filename"
Chris@440 54 failure="$MYDIR/failures/$filename"
Chris@440 55
Chris@440 56 rm -f "$failure"
Chris@440 57 echo "=== $test" > "$obtained"
Chris@440 58 "$HOST" "$test" "$TEST_FILE" >> "$obtained" 2>/dev/null
Chris@440 59
Chris@440 60 if cmp -s "$expected" "$obtained" ; then
Chris@440 61 echo "$test: ok"
Chris@440 62 else
Chris@440 63 sdiff "$expected" "$obtained" > "$failure" || true # avoid exit-on-failure
Chris@440 64 echo "*** $test: FAILED, see $failure for diff"
Chris@440 65 some_failed=yup
Chris@440 66 fi
Chris@440 67
Chris@440 68 done
Chris@440 69
Chris@440 70 if [ "$some_failed" != "nope" ]; then
Chris@440 71 echo; echo "*** Some tests failed!"; echo
Chris@440 72 fi
Chris@440 73