diff tests/test-multiple-audio/test-multiple-audio.sh @ 233:9a10c3ffff47

Update summary code and tests -- fix multiple outputs when requesting both summary and non-summary for the same output; and values have been changed because of the coded file cache bit depth change. Also skip network-dependent tests if there is no network.
author Chris Cannam
date Thu, 25 Feb 2016 18:19:27 +0000
parents dc82579c9a26
children cee5cab9c85d
line wrap: on
line diff
--- a/tests/test-multiple-audio/test-multiple-audio.sh	Thu Feb 25 13:02:57 2016 +0000
+++ b/tests/test-multiple-audio/test-multiple-audio.sh	Thu Feb 25 18:19:27 2016 +0000
@@ -2,14 +2,21 @@
 
 . ../include.sh
 
-tmpfile=$mypath/tmp_1_$$
+tmpfile1=$mypath/tmp_1_$$
+tmpfile2=$mypath/tmp_2_$$
 
-trap "rm -f $tmpfile" 0
+trap "rm -f $tmpfile1 $tmpfile2" 0
 
 transform=$mypath/transforms/detectionfunction.n3 
 
 urlbase=http://vamp-plugins.org/sonic-annotator/testfiles
 
+have_network=yes
+if ! ping -c 1 8.8.8.8 2>/dev/null ; then
+    echo "(network appears unavailable, skipping networking tests)"
+    have_network=no
+fi
+
 
 # 1. Recursive local directory
 
@@ -17,11 +24,11 @@
 # would have to regenerate it if we added more test audio files. Note
 # that the -r flag is not supposed to pick up playlist files, only
 # audio files
-$r -t $transform -w csv --csv-stdout -r --summary-only $audiopath > $tmpfile 2>/dev/null || \
+$r -t $transform -w csv --csv-stdout -r --summary-only $audiopath > $tmpfile1 2>/dev/null || \
     fail "Fails to run transform $transform with recursive dir option"
 
 expected=$mypath/expected/all-files
-csvcompare $tmpfile $expected.csv || \
+csvcompare $tmpfile1 $expected.csv || \
     faildiff "Output mismatch for transform $transform with summaries and recursive dir option" $tmpfile $expected.csv
 
 
@@ -30,82 +37,101 @@
 # Here we strip any leading path from the audio file in the output,
 # because the playlist reader will have resolved files to absolute
 # paths and those will differ between systems
-$r -t $transform -w csv --csv-stdout $audiopath/playlist.m3u --summary-only 2>/dev/null | sed 's,^"[^"]*/,",' > $tmpfile || \
+$r -t $transform -w csv --csv-stdout $audiopath/playlist.m3u --summary-only 2>/dev/null > "$tmpfile2" || \
     fail "Fails to run transform $transform with playlist input"
 
+cat "$tmpfile2" | sed 's,^"[^"]*/,",' > "$tmpfile1"
+
 expected=$mypath/expected/playlist
-csvcompare $tmpfile $expected.csv || \
-    faildiff "Output mismatch for transform $transform with summaries and playlist input" $tmpfile $expected.csv
+csvcompare $tmpfile1 $expected.csv || \
+    faildiff "Output mismatch for transform $transform with summaries and playlist input" $tmpfile1 $expected.csv
 
 
 # 3. Multiple files supplied directly on command line
 
 # Strip paths again, just so we can use the same output comparison
 # file as above
-$r -t $transform -w csv --csv-stdout $audiopath/3clicks.mp3 $audiopath/6clicks.ogg --summary-only 2>/dev/null | sed 's,^"[^"]*/,",' > $tmpfile || \
+$r -t $transform -w csv --csv-stdout $audiopath/3clicks.mp3 $audiopath/6clicks.ogg --summary-only 2>/dev/null > $tmpfile2 || \
     fail "Fails to run transform $transform with 2-file input"
 
+cat "$tmpfile2" | sed 's,^"[^"]*/,",' > "$tmpfile1"
+
 expected=$mypath/expected/playlist
-csvcompare $tmpfile $expected.csv || \
-    faildiff "Output mismatch for transform $transform with summaries and 2-file input" $tmpfile $expected.csv
+csvcompare $tmpfile1 $expected.csv || \
+    faildiff "Output mismatch for transform $transform with summaries and 2-file input" $tmpfile1 $expected.csv
 
 
 # 4. Multiple files supplied directly on command line, with file: URL
 
-$r -t $transform -w csv --csv-stdout $audiopath/3clicks.mp3 file://`pwd`/$audiopath/6clicks.ogg --summary-only 2>/dev/null | sed 's,^"[^"]*/,",' > $tmpfile || \
+$r -t $transform -w csv --csv-stdout $audiopath/3clicks.mp3 file://`pwd`/$audiopath/6clicks.ogg --summary-only 2>/dev/null > $tmpfile2 || \
     fail "Fails to run transform $transform with 2-file input"
 
-expected=$mypath/expected/playlist
-csvcompare $tmpfile $expected.csv || \
-    faildiff "Output mismatch for transform $transform with summaries and 2-file input using file:// URL" $tmpfile $expected.csv
-
-
-# 5. Remote playlist file referring to remote audio files
-
-$r -t $transform -w csv --csv-stdout $urlbase/playlist.m3u --summary-only 2>/dev/null | sed 's,^"[^"]*/,",' > $tmpfile || \
-    fail "Fails to run transform $transform with remote playlist input"
+cat "$tmpfile2" | sed 's,^"[^"]*/,",' > "$tmpfile1"
 
 expected=$mypath/expected/playlist
-csvcompare $tmpfile $expected.csv || \
-    faildiff "Output mismatch for transform $transform with summaries and remote playlist input" $tmpfile $expected.csv
+csvcompare $tmpfile1 $expected.csv || \
+    faildiff "Output mismatch for transform $transform with summaries and 2-file input using file:// URL" $tmpfile1 $expected.csv
 
 
-# 6. Local playlist file referring to mixture of remote and local audio files
+if [ "$have_network" = "yes" ]; then
 
-$r -t $transform -w csv --csv-stdout $audiopath/remote-playlist.m3u --summary-only 2>/dev/null | sed 's,^"[^"]*/,",' > $tmpfile || \
-    fail "Fails to run transform $transform with playlist of remote files"
+    # 5. Remote playlist file referring to remote audio files
 
-expected=$mypath/expected/playlist
-csvcompare $tmpfile $expected.csv || \
-    faildiff "Output mismatch for transform $transform with summaries and remote playlist input" $tmpfile $expected.csv
+    $r -t $transform -w csv --csv-stdout $urlbase/playlist.m3u --summary-only 2>/dev/null > $tmpfile2 || \
+	fail "Fails to run transform $transform with remote playlist input"
 
+    cat "$tmpfile2" | sed 's,^"[^"]*/,",' > "$tmpfile1"
 
-# 7. Multiple remote files supplied directly on command line
+    expected=$mypath/expected/playlist
+    csvcompare $tmpfile1 $expected.csv || \
+	faildiff "Output mismatch for transform $transform with summaries and remote playlist input" $tmpfile1 $expected.csv
 
-$r -t $transform -w csv --csv-stdout $urlbase/3clicks.mp3 $urlbase/6clicks.ogg --summary-only 2>/dev/null | sed 's,^"[^"]*/,",' > $tmpfile || \
-    fail "Fails to run transform $transform with 2-file remote input"
 
-expected=$mypath/expected/playlist
-csvcompare $tmpfile $expected.csv || \
-    faildiff "Output mismatch for transform $transform with summaries and 2-file input" $tmpfile $expected.csv
+    # 6. Local playlist file referring to mixture of remote and local audio files
 
+    $r -t $transform -w csv --csv-stdout $audiopath/remote-playlist.m3u --summary-only 2>/dev/null > $tmpfile2 || \
+	fail "Fails to run transform $transform with playlist of remote files"
 
-# 8. Mixture of remote and local files supplied on command line
+    cat "$tmpfile2" | sed 's,^"[^"]*/,",' > "$tmpfile1"
 
-$r -t $transform -w csv --csv-stdout $audiopath/3clicks.mp3 $urlbase/6clicks.ogg --summary-only 2>/dev/null | sed 's,^"[^"]*/,",' > $tmpfile || \
-    fail "Fails to run transform $transform with 2-file remote input"
+    expected=$mypath/expected/playlist
+    csvcompare $tmpfile1 $expected.csv || \
+	faildiff "Output mismatch for transform $transform with summaries and remote playlist input" $tmpfile1 $expected.csv
 
-expected=$mypath/expected/playlist
-csvcompare $tmpfile $expected.csv || \
-    faildiff "Output mismatch for transform $transform with summaries and mixed local/remote 2-file input" $tmpfile $expected.csv
 
+    # 7. Multiple remote files supplied directly on command line
+
+    $r -t $transform -w csv --csv-stdout $urlbase/3clicks.mp3 $urlbase/6clicks.ogg --summary-only 2>/dev/null > $tmpfile2 || \
+	fail "Fails to run transform $transform with 2-file remote input"
+
+    cat "$tmpfile2" | sed 's,^"[^"]*/,",' > "$tmpfile1"
+
+    expected=$mypath/expected/playlist
+    csvcompare $tmpfile1 $expected.csv || \
+	faildiff "Output mismatch for transform $transform with summaries and 2-file input" $tmpfile1 $expected.csv
+
+
+    # 8. Mixture of remote and local files supplied on command line
+
+    $r -t $transform -w csv --csv-stdout $audiopath/3clicks.mp3 $urlbase/6clicks.ogg --summary-only 2>/dev/null > $tmpfile2 || \
+	fail "Fails to run transform $transform with 2-file remote input"
+
+    cat "$tmpfile2" | sed 's,^"[^"]*/,",' > "$tmpfile1"
+
+    expected=$mypath/expected/playlist
+    csvcompare $tmpfile1 $expected.csv || \
+	faildiff "Output mismatch for transform $transform with summaries and mixed local/remote 2-file input" $tmpfile1 $expected.csv
+
+fi
 
 # 9. As 3, but multiplexing rather than extracting separately from each file
 
-$r -t $transform --multiplex -w csv --csv-stdout $audiopath/3clicks.mp3 $audiopath/6clicks.ogg --summary-only 2>/dev/null | sed 's,^"[^"]*/,",' > $tmpfile || \
+$r -t $transform --multiplex -w csv --csv-stdout $audiopath/3clicks.mp3 $audiopath/6clicks.ogg --summary-only 2>/dev/null > $tmpfile2 || \
     fail "Fails to run transform $transform with 2-file input"
 
+cat "$tmpfile2" | sed 's,^"[^"]*/,",' > "$tmpfile1"
+
 expected=$mypath/expected/multiplexed
-csvcompare $tmpfile $expected.csv || \
-    faildiff "Output mismatch for transform $transform with summaries and 2-file multiplexed input" $tmpfile $expected.csv
+csvcompare $tmpfile1 $expected.csv || \
+    faildiff "Output mismatch for transform $transform with summaries and 2-file multiplexed input" $tmpfile1 $expected.csv