aboutsummaryrefslogtreecommitdiffstats
path: root/community/ghc/fix-testsuite.patch
blob: 2d14d19d9d8e405f4207a61e1b3c2fb44e54feca (plain)
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