summaryrefslogtreecommitdiff
path: root/testsuite/driver/testlib.py
diff options
context:
space:
mode:
Diffstat (limited to 'testsuite/driver/testlib.py')
-rw-r--r--testsuite/driver/testlib.py46
1 files changed, 29 insertions, 17 deletions
diff --git a/testsuite/driver/testlib.py b/testsuite/driver/testlib.py
index efeaa94b89..501ac17b7b 100644
--- a/testsuite/driver/testlib.py
+++ b/testsuite/driver/testlib.py
@@ -1321,46 +1321,53 @@ def ghci_script( name, way, script):
# Compile-only tests
def compile( name, way, extra_hc_opts ):
- return do_compile( name, way, False, None, [], extra_hc_opts )
+ return do_compile( name, way, False, None, [], [], extra_hc_opts )
def compile_fail( name, way, extra_hc_opts ):
- return do_compile( name, way, True, None, [], extra_hc_opts )
+ return do_compile( name, way, True, None, [], [], extra_hc_opts )
def backpack_typecheck( name, way, extra_hc_opts ):
- return do_compile( name, way, False, None, [], "-fno-code -fwrite-interface " + extra_hc_opts, backpack=True )
+ return do_compile( name, way, False, None, [], [], "-fno-code -fwrite-interface " + extra_hc_opts, backpack=True )
def backpack_typecheck_fail( name, way, extra_hc_opts ):
- return do_compile( name, way, True, None, [], "-fno-code -fwrite-interface " + extra_hc_opts, backpack=True )
+ return do_compile( name, way, True, None, [], [], "-fno-code -fwrite-interface " + extra_hc_opts, backpack=True )
def backpack_compile( name, way, extra_hc_opts ):
- return do_compile( name, way, False, None, [], extra_hc_opts, backpack=True )
+ return do_compile( name, way, False, None, [], [], extra_hc_opts, backpack=True )
def backpack_compile_fail( name, way, extra_hc_opts ):
- return do_compile( name, way, True, None, [], extra_hc_opts, backpack=True )
+ return do_compile( name, way, True, None, [], [], extra_hc_opts, backpack=True )
def backpack_run( name, way, extra_hc_opts ):
return compile_and_run__( name, way, None, [], extra_hc_opts, backpack=True )
def multimod_compile( name, way, top_mod, extra_hc_opts ):
- return do_compile( name, way, False, top_mod, [], extra_hc_opts )
+ return do_compile( name, way, False, top_mod, [], [], extra_hc_opts )
def multimod_compile_fail( name, way, top_mod, extra_hc_opts ):
- return do_compile( name, way, True, top_mod, [], extra_hc_opts )
+ return do_compile( name, way, True, top_mod, [], [], extra_hc_opts )
def multimod_compile_filter( name, way, top_mod, extra_hc_opts, filter_with, suppress_stdout=True ):
- return do_compile( name, way, False, top_mod, [], extra_hc_opts, filter_with=filter_with, suppress_stdout=suppress_stdout )
+ return do_compile( name, way, False, top_mod, [], [], extra_hc_opts, filter_with=filter_with, suppress_stdout=suppress_stdout )
+
+def multiunit_compile( name, way, units, extra_hc_opts ):
+ return do_compile( name, way, False, None, [], units, extra_hc_opts )
+
+def multiunit_compile_fail( name, way, units, extra_hc_opts ):
+ return do_compile( name, way, True, None, [], units, extra_hc_opts )
def multi_compile( name, way, top_mod, extra_mods, extra_hc_opts ):
- return do_compile( name, way, False, top_mod, extra_mods, extra_hc_opts)
+ return do_compile( name, way, False, top_mod, extra_mods, [], extra_hc_opts)
def multi_compile_fail( name, way, top_mod, extra_mods, extra_hc_opts ):
- return do_compile( name, way, True, top_mod, extra_mods, extra_hc_opts)
+ return do_compile( name, way, True, top_mod, extra_mods, [], extra_hc_opts)
def do_compile(name: TestName,
way: WayName,
should_fail: bool,
top_mod: Optional[Path],
extra_mods: List[str],
+ units: List[str],
extra_hc_opts: str,
**kwargs
) -> PassFail:
@@ -1371,7 +1378,7 @@ def do_compile(name: TestName,
return result
extra_hc_opts = result.hc_opts
- result = simple_build(name, way, extra_hc_opts, should_fail, top_mod, False, True, **kwargs)
+ result = simple_build(name, way, extra_hc_opts, should_fail, top_mod, units, False, True, **kwargs)
if badResult(result):
return result
@@ -1406,7 +1413,7 @@ def compile_cmp_asm(name: TestName,
extra_hc_opts: str
) -> PassFail:
print('Compile only, extra args = ', extra_hc_opts)
- result = simple_build(name + '.' + ext, way, '-keep-s-files -O ' + extra_hc_opts, False, None, False, False)
+ result = simple_build(name + '.' + ext, way, '-keep-s-files -O ' + extra_hc_opts, False, None, [], False, False)
if badResult(result):
return result
@@ -1433,7 +1440,7 @@ def compile_grep_asm(name: TestName,
extra_hc_opts: str
) -> PassFail:
print('Compile only, extra args = ', extra_hc_opts)
- result = simple_build(name + '.' + ext, way, '-keep-s-files -O ' + extra_hc_opts, False, None, False, False)
+ result = simple_build(name + '.' + ext, way, '-keep-s-files -O ' + extra_hc_opts, False, None, [], False, False)
if badResult(result):
return result
@@ -1454,7 +1461,7 @@ def compile_grep_core(name: TestName,
extra_hc_opts: str
) -> PassFail:
print('Compile only, extra args = ', extra_hc_opts)
- result = simple_build(name + '.hs', way, '-ddump-to-file -dsuppress-all -ddump-simpl -O ' + extra_hc_opts, False, None, False, False)
+ result = simple_build(name + '.hs', way, '-ddump-to-file -dsuppress-all -ddump-simpl -O ' + extra_hc_opts, False, None, [], False, False)
if badResult(result):
return result
@@ -1490,7 +1497,7 @@ def compile_and_run__(name: TestName,
if way.startswith('ghci'): # interpreted...
return interpreter_run(name, way, extra_hc_opts, top_mod)
else: # compiled...
- result = simple_build(name, way, extra_hc_opts, False, top_mod, True, True, backpack = backpack)
+ result = simple_build(name, way, extra_hc_opts, False, top_mod, [], True, True, backpack = backpack)
if badResult(result):
return result
@@ -1600,7 +1607,7 @@ def check_stats(name: TestName,
def extras_build( way, extra_mods, extra_hc_opts ):
for mod, opts in extra_mods:
- result = simple_build(mod, way, opts + ' ' + extra_hc_opts, False, None, False, False)
+ result = simple_build(mod, way, opts + ' ' + extra_hc_opts, False, None, [], False, False)
if not (mod.endswith('.hs') or mod.endswith('.lhs')):
extra_hc_opts += ' %s' % Path(mod).with_suffix('.o')
if badResult(result):
@@ -1613,6 +1620,7 @@ def simple_build(name: Union[TestName, str],
extra_hc_opts: str,
should_fail: bool,
top_mod: Optional[Path],
+ units: List[str],
link: bool,
addsuf: bool,
backpack: bool = False,
@@ -1646,6 +1654,10 @@ def simple_build(name: Union[TestName, str],
to_do = to_do + '--backpack '
elif link:
to_do = '-o ' + name
+ elif len(units) > 0:
+ to_do = '--make'
+ for u in units:
+ to_do = to_do + ' -unit @%s' % u
else:
to_do = '-c' # just compile