1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
|
From 43fd712b4f679fe00d6d75c8bc088357052a0365 Mon Sep 17 00:00:00 2001
From: Ben Gamari <ben@smart-cactus.org>
Date: Tue, 11 Jun 2019 09:54:55 -0400
Subject: [PATCH] testsuite: A more portable solution to #9399
Previously we used an awful hybrid batch script/Bourne shell script to
allow this test to run both on Windows and Linux (fixing #9399).
However, this breaks on some libc implementations (e.g. musl). Fix this.
Fixes #16798.
---
libraries/base/tests/all.T | 28 ++++++++++++++++++-------
libraries/base/tests/enum01.hs | 4 ----
libraries/base/tests/enum02.hs | 4 ----
libraries/base/tests/enum03.hs | 4 ----
libraries/base/tests/enum_processor.bat | 6 ------
libraries/base/tests/enum_processor.py | 2 ++
6 files changed, 23 insertions(+), 25 deletions(-)
mode change 100644 => 100755 libraries/base/tests/enum_processor.py
diff --git a/libraries/base/tests/all.T b/libraries/base/tests/all.T
index e64ca40006..33e9e196a8 100644
--- a/libraries/base/tests/all.T
+++ b/libraries/base/tests/all.T
@@ -94,13 +94,27 @@ test('dynamic004', omit_ways(['normal', 'threaded1', 'ghci']), compile_and_
test('dynamic005', normal, compile_and_run, [''])
enum_setups = [when(fast(), skip)]
-test('enum01', [extra_files(['enum_processor.bat', 'enum_processor.py']),
- enum_setups], compile_and_run, [''])
-test('enum02', [extra_files(['enum_processor.bat', 'enum_processor.py']),
- enum_setups], compile_and_run, [''])
-test('enum03', [extra_files(['enum_processor.bat', 'enum_processor.py']),
- enum_setups], compile_and_run, [''])
-test('enum04', normal, compile_and_run, [''])
+def enum_test(name):
+ """
+ These tests have a funky Python preprocessor which require some headstands
+ to run on Windows.
+ """
+ if opsys('mingw32'):
+ test(name,
+ [when(opsys('mingw32'), extra_files(['enum_processor.bat'])),
+ extra_files(['enum_processor.py'])],
+ compile_and_run,
+ ['-F -pgmF ./enum_processor.bat'])
+ else:
+ test(name,
+ [extra_files(['enum_processor.py'])],
+ compile_and_run,
+ ['-F -pgmF ./enum_processor.py'])
+
+enum_test('enum01')
+enum_test('enum02')
+enum_test('enum03')
+test('enum04', normal, compile_and_run, [''])
test('exceptionsrun001', normal, compile_and_run, [''])
test('exceptionsrun002', normal, compile_and_run, [''])
diff --git a/libraries/base/tests/enum01.hs b/libraries/base/tests/enum01.hs
index 5aea7dea4d..4dfc29978c 100644
--- a/libraries/base/tests/enum01.hs
+++ b/libraries/base/tests/enum01.hs
@@ -1,8 +1,4 @@
-- !!! Testing the Prelude's Enum instances.
-{-# 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
module Main(main) where
diff --git a/libraries/base/tests/enum02.hs b/libraries/base/tests/enum02.hs
index 2d06f95f90..3741880f57 100644
--- a/libraries/base/tests/enum02.hs
+++ b/libraries/base/tests/enum02.hs
@@ -1,8 +1,4 @@
-- !!! Testing the Int Enum instances.
-{-# 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
module Main(main) where
diff --git a/libraries/base/tests/enum03.hs b/libraries/base/tests/enum03.hs
index 28d02d1c13..a701df4501 100644
--- a/libraries/base/tests/enum03.hs
+++ b/libraries/base/tests/enum03.hs
@@ -1,8 +1,4 @@
-- !!! Testing the Word Enum instances.
-{-# 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
module Main(main) where
diff --git a/libraries/base/tests/enum_processor.bat b/libraries/base/tests/enum_processor.bat
index 2b13a7db07..6f9eb0fd29 100755
--- a/libraries/base/tests/enum_processor.bat
+++ b/libraries/base/tests/enum_processor.bat
@@ -1,11 +1,5 @@
:;# 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 %*
diff --git a/libraries/base/tests/enum_processor.py b/libraries/base/tests/enum_processor.py
old mode 100644
new mode 100755
index 15243f11ff..b4ca3e9797
--- a/libraries/base/tests/enum_processor.py
+++ b/libraries/base/tests/enum_processor.py
@@ -1,3 +1,5 @@
+#!/usr/bin/env python3
+
# The rough equivalent of the traditional CPP:
# #define printTest(x) (do{ putStr ( " " ++ "x" ++ " = " ) ; print (x) })
# which is not portable to clang.
--
2.22.0
|