annotate tests/test-multiple-audio/test-multiple-audio.sh @ 219:d0fe861bb116

Fix grisly error in multiplexed audio reader (calling itself!)
author Chris Cannam
date Fri, 20 Nov 2015 09:32:11 +0000
parents dc82579c9a26
children 9a10c3ffff47
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
Chris@218 102
Chris@218 103 # 9. As 3, but multiplexing rather than extracting separately from each file
Chris@218 104
Chris@218 105 $r -t $transform --multiplex -w csv --csv-stdout $audiopath/3clicks.mp3 $audiopath/6clicks.ogg --summary-only 2>/dev/null | sed 's,^"[^"]*/,",' > $tmpfile || \
Chris@218 106 fail "Fails to run transform $transform with 2-file input"
Chris@218 107
Chris@218 108 expected=$mypath/expected/multiplexed
Chris@218 109 csvcompare $tmpfile $expected.csv || \
Chris@218 110 faildiff "Output mismatch for transform $transform with summaries and 2-file multiplexed input" $tmpfile $expected.csv
Chris@218 111