When running TAP tests, filter out trailing \r from Windows .exe
authorSimon McVittie <simon.mcvittie@collabora.co.uk>
Mon, 19 Oct 2015 15:02:36 +0000 (16:02 +0100)
committerRalf Habacker <ralf.habacker@freenet.de>
Thu, 29 Oct 2015 04:50:27 +0000 (05:50 +0100)
If we're running Windows executables using Wine, then tap-driver.sh
won't accept "1..4\r\n" as TAP syntax.

Bug: https://bugs.freedesktop.org/show_bug.cgi?id=92538
Reviewed-by: Ralf Habacker <ralf.habacker@freenet.de>
test/glib-tap-test.sh

index fcb73383ed0532bf9208b778fb057d984cf34c63..5e5e6e5f9fd4c490dedaa605091f1183aac0afff 100755 (executable)
 set -e
 t="$1"
 shift
-exec "$t" --tap "$@"
+
+case "$t" in
+    (*.exe)
+        # We're running a Windows executable, possibly on a Unix
+        # platform. Avoid having invalid TAP syntax like "ok 3\r\n"
+        # where "ok 3\n" was intended.
+        echo 1 > "$t".exit-status.tmp
+        (
+            set +e
+            "$t" --tap "$@"
+            echo "$?" > "$t".exit-status.tmp
+        ) | sed -e 's/\r$//'
+        e="$(cat "$t".exit-status.tmp)"
+        rm "$t".exit-status.tmp
+        exit "$e"
+        ;;
+
+    (*)
+        exec "$t" --tap "$@"
+        ;;
+esac