Mercurial > hg > sonic-visualiser
annotate misc/test-session-export.sh @ 2236:fc85b8e502ff osc-script
Add script to compare resaved session with original
author | Chris Cannam |
---|---|
date | Wed, 27 Mar 2019 15:41:27 +0000 |
parents | |
children |
rev | line source |
---|---|
Chris@2236 | 1 #!/bin/bash |
Chris@2236 | 2 # |
Chris@2236 | 3 # Test that loading and re-saving a session does not change its contents |
Chris@2236 | 4 # Must be run from same directory as the SV binary |
Chris@2236 | 5 |
Chris@2236 | 6 set -e |
Chris@2236 | 7 |
Chris@2236 | 8 session="$1" |
Chris@2236 | 9 |
Chris@2236 | 10 set -u |
Chris@2236 | 11 |
Chris@2236 | 12 sv="./sonic-visualiser" |
Chris@2236 | 13 if [ ! -x "$sv" ]; then |
Chris@2236 | 14 echo "This script must be run from the directory containing the sonic-visualiser binary" 1>&2 |
Chris@2236 | 15 exit 1 |
Chris@2236 | 16 fi |
Chris@2236 | 17 |
Chris@2236 | 18 if ! xmllint --version 2>/dev/null ; then |
Chris@2236 | 19 echo "Can't find required xmllint program (from libxml2 distribution)" 1>&2 |
Chris@2236 | 20 exit 1 |
Chris@2236 | 21 fi |
Chris@2236 | 22 |
Chris@2236 | 23 version=$("$sv" -v 2>&1) |
Chris@2236 | 24 adequate=no |
Chris@2236 | 25 case "$version" in |
Chris@2236 | 26 [012].*) ;; |
Chris@2236 | 27 3.[012]) ;; |
Chris@2236 | 28 3.[012].*) ;; |
Chris@2236 | 29 [1-9]*) adequate=yes ;; |
Chris@2236 | 30 *) echo "Failed to query Sonic Visualiser version" 1>&2 |
Chris@2236 | 31 exit 1 ;; |
Chris@2236 | 32 esac |
Chris@2236 | 33 if [ "$adequate" = "no" ]; then |
Chris@2236 | 34 echo "Sonic Visualiser version must be at least 3.3 (supporting --osc-script option)" 1>&2 |
Chris@2236 | 35 exit 1 |
Chris@2236 | 36 fi |
Chris@2236 | 37 |
Chris@2236 | 38 if [ -z "$session" ]; then |
Chris@2236 | 39 echo "Usage: $0 <session.sv>" 1>&2 |
Chris@2236 | 40 exit 2 |
Chris@2236 | 41 fi |
Chris@2236 | 42 |
Chris@2236 | 43 if [ ! -f "$session" ]; then |
Chris@2236 | 44 echo "Session file $session not found" 1>&2 |
Chris@2236 | 45 exit 1 |
Chris@2236 | 46 fi |
Chris@2236 | 47 |
Chris@2236 | 48 tmpdir=$(mktemp -d) |
Chris@2236 | 49 trap "rm -rf $tmpdir" 0 |
Chris@2236 | 50 |
Chris@2236 | 51 input="$tmpdir/input.sv" |
Chris@2236 | 52 inxml="$tmpdir/input.xml" |
Chris@2236 | 53 output="$tmpdir/output.sv" |
Chris@2236 | 54 outxml="$tmpdir/output.xml" |
Chris@2236 | 55 |
Chris@2236 | 56 cp "$session" "$input" |
Chris@2236 | 57 |
Chris@2236 | 58 cat > "$tmpdir/script" <<EOF |
Chris@2236 | 59 /open "$input" |
Chris@2236 | 60 /save "$output" |
Chris@2236 | 61 /quit |
Chris@2236 | 62 EOF |
Chris@2236 | 63 |
Chris@2236 | 64 "$sv" --no-splash --osc-script "$tmpdir/script" |
Chris@2236 | 65 |
Chris@2236 | 66 if [ ! -f "$output" ]; then |
Chris@2236 | 67 echo "ERROR: Failed to save session to $output at all!" 1>&2 |
Chris@2236 | 68 exit 1 |
Chris@2236 | 69 fi |
Chris@2236 | 70 |
Chris@2236 | 71 bunzip2 -c "$input" | xmllint --format - > "$inxml" |
Chris@2236 | 72 bunzip2 -c "$output" | xmllint --format - > "$outxml" |
Chris@2236 | 73 |
Chris@2236 | 74 sdiff -w 140 "$inxml" "$outxml" |
Chris@2236 | 75 |