aboutsummaryrefslogtreecommitdiff
path: root/tests/variable/override/test.sh
diff options
context:
space:
mode:
authorKaren Arutyunov <karen@codesynthesis.com>2016-06-03 16:43:46 +0300
committerKaren Arutyunov <karen@codesynthesis.com>2016-06-18 15:17:29 +0300
commitb0e481a653b01e4329bccb1d101d56e3e878e960 (patch)
treebba1a4cae73ec4ece95f408e079a15d664e49927 /tests/variable/override/test.sh
parent0d692ec857340a0f16a03d6a7ef38fe864a83cfc (diff)
Port to MinGW
Diffstat (limited to 'tests/variable/override/test.sh')
-rwxr-xr-xtests/variable/override/test.sh30
1 files changed, 26 insertions, 4 deletions
diff --git a/tests/variable/override/test.sh b/tests/variable/override/test.sh
index 63a792f..e960929 100755
--- a/tests/variable/override/test.sh
+++ b/tests/variable/override/test.sh
@@ -2,6 +2,25 @@
verbose=n
+# By default when MSYS2 executable (bash.exe in particular) runs another
+# executable it converts arguments that look like POSIX paths to Windows
+# representations. More about it at:
+#
+# http://www.mingw.org/wiki/Posix_path_conversion
+#
+# So when you run b /v=X, build2 gets 'C:/msys64/v=X' argument instead of
+# '/v=X'. To disable this behavior set MSYS2_ARG_CONV_EXCL environment
+# variable, so all arguments starting with / will not be converted. You can
+# list more prefixes using ';' as a separator.
+#
+export MSYS2_ARG_CONV_EXCL=/
+
+tmp_file=`mktemp`
+
+# Remove temporary file on exit. Cover the case when exit due to an error.
+#
+trap 'rm -f $tmp_file' EXIT
+
function error () { echo "$*" 1>&2; exit 1; }
function fail ()
@@ -21,10 +40,13 @@ function fail ()
function test ()
{
- # There is no way to get the exit code in process substitution
- # so ruin the output.
- #
- diff -u - <(b -q $* || echo "<invalid output>")
+ b -q $* >$tmp_file
+
+ if [ $? -ne 0 ]; then
+ error "failed: b -q $* >$tmp_file"
+ fi
+
+ diff --strip-trailing-cr -u - $tmp_file
if [ $? -ne 0 ]; then
error "failed: b $*"