summaryrefslogtreecommitdiff
path: root/testsuite/mk
diff options
context:
space:
mode:
authorThomas Miedema <thomasmiedema@gmail.com>2015-05-27 15:02:35 +0200
committerThomas Miedema <thomasmiedema@gmail.com>2015-05-28 14:23:40 +0200
commitce166a3aaab28a9b08c60da6d0cfdab998b6e8ca (patch)
tree24b296a19d9615e714e61ae2e94bf8850580d8d5 /testsuite/mk
parentef9046601b8616106878529884ce1e9ae645f9ed (diff)
downloadhaskell-ce166a3aaab28a9b08c60da6d0cfdab998b6e8ca.tar.gz
Testdriver: do not interfer with MinGW path magic (#10449)
This should fix the testsuite driver on Windows using the MinGW tools with a native build of Python. MinGW automagically converts MinGW-style paths (e.g. '/c/programs/ghc/bin/ghc') into ordinary Windows paths (e.g. 'C:/programs/ghc/bin/ghc') when a native Windows program is invoked. But it doesn't do so when those paths are wrapped with a pair of escaped double quotes. The fix is to not call `eval` on the paths in Python, which let's us use one less pair of quotes, and makes MinGW happy. Reviewers: Rufflewind, austin Differential Revision: https://phabricator.haskell.org/D911
Diffstat (limited to 'testsuite/mk')
-rw-r--r--testsuite/mk/test.mk28
1 files changed, 17 insertions, 11 deletions
diff --git a/testsuite/mk/test.mk b/testsuite/mk/test.mk
index 9927b6de1c..7e5b038e1a 100644
--- a/testsuite/mk/test.mk
+++ b/testsuite/mk/test.mk
@@ -194,7 +194,7 @@ endif
RUNTEST_OPTS += \
--rootdir=. \
- --config=$(CONFIG) \
+ --configfile=$(CONFIG) \
-e 'config.confdir="$(CONFIGDIR)"' \
-e 'config.platform="$(TARGETPLATFORM)"' \
-e 'config.os="$(TargetOS_CPP)"' \
@@ -205,17 +205,23 @@ RUNTEST_OPTS += \
-e 'config.exeext="$(exeext)"' \
-e 'config.top="$(TOP_ABS)"'
-# Put an extra pair of quotes around non-empty program paths,
-# so we don't have to in .T scripts or driver/testlib.py.
-quote_path = $(if $1,"\"$1\"","")
+# Wrap non-empty program paths in quotes, because they may contain spaces. Do
+# it here, so we don't have to (and don't forget to do it) in the .T test
+# scripts (search for '{compiler}' or '{hpc}'). This may or may not be a good
+# idea.
+# Use `--config` instead of `-e`, because `-e` (which calls Python's `eval`
+# function) would require another pair of (escaped) quotes, which interfers
+# with MinGW's magic path handling (see #10449, and
+# http://www.mingw.org/wiki/Posix_path_conversion).
+quote_path = $(if $1,"$1")
RUNTEST_OPTS += \
- -e 'config.compiler=$(call quote_path,$(TEST_HC))' \
- -e 'config.ghc_pkg=$(call quote_path,$(GHC_PKG))' \
- -e 'config.haddock=$(call quote_path,$(HADDOCK))' \
- -e 'config.hp2ps=$(call quote_path,$(HP2PS_ABS))' \
- -e 'config.hpc=$(call quote_path,$(HPC))' \
- -e 'config.gs=$(call quote_path,$(GS))' \
- -e 'config.timeout_prog=$(call quote_path,$(TIMEOUT_PROGRAM))'
+ --config 'compiler=$(call quote_path,$(TEST_HC))' \
+ --config 'ghc_pkg=$(call quote_path,$(GHC_PKG))' \
+ --config 'haddock=$(call quote_path,$(HADDOCK))' \
+ --config 'hp2ps=$(call quote_path,$(HP2PS_ABS))' \
+ --config 'hpc=$(call quote_path,$(HPC))' \
+ --config 'gs=$(call quote_path,$(GS))' \
+ --config 'timeout_prog=$(call quote_path,$(TIMEOUT_PROGRAM))'
ifneq "$(OUTPUT_SUMMARY)" ""
RUNTEST_OPTS += \