Commit c53dfb3b authored by Ben Gamari's avatar Ben Gamari 🐢 Committed by Marge Bot

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.
parent d550b771
Pipeline #7080 passed with stages
in 425 minutes and 31 seconds
......@@ -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, [''])
......
-- !!! 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
......
-- !!! 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
......
-- !!! 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
......
:;# 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 %*
#!/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.
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment