Testsuite: fix enum01/02/03 on Windows (#9399)
authorThomas Miedema <thomasmiedema@gmail.com>
Wed, 25 May 2016 15:51:26 +0000 (17:51 +0200)
committerThomas Miedema <thomasmiedema@gmail.com>
Wed, 25 May 2016 19:30:58 +0000 (21:30 +0200)
libraries/base/tests/all.T
libraries/base/tests/enum01.hs
libraries/base/tests/enum02.hs
libraries/base/tests/enum03.hs
libraries/base/tests/enum_processor.bat [new file with mode: 0755]
libraries/base/tests/enum_processor.py [changed mode: 0755->0644]
testsuite/driver/extra_files.py
testsuite/mk/test.mk

index fc97666..ac22336 100644 (file)
@@ -78,7 +78,7 @@ test('dynamic003',      extra_run_opts('+RTS -K32m -RTS'), compile_and_run, ['']
 test('dynamic004',      omit_ways(['normal', 'threaded1', 'ghci']), compile_and_run, [''])
 test('dynamic005',      normal, compile_and_run, [''])
 
-enum_setups = [when(fast(), skip), when(opsys('mingw32'), expect_broken(9399))]
+enum_setups = [when(fast(), skip)]
 test('enum01',          enum_setups, compile_and_run, [''])
 test('enum02',          enum_setups, compile_and_run, [''])
 test('enum03',          enum_setups, compile_and_run, [''])
index 0ae39b1..245f6f7 100644 (file)
@@ -1,5 +1,5 @@
 -- !!! Testing the Prelude's Enum instances.
-{-# OPTIONS_GHC -F -pgmF ./enum_processor.py #-}
+{-# OPTIONS_GHC -F -pgmF ./enum_processor.bat #-}
 -- The processor is a non-CPP-based equivalent of
 -- #define printTest(x) (do{ putStr ( "    " ++ "x" ++ " = " ) ; print (x) })
 -- which is not portable to clang
index f7e843c..2d06f95 100644 (file)
@@ -1,5 +1,5 @@
 -- !!! Testing the Int Enum instances.
-{-# OPTIONS_GHC -F -pgmF ./enum_processor.py #-}
+{-# OPTIONS_GHC -F -pgmF ./enum_processor.bat #-}
 -- The processor is a non-CPP-based equivalent of
 -- #define printTest(x) (do{ putStr ( "    " ++ "x" ++ " = " ) ; print (x) })
 -- which is not portable to clang
index 181354a..28d02d1 100644 (file)
@@ -1,5 +1,5 @@
 -- !!! Testing the Word Enum instances.
-{-# OPTIONS_GHC -F -pgmF ./enum_processor.py #-}
+{-# OPTIONS_GHC -F -pgmF ./enum_processor.bat #-}
 -- The processor is a non-CPP-based equivalent of
 -- #define printTest(x) (do{ putStr ( "    " ++ "x" ++ " = " ) ; print (x) })
 -- which is not portable to clang
diff --git a/libraries/base/tests/enum_processor.bat b/libraries/base/tests/enum_processor.bat
new file mode 100755 (executable)
index 0000000..2b13a7d
--- /dev/null
@@ -0,0 +1,11 @@
+:;# Problem: GHC on Windows doesn't like '-pgmF ./enum_processor.py'.
+:;#          See ticket:365#comment:7 for details.
+:;#
+:;# Workaround: this file, which functions both as a Windows .bat script and a
+:;# Unix shell script. Hacky, but it seems to work.
+
+:;# Starts with a ':', to skip on Windows.
+:; "${PYTHON}" enum_processor.py $@; exit $?
+
+:;# Windows only:
+%PYTHON% enum_processor.py %*
old mode 100755 (executable)
new mode 100644 (file)
index 53bea4c..15243f1
@@ -1,5 +1,3 @@
-#!/usr/bin/env python
-
 # The rough equivalent of the traditional CPP:
 #   #define printTest(x) (do{ putStr ( "    " ++ "x" ++ " = " ) ; print (x) })
 # which is not portable to clang.
index 0a2bfe6..650ba45 100644 (file)
@@ -251,9 +251,9 @@ extra_src_files = {
   'dynbrk004': ['../mdo.hs'],
   'dynbrk005': ['TupleN.hs'],
   'encoding004': ['encoded-data/'],
-  'enum01': ['enum_processor.py'],
-  'enum02': ['enum_processor.py'],
-  'enum03': ['enum_processor.py'],
+  'enum01': ['enum_processor.bat', 'enum_processor.py'],
+  'enum02': ['enum_processor.bat', 'enum_processor.py'],
+  'enum03': ['enum_processor.bat', 'enum_processor.py'],
   'exampleTest': ['AnnotationTuple.hs'],
   'fast2haskell': ['Fast2haskell.hs', 'Main.hs'],
   'ffi018_ghci': ['ffi018.h'],
index 4091b98..d7e65bb 100644 (file)
@@ -281,7 +281,7 @@ $(TIMEOUT_PROGRAM) :
 # communicate with the topmake.
 # See Note [Communicating options and variables to a submake]
 test: $(TIMEOUT_PROGRAM)
-       +$(PYTHON) $(RUNTESTS) $(RUNTEST_OPTS) \
+       +PYTHON="$(PYTHON)" "$(PYTHON)" $(RUNTESTS) $(RUNTEST_OPTS) \
                $(patsubst %, --only=%, $(TEST)) \
                $(patsubst %, --only=%, $(TESTS)) \
                $(patsubst %, --way=%, $(WAY)) \