annotate tests/test-multiple-audio/test-multiple-audio.sh @ 152:db83ea0e102d jams

Make the JSON well-formed (though still empty), except in the case where we are asked to write more than one file's features to the same output file or stdout
author Chris Cannam
date Tue, 14 Oct 2014 12:35:19 +0100
parents 685e5cf3cb1d
children dc82579c9a26
rev   line source
Chris@103 1 #!/bin/bash
Chris@103 2
Chris@119 3 . ../include.sh
Chris@103 4
Chris@103 5 tmpfile=$mypath/tmp_1_$$
Chris@103 6
Chris@103 7 trap "rm -f $tmpfile" 0
Chris@103 8
Chris@119 9 transform=$mypath/transforms/detectionfunction.n3
Chris@103 10
Chris@117 11 urlbase=http://vamp-plugins.org/sonic-annotator/testfiles
Chris@117 12
Chris@117 13
Chris@117 14 # 1. Recursive local directory
Chris@117 15
Chris@103 16 # Note, the output here depends on all the audio files present -- we
Chris@111 17 # would have to regenerate it if we added more test audio files. Note
Chris@111 18 # that the -r flag is not supposed to pick up playlist files, only
Chris@111 19 # audio files
Chris@119 20 $r -t $transform -w csv --csv-stdout -r --summary-only $audiopath > $tmpfile 2>/dev/null || \
Chris@103 21 fail "Fails to run transform $transform with recursive dir option"
Chris@103 22
Chris@119 23 expected=$mypath/expected/all-files
Chris@103 24 csvcompare $tmpfile $expected.csv || \
Chris@111 25 faildiff "Output mismatch for transform $transform with summaries and recursive dir option" $tmpfile $expected.csv
Chris@103 26
Chris@117 27
Chris@117 28 # 2. Local playlist file referring to local audio files
Chris@117 29
Chris@117 30 # Here we strip any leading path from the audio file in the output,
Chris@103 31 # because the playlist reader will have resolved files to absolute
Chris@103 32 # paths and those will differ between systems
Chris@119 33 $r -t $transform -w csv --csv-stdout $audiopath/playlist.m3u --summary-only 2>/dev/null | sed 's,^"[^"]*/,",' > $tmpfile || \
Chris@103 34 fail "Fails to run transform $transform with playlist input"
Chris@103 35
Chris@119 36 expected=$mypath/expected/playlist
Chris@103 37 csvcompare $tmpfile $expected.csv || \
Chris@111 38 faildiff "Output mismatch for transform $transform with summaries and playlist input" $tmpfile $expected.csv
Chris@103 39
Chris@117 40
Chris@117 41 # 3. Multiple files supplied directly on command line
Chris@117 42
Chris@117 43 # Strip paths again, just so we can use the same output comparison
Chris@117 44 # file as above
Chris@119 45 $r -t $transform -w csv --csv-stdout $audiopath/3clicks.mp3 $audiopath/6clicks.ogg --summary-only 2>/dev/null | sed 's,^"[^"]*/,",' > $tmpfile || \
Chris@104 46 fail "Fails to run transform $transform with 2-file input"
Chris@103 47
Chris@119 48 expected=$mypath/expected/playlist
Chris@104 49 csvcompare $tmpfile $expected.csv || \
Chris@111 50 faildiff "Output mismatch for transform $transform with summaries and 2-file input" $tmpfile $expected.csv
Chris@103 51
Chris@104 52
Chris@125 53 # 4. Multiple files supplied directly on command line, with file: URL
Chris@125 54
Chris@125 55 $r -t $transform -w csv --csv-stdout $audiopath/3clicks.mp3 file://`pwd`/$audiopath/6clicks.ogg --summary-only 2>/dev/null | sed 's,^"[^"]*/,",' > $tmpfile || \
Chris@125 56 fail "Fails to run transform $transform with 2-file input"
Chris@125 57
Chris@125 58 expected=$mypath/expected/playlist
Chris@125 59 csvcompare $tmpfile $expected.csv || \
Chris@125 60 faildiff "Output mismatch for transform $transform with summaries and 2-file input using file:// URL" $tmpfile $expected.csv
Chris@125 61
Chris@125 62
Chris@125 63 # 5. Remote playlist file referring to remote audio files
Chris@104 64
Chris@117 65 $r -t $transform -w csv --csv-stdout $urlbase/playlist.m3u --summary-only 2>/dev/null | sed 's,^"[^"]*/,",' > $tmpfile || \
Chris@117 66 fail "Fails to run transform $transform with remote playlist input"
Chris@117 67
Chris@119 68 expected=$mypath/expected/playlist
Chris@117 69 csvcompare $tmpfile $expected.csv || \
Chris@117 70 faildiff "Output mismatch for transform $transform with summaries and remote playlist input" $tmpfile $expected.csv
Chris@117 71
Chris@117 72
Chris@125 73 # 6. Local playlist file referring to mixture of remote and local audio files
Chris@117 74
Chris@119 75 $r -t $transform -w csv --csv-stdout $audiopath/remote-playlist.m3u --summary-only 2>/dev/null | sed 's,^"[^"]*/,",' > $tmpfile || \
Chris@117 76 fail "Fails to run transform $transform with playlist of remote files"
Chris@117 77
Chris@119 78 expected=$mypath/expected/playlist
Chris@117 79 csvcompare $tmpfile $expected.csv || \
Chris@117 80 faildiff "Output mismatch for transform $transform with summaries and remote playlist input" $tmpfile $expected.csv
Chris@117 81
Chris@117 82
Chris@125 83 # 7. Multiple remote files supplied directly on command line
Chris@117 84
Chris@117 85 $r -t $transform -w csv --csv-stdout $urlbase/3clicks.mp3 $urlbase/6clicks.ogg --summary-only 2>/dev/null | sed 's,^"[^"]*/,",' > $tmpfile || \
Chris@117 86 fail "Fails to run transform $transform with 2-file remote input"
Chris@117 87
Chris@119 88 expected=$mypath/expected/playlist
Chris@117 89 csvcompare $tmpfile $expected.csv || \
Chris@117 90 faildiff "Output mismatch for transform $transform with summaries and 2-file input" $tmpfile $expected.csv
Chris@117 91
Chris@117 92
Chris@125 93 # 8. Mixture of remote and local files supplied on command line
Chris@117 94
Chris@119 95 $r -t $transform -w csv --csv-stdout $audiopath/3clicks.mp3 $urlbase/6clicks.ogg --summary-only 2>/dev/null | sed 's,^"[^"]*/,",' > $tmpfile || \
Chris@117 96 fail "Fails to run transform $transform with 2-file remote input"
Chris@117 97
Chris@119 98 expected=$mypath/expected/playlist
Chris@117 99 csvcompare $tmpfile $expected.csv || \
Chris@117 100 faildiff "Output mismatch for transform $transform with summaries and mixed local/remote 2-file input" $tmpfile $expected.csv
Chris@117 101