annotate tests/test-jams-writer/test-jams-writer.sh @ 399:a3912193ce69 tip

Default branch is now named default on git as well as hg, in case we ever want to switch to mirroring in the other direction
author Chris Cannam
date Thu, 27 Aug 2020 15:57:37 +0100
parents c9be1a6f7d74
children
rev   line source
Chris@191 1 #!/bin/bash
Chris@191 2
Chris@191 3 . ../include.sh
Chris@191 4
Chris@191 5 tmpjson=$mypath/tmp_1_$$.json
Chris@191 6
Chris@191 7 silentfile=$audiopath/20sec-silence.wav
Chris@204 8 infile=$audiopath/3clicks8.wav
Chris@191 9
Chris@191 10 trap "rm -f $tmpjson" 0
Chris@191 11
Chris@191 12 transformdir=$mypath/transforms
Chris@191 13
Chris@200 14 mandatory="-w jams"
Chris@197 15
Chris@204 16 # First check that the JSON is valid for all outputs
Chris@191 17
Chris@191 18 for output in instants curve-oss curve-fsr curve-fsr-timed curve-vsr grid-oss grid-fsr notes-regions; do
Chris@191 19
Chris@200 20 $r -d "$testplug:$output" $mandatory --jams-one-file "$tmpjson" --jams-force "$silentfile" 2>/dev/null || \
Chris@191 21 fail "Failed to run for plugin $testplug with output $output"
Chris@191 22
Chris@191 23 check_json "$tmpjson" "test plugin output $output"
Chris@204 24
Chris@191 25 done
Chris@191 26
Chris@208 27 # If JAMS is installed, we can report on whether the outputs are valid
Chris@208 28 # JAMS schema files or not -- unfortunately we can't comply with the
Chris@208 29 # schema for most real plugins, so we can only make indicative reports
Chris@208 30 # for most. This is such a limited test that we make it optional; it's
Chris@208 31 # a bit much to expect everyone to have JAMS installed just for
Chris@208 32 # this. Also the JAMS verifier doesn't currently always work for me
Chris@208 33 # (e.g. it doesn't seem to work correctly with Python 3 at the moment)
Chris@208 34 # so let's not make this fatal either.
Chris@208 35
Chris@208 36 if jams_to_lab.py --help >/dev/null 2>&1; then
Chris@208 37
Chris@208 38 $r -t "$transformdir/onsets.n3" $mandatory --jams-one-file "$tmpjson" --jams-force "$infile" 2>/dev/null || \
Chris@208 39 fail "Failed to run for onsets"
Chris@208 40
Chris@208 41 if ! jams_to_lab.py "$tmpjson" test; then
Chris@208 42 echo "WARNING: JAMS schema verification failed for onsets"
Chris@208 43 fi
Chris@208 44 fi
Chris@208 45
Chris@208 46 # Now check against expected output, for a subset
Chris@204 47
Chris@204 48 for output in instants curve-fsr grid-oss notes-regions; do
Chris@204 49
Chris@204 50 $r -d "$testplug:$output" $mandatory --jams-one-file "$tmpjson" --jams-force "$silentfile" 2>/dev/null || \
Chris@204 51 fail "Failed to run for plugin $testplug with output $output"
Chris@204 52
Chris@204 53 expected="$mypath/expected/$output.json"
Chris@204 54 jsoncompare "$tmpjson" "$expected" || \
Chris@204 55 faildiff "Output differs from expected for $output" "$tmpjson" "$expected"
Chris@204 56
Chris@204 57 done
Chris@204 58
Chris@204 59 # Test digits option, with an output that has lots of digits to round
Chris@204 60
Chris@204 61 for digits in 0 6 2; do
Chris@204 62
cannam@299 63 $r -d "$testplug:grid-oss" $mandatory --jams-digits "$digits" --jams-one-file "$tmpjson" --jams-force "$silentfile" 2>/dev/null || \
Chris@204 64 fail "Failed to run for af with digits = $digits"
Chris@204 65
cannam@299 66 expected="$mypath/expected/grid-oss-$digits.json"
Chris@204 67 jsoncompare "$tmpjson" "$expected" || \
Chris@204 68 faildiff "Output differs from expected for af with digits = $digits" "$tmpjson" "$expected"
Chris@204 69
Chris@204 70 done
Chris@204 71