annotate tests/test-audioformat.sh @ 21:9a4e410bda7a

* Add --force option, and throw/catch exceptions for failure cases rather than exiting directly
author Chris Cannam
date Tue, 07 Jul 2009 10:34:27 +0000
parents 03a02c1f0a9f
children 102bb1729184
rev   line source
Chris@0 1 #!/bin/bash
Chris@0 2
Chris@0 3 mypath=`dirname $0`
Chris@3 4 r=$mypath/../runner/sonic-annotator
Chris@0 5
Chris@0 6 inbase=$mypath/audio/3clicks
Chris@0 7 testplug=vamp:vamp-example-plugins:percussiononsets
Chris@0 8 tmpfile1=$mypath/tmp_1_$$
Chris@0 9 tmpfile2=$mypath/tmp_2_$$
Chris@0 10
Chris@0 11 trap "rm -f $tmpfile1 $tmpfile2" 0
Chris@0 12
Chris@0 13 fail() {
Chris@0 14 echo "Test failed: $1"
Chris@0 15 exit 1
Chris@0 16 }
Chris@0 17
Chris@0 18 for extension in wav ogg mp3 ; do
Chris@0 19
Chris@0 20 transform=$mypath/transforms/transforms-audioformat-percussiononsets.n3
Chris@0 21 expected=$mypath/expected/transforms-audioformat-percussiononsets-$extension.csv
Chris@0 22
Chris@0 23 test -f $transform || \
Chris@0 24 fail "Internal error: no transforms file for suffix $suffix"
Chris@0 25
Chris@0 26 test -f $expected || \
Chris@0 27 fail "Internal error: no expected output file for suffix $suffix"
Chris@0 28
Chris@0 29 infile=$inbase.$extension
Chris@0 30 if [ "$extension" = "wav" ]; then infile=${inbase}8.$extension; fi
Chris@0 31
Chris@0 32 test -f $infile || \
Chris@0 33 fail "Internal error: no input audio file for extension $extension"
Chris@0 34
Chris@0 35 $r -t $transform -w csv --csv-stdout $infile > $tmpfile2 2>/dev/null || \
Chris@0 36 fail "Fails to run transform $transform against audio file $infile"
Chris@0 37
Chris@0 38 if [ "$extension" = "wav" ]; then
Chris@0 39 cmp -s $tmpfile2 $expected || \
Chris@0 40 fail "Output mismatch for transform $transform with audio file $infile"
Chris@0 41 else
Chris@0 42 cmp -s $tmpfile2 $expected || \
Chris@0 43 ( echo "NOTE: Output mismatch for transform $transform with audio file $infile" ; \
Chris@0 44 echo "This may be the result of differences in the audio file decoder, so I am not" ; \
Chris@0 45 echo "failing the test, but I recommend that you check the results." )
Chris@0 46 fi
Chris@0 47 done
Chris@0 48
Chris@0 49 exit 0