Chris@45: #!/bin/bash Chris@45: Chris@45: set -eu Chris@45: Chris@45: mydir=$(dirname "$0") Chris@45: Chris@45: source_url=https://code.soundsoftware.ac.uk/attachments/download/1698/Zweieck-Duell.ogg Chris@45: Chris@45: testfile="$mydir/input.ogg" Chris@45: Chris@45: if sonic-annotator -v >/dev/null ; then Chris@45: : Chris@45: else Chris@45: echo "Failed to find required binary sonic-annotator" Chris@45: exit 1 Chris@45: fi Chris@45: Chris@45: if oggdec -h >/dev/null ; then Chris@45: : Chris@45: else Chris@45: echo "Failed to find required binary oggdec" Chris@45: exit 1 Chris@45: fi Chris@45: Chris@45: if rubberband -h 2>&1 | grep Particular >/dev/null ; then Chris@45: : Chris@45: else Chris@45: echo "Failed to find required binary rubberband" Chris@45: exit 1 Chris@45: fi Chris@45: Chris@45: if wget --version >/dev/null ; then Chris@45: wget -O "$testfile" "$source_url" Chris@45: else Chris@45: curl -o "$testfile" "$source_url" Chris@45: fi Chris@45: Chris@45: wavfile=${testfile%%.ogg}.wav Chris@45: lowfile=${testfile%%.ogg}-low.wav Chris@45: Chris@45: oggdec -o "$wavfile" "$testfile" Chris@45: Chris@45: rubberband -p -2.34 "$wavfile" "$lowfile" Chris@45: Chris@50: mkdir -p "$mydir/output" Chris@50: Chris@45: VAMP_PATH="$mydir/.." \ Chris@46: time \ Chris@45: sonic-annotator \ Chris@48: -t "$mydir/tests.ttl" \ Chris@45: -w csv \ Chris@46: --csv-basedir "$mydir/output" \ Chris@45: --csv-force \ Chris@48: --csv-omit-filename \ Chris@45: --multiplex \ Chris@45: "$testfile" \ Chris@45: "$lowfile" Chris@45: Chris@46: failed="" Chris@46: Chris@46: for expected in "$mydir"/expected/*.csv ; do Chris@46: outfile="$mydir"/output/$(basename $expected) Chris@46: if cmp "$outfile" "$expected" ; then Chris@46: echo "PASS: $outfile" Chris@46: else Chris@46: echo Chris@46: echo "*** FAIL: Result does not match expected output. Diff follows:" Chris@46: echo Chris@46: sdiff -w 60 "$outfile" "$expected" Chris@46: echo Chris@46: failed="$failed $outfile" Chris@46: fi Chris@46: done Chris@46: Chris@46: if [ -n "$failed" ]; then Chris@46: echo "Some tests failed: $failed" Chris@46: exit 1 Chris@46: else Chris@46: echo "All tests passed" Chris@45: exit 0 Chris@45: fi Chris@45: Chris@45: