Commit 3415bcaa authored by rwbarton's avatar rwbarton Committed by Ben Gamari

tests: remove extra_files.py (#12223)

The script I used is included as testsuite/driver/kill_extra_files.py,
though at this point it is for mostly historical interest.

Some of the tests in libraries/hpc relied on extra_files.py, so this
commit includes an update to that submodule.

One test in libraries/process also relies on extra_files.py, but we
cannot update that submodule so easily, so for now we special-case it
in the test driver.
parent 98119f5a
...@@ -88,7 +88,7 @@ test('hDuplicateTo001', [], compile_and_run, ['']) ...@@ -88,7 +88,7 @@ test('hDuplicateTo001', [], compile_and_run, [''])
test('countReaders001', [], compile_and_run, ['']) test('countReaders001', [], compile_and_run, [''])
test('concio001', normal, run_command, ['$MAKE -s --no-print-directory test.concio001']) test('concio001', normal, run_command, ['$MAKE -s --no-print-directory test.concio001'])
test('concio001.thr', normal, run_command, ['$MAKE -s --no-print-directory test.concio001.thr']) test('concio001.thr', extra_files(['concio001.hs']), run_command, ['$MAKE -s --no-print-directory test.concio001.thr'])
test('concio002', reqlib('process'), compile_and_run, ['']) test('concio002', reqlib('process'), compile_and_run, [''])
...@@ -112,7 +112,7 @@ test('encoding001', [], compile_and_run, ['']) ...@@ -112,7 +112,7 @@ test('encoding001', [], compile_and_run, [''])
test('encoding002', normal, compile_and_run, ['']) test('encoding002', normal, compile_and_run, [''])
test('encoding003', normal, compile_and_run, ['']) test('encoding003', normal, compile_and_run, [''])
test('encoding004', normal, compile_and_run, ['']) test('encoding004', extra_files(['encoded-data/']), compile_and_run, [''])
test('encoding005', normal, compile_and_run, ['']) test('encoding005', normal, compile_and_run, [''])
test('environment001', [], run_command, test('environment001', [], run_command,
......
...@@ -79,9 +79,12 @@ test('dynamic004', omit_ways(['normal', 'threaded1', 'ghci']), compile_and_ ...@@ -79,9 +79,12 @@ test('dynamic004', omit_ways(['normal', 'threaded1', 'ghci']), compile_and_
test('dynamic005', normal, compile_and_run, ['']) test('dynamic005', normal, compile_and_run, [''])
enum_setups = [when(fast(), skip)] enum_setups = [when(fast(), skip)]
test('enum01', enum_setups, compile_and_run, ['']) test('enum01', [extra_files(['enum_processor.bat', 'enum_processor.py']),
test('enum02', enum_setups, compile_and_run, ['']) enum_setups], compile_and_run, [''])
test('enum03', 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, ['']) test('enum04', normal, compile_and_run, [''])
test('exceptionsrun001', normal, compile_and_run, ['']) test('exceptionsrun001', normal, compile_and_run, [''])
...@@ -92,10 +95,12 @@ test('list002', when(fast(), skip), compile_and_run, ['']) ...@@ -92,10 +95,12 @@ test('list002', when(fast(), skip), compile_and_run, [''])
test('list003', when(fast(), skip), compile_and_run, ['']) test('list003', when(fast(), skip), compile_and_run, [''])
test('isSuffixOf', normal, compile_and_run, ['']) test('isSuffixOf', normal, compile_and_run, [''])
test('memo001', [extra_run_opts('+RTS -A10k -RTS')], multimod_compile_and_run, test('memo001', [extra_files(['Memo1.lhs']),
extra_run_opts('+RTS -A10k -RTS')], multimod_compile_and_run,
['memo001', '']) ['memo001', ''])
test('memo002', [extra_run_opts('20')], multimod_compile_and_run, test('memo002', [extra_files(['Memo2.lhs']),
extra_run_opts('20')], multimod_compile_and_run,
['memo002', '']) ['memo002', ''])
test('stableptr001', test('stableptr001',
......
Subproject commit 5caceac7a05741f87f970e1d3f572b1fd8f10cec Subproject commit b28546ca003c6dbff586609a093e8c8091c34b14
This diff is collapsed.
#!/usr/bin/env python3
from typing import Dict, List, Set, NamedTuple
import os
import subprocess
import ast
import extra_files
extra_src_files = extra_files.extra_src_files # type: Dict[str, List[str]]
found_tests = set() # type: Set[str]
fixed_tests = set() # type: Set[str]
def extras(name: str) -> str:
return 'extra_files(%s)' % (extra_src_files[name],)
def list_extras(name: str, col: int) -> str:
return extras(name) + ',\n' + ' ' * (col + 1)
def find_all_T_files(basedir: bytes) -> List[bytes]:
result = [] # type: List[bytes]
for dirpath, dirnames, filenames in os.walk(basedir):
for f in filenames:
if f.endswith(b'.T'):
result.append(os.path.join(dirpath, f))
return result
# Delete del bytes from (line, col) and then insert the string ins there.
Fixup = NamedTuple('Fixup', [('line', int),
('col', int),
('delete', int),
('insert', str)])
class TestVisitor(ast.NodeVisitor):
def __init__(self) -> None:
self.fixups = [] # type: List[Fixup]
def visit_Call(self, node: ast.AST) -> None:
self.generic_visit(node)
assert isinstance(node, ast.Call)
if isinstance(node.func, ast.Name) and node.func.id == 'test':
assert(len(node.args) == 4)
name_expr, setup, test_fn, args = node.args
if not(isinstance(name_expr, ast.Str)):
return
name = name_expr.s
if name in extra_src_files:
found_tests.add(name)
if isinstance(setup, ast.Name):
if setup.id == 'normal':
# Kill it
self.fixups.append(Fixup(
line=setup.lineno, col=setup.col_offset,
delete=len(setup.id), insert=extras(name)))
else:
# Make a lit
self.fixups.append(Fixup(
line=setup.lineno, col=setup.col_offset,
delete=0,
insert='[' + list_extras(name, setup.col_offset)))
self.fixups.append(Fixup(
line=setup.lineno,
col=setup.col_offset + len(setup.id),
delete=0, insert=']'))
fixed_tests.add(name)
elif isinstance(setup, ast.List):
# Insert into list at start
if not setup.elts:
ins = extras(name) # no need for comma, newline
# Don't try to delete the list because someone
# might have written "[ ]" for some reason
else:
ins = list_extras(name, setup.col_offset)
self.fixups.append(Fixup(
line=setup.lineno, col=setup.col_offset + 1,
delete=0, insert=ins))
fixed_tests.add(name)
else:
assert False # we fixed them all manually already
basedir = subprocess.check_output(['git', 'rev-parse', '--show-toplevel'])
basedir = basedir[0:-1] # delete trailing newline
print(basedir)
for f in find_all_T_files(basedir):
print(f)
text = open(f).read()
mod = ast.parse(text)
tv = TestVisitor()
tv.visit(mod)
lines = text.split('\n')
if not tv.fixups:
# Don't rewrite files unnecessarily
# (libraries/Win32 has Windows line endings)
continue
for fixup in reversed(tv.fixups):
l = list(lines[fixup.line-1])
l[fixup.col:fixup.col + fixup.delete] = fixup.insert
lines[fixup.line-1] = ''.join(l)
open(f, 'w').write('\n'.join(lines))
...@@ -23,7 +23,7 @@ import subprocess ...@@ -23,7 +23,7 @@ import subprocess
from testglobals import * from testglobals import *
from testutil import * from testutil import *
from extra_files import extra_src_files extra_src_files = {'T4198': ['exitminus1.c']} # TODO: See #12223
if config.use_threads: if config.use_threads:
import threading import threading
......
...@@ -4,9 +4,11 @@ ...@@ -4,9 +4,11 @@
# now, just disable the profiling ways. # now, just disable the profiling ways.
test('annth_make', test('annth_make',
[req_interp, omit_ways(prof_ways), unless(have_dynamic(), skip)], [extra_files(['AnnHelper.hs', 'TestModule.hs', 'TestModuleTH.hs', 'annth.hs']),
req_interp, omit_ways(prof_ways), unless(have_dynamic(), skip)],
run_command, ['$MAKE -s --no-print-directory annth_make']) run_command, ['$MAKE -s --no-print-directory annth_make'])
test('annth_compunits', test('annth_compunits',
[req_interp, omit_ways(prof_ways), unless(have_dynamic(), skip)], [extra_files(['AnnHelper.hs', 'TestModule.hs', 'TestModuleTH.hs', 'annth.hs']),
req_interp, omit_ways(prof_ways), unless(have_dynamic(), skip)],
run_command, ['$MAKE -s --no-print-directory annth_compunits']) run_command, ['$MAKE -s --no-print-directory annth_compunits'])
...@@ -2,9 +2,12 @@ ...@@ -2,9 +2,12 @@
test('annfail01', normal, compile_fail, ['']) test('annfail01', normal, compile_fail, [''])
test('annfail02', normal, compile_fail, ['']) test('annfail02', normal, compile_fail, [''])
test('annfail03', req_interp, compile_fail, ['']) test('annfail03', req_interp, compile_fail, [''])
test('annfail04', [req_interp], multimod_compile_fail, ['annfail04', '-v0']) test('annfail04', [extra_files(['Annfail04_Help.hs']),
test('annfail05', [req_interp], multimod_compile_fail, ['annfail05', '-v0']) req_interp], multimod_compile_fail, ['annfail04', '-v0'])
test('annfail06', [req_interp], multimod_compile_fail, ['annfail06', '-v0']) test('annfail05', [extra_files(['Annfail05_Help.hs']),
req_interp], multimod_compile_fail, ['annfail05', '-v0'])
test('annfail06', [extra_files(['Annfail06_Help.hs']),
req_interp], multimod_compile_fail, ['annfail06', '-v0'])
test('annfail07', req_interp, compile_fail, ['']) test('annfail07', req_interp, compile_fail, [''])
test('annfail08', req_interp, compile_fail, ['']) test('annfail08', req_interp, compile_fail, [''])
test('annfail09', req_interp, compile_fail, ['']) test('annfail09', req_interp, compile_fail, [''])
......
...@@ -7,7 +7,8 @@ setTestOpts(when(fast(), skip)) ...@@ -7,7 +7,8 @@ setTestOpts(when(fast(), skip))
# now, just disable the profiling and dynamic ways, and use # now, just disable the profiling and dynamic ways, and use
# config.ghc_th_way_flags. # config.ghc_th_way_flags.
test('annrun01', test('annrun01',
[pre_cmd('$MAKE -s --no-print-directory config'), [extra_files(['Annrun01_Help.hs']),
pre_cmd('$MAKE -s --no-print-directory config'),
omit_ways(['dyn'] + prof_ways)], omit_ways(['dyn'] + prof_ways)],
multimod_compile_and_run, multimod_compile_and_run,
['annrun01', '-package ghc ' + config.ghc_th_way_flags]) ['annrun01', '-package ghc ' + config.ghc_th_way_flags])
......
...@@ -4,6 +4,6 @@ else: ...@@ -4,6 +4,6 @@ else:
cleanup = 'CLEANUP=0' cleanup = 'CLEANUP=0'
test('bkpcabal01', test('bkpcabal01',
normal, extra_files(['p', 'q', 'impl', 'bkpcabal01.cabal', 'Setup.hs', 'Main.hs']),
run_command, run_command,
['$MAKE -s --no-print-directory bkpcabal01 ' + cleanup]) ['$MAKE -s --no-print-directory bkpcabal01 ' + cleanup])
...@@ -4,6 +4,6 @@ else: ...@@ -4,6 +4,6 @@ else:
cleanup = 'CLEANUP=0' cleanup = 'CLEANUP=0'
test('bkpcabal02', test('bkpcabal02',
normal, extra_files(['p', 'q', 'bkpcabal02.cabal', 'Setup.hs']),
run_command, run_command,
['$MAKE -s --no-print-directory bkpcabal02 ' + cleanup]) ['$MAKE -s --no-print-directory bkpcabal02 ' + cleanup])
...@@ -4,6 +4,6 @@ else: ...@@ -4,6 +4,6 @@ else:
cleanup = 'CLEANUP=0' cleanup = 'CLEANUP=0'
test('bkpcabal03', test('bkpcabal03',
normal, extra_files(['asig1', 'asig2', 'bkpcabal03.cabal.in1', 'bkpcabal03.cabal.in2', 'Setup.hs', 'Mod.hs']),
run_command, run_command,
['$MAKE -s --no-print-directory bkpcabal03 ' + cleanup]) ['$MAKE -s --no-print-directory bkpcabal03 ' + cleanup])
...@@ -5,6 +5,6 @@ else: ...@@ -5,6 +5,6 @@ else:
# Test recompilation checking on signatures # Test recompilation checking on signatures
test('bkpcabal04', test('bkpcabal04',
normal, extra_files(['p', 'q', 'bkpcabal04.cabal.in1', 'bkpcabal04.cabal.in2', 'Setup.hs']),
run_command, run_command,
['$MAKE -s --no-print-directory bkpcabal04 ' + cleanup]) ['$MAKE -s --no-print-directory bkpcabal04 ' + cleanup])
...@@ -4,6 +4,6 @@ else: ...@@ -4,6 +4,6 @@ else:
cleanup = 'CLEANUP=0' cleanup = 'CLEANUP=0'
test('bkpcabal05', test('bkpcabal05',
normal, extra_files(['bkpcabal05.cabal', 'A.hsig.in1', 'A.hsig.in2', 'M.hs', 'Setup.hs']),
run_command, run_command,
['$MAKE -s --no-print-directory bkpcabal05 ' + cleanup]) ['$MAKE -s --no-print-directory bkpcabal05 ' + cleanup])
test('T12485', [], run_command, ['$MAKE -s --no-print-directory T12485']) test('T12485', [extra_files(['a.pkg', 'b.pkg', 'Main.hs'])], run_command, ['$MAKE -s --no-print-directory T12485'])
...@@ -4,6 +4,6 @@ else: ...@@ -4,6 +4,6 @@ else:
cleanup = 'CLEANUP=0' cleanup = 'CLEANUP=0'
test('T12733', test('T12733',
normal, extra_files(['p/', 'q/', 'Setup.hs']),
run_command, run_command,
['$MAKE -s --no-print-directory T12733 ' + cleanup]) ['$MAKE -s --no-print-directory T12733 ' + cleanup])
def normaliseDynlibNames(str): def normaliseDynlibNames(str):
return re.sub('-ghc[0-9.]+\.', '-ghc<VERSION>.', str) return re.sub('-ghc[0-9.]+\.', '-ghc<VERSION>.', str)
test('ghcpkg01', [], run_command, ['$MAKE -s --no-print-directory ghcpkg01']) test('ghcpkg01', [extra_files(['test.pkg', 'test2.pkg', 'test3.pkg'])], run_command, ['$MAKE -s --no-print-directory ghcpkg01'])
# Use ignore_stderr to prevent (when HADDOCK_DOCS=NO): # Use ignore_stderr to prevent (when HADDOCK_DOCS=NO):
# warning: haddock-interfaces .. doesn't exist or isn't a file # warning: haddock-interfaces .. doesn't exist or isn't a file
test('ghcpkg02', [ignore_stderr], run_command, test('ghcpkg02', [ignore_stderr], run_command,
['$MAKE -s --no-print-directory ghcpkg02']) ['$MAKE -s --no-print-directory ghcpkg02'])
test('ghcpkg03', [normalise_errmsg_fun(normaliseDynlibNames)], run_command, test('ghcpkg03', [extra_files(['test.pkg', 'test2.pkg', 'test4.pkg']),
normalise_errmsg_fun(normaliseDynlibNames)], run_command,
['$MAKE -s --no-print-directory ghcpkg03']) ['$MAKE -s --no-print-directory ghcpkg03'])
def normalise_package_order(s): def normalise_package_order(s):
...@@ -17,7 +18,8 @@ def normalise_package_order(s): ...@@ -17,7 +18,8 @@ def normalise_package_order(s):
'newtestpkg-2.0 testpkg-1.2.3.4', 'newtestpkg-2.0 testpkg-1.2.3.4',
s) s)
test('ghcpkg04', [normalise_errmsg_fun(normalise_package_order)], run_command, test('ghcpkg04', [extra_files(['test.pkg', 'test5.pkg']),
normalise_errmsg_fun(normalise_package_order)], run_command,
['$MAKE -s --no-print-directory ghcpkg04']) ['$MAKE -s --no-print-directory ghcpkg04'])
# Sometimes we get spurious warnings from ghc-pkg about missing # Sometimes we get spurious warnings from ghc-pkg about missing
...@@ -26,11 +28,12 @@ def normalise_haddock_junk( str ): ...@@ -26,11 +28,12 @@ def normalise_haddock_junk( str ):
return re.sub(r'Warning: haddock.*\n', '', str) return re.sub(r'Warning: haddock.*\n', '', str)
test('ghcpkg05', test('ghcpkg05',
[normalise_errmsg_fun(normalise_haddock_junk, normaliseDynlibNames)], [extra_files(['test2.pkg', 'test3.pkg']),
normalise_errmsg_fun(normalise_haddock_junk, normaliseDynlibNames)],
run_command, ['$MAKE -s --no-print-directory ghcpkg05']) run_command, ['$MAKE -s --no-print-directory ghcpkg05'])
test('ghcpkg06', [], run_command, ['$MAKE -s --no-print-directory ghcpkg06']) test('ghcpkg06', [extra_files(['test.pkg', 'testdup.pkg'])], run_command, ['$MAKE -s --no-print-directory ghcpkg06'])
test('ghcpkg07', [], run_command, ['$MAKE -s --no-print-directory ghcpkg07']) test('ghcpkg07', [extra_files(['test.pkg', 'test7a.pkg', 'test7b.pkg'])], run_command, ['$MAKE -s --no-print-directory ghcpkg07'])
# Test that we *can* compile a module that also belongs to a package # Test that we *can* compile a module that also belongs to a package
# (this was disallowed in GHC 6.4 and earlier) # (this was disallowed in GHC 6.4 and earlier)
...@@ -38,14 +41,14 @@ test('pkg01', normal, compile, ['']) ...@@ -38,14 +41,14 @@ test('pkg01', normal, compile, [''])
test('T1750', [], run_command, ['$MAKE -s --no-print-directory T1750']) test('T1750', [], run_command, ['$MAKE -s --no-print-directory T1750'])
test('T5442a', [], run_command, ['$MAKE -s --no-print-directory T5442a']) test('T5442a', [extra_files(['test.pkg'])], run_command, ['$MAKE -s --no-print-directory T5442a'])
test('T5442b', [], run_command, ['$MAKE -s --no-print-directory T5442b']) test('T5442b', [extra_files(['test.pkg'])], run_command, ['$MAKE -s --no-print-directory T5442b'])
test('T5442c', [], run_command, ['$MAKE -s --no-print-directory T5442c']) test('T5442c', [extra_files(['test.pkg'])], run_command, ['$MAKE -s --no-print-directory T5442c'])
test('T5442d', [], run_command, ['$MAKE -s --no-print-directory T5442d']) test('T5442d', [extra_files(['shadow1.pkg', 'shadow2.pkg', 'shadow4.pkg'])], run_command, ['$MAKE -s --no-print-directory T5442d'])
test('shadow', [], run_command, ['$MAKE -s --no-print-directory shadow']) test('shadow', [], run_command, ['$MAKE -s --no-print-directory shadow'])
test('T12485a', [], run_command, ['$MAKE -s --no-print-directory T12485a']) test('T12485a', [extra_files(['shadow1.pkg', 'shadow2.pkg', 'shadow3.pkg'])], run_command, ['$MAKE -s --no-print-directory T12485a'])
...@@ -4,6 +4,6 @@ else: ...@@ -4,6 +4,6 @@ else:
cleanup = 'CLEANUP=0' cleanup = 'CLEANUP=0'
test('cabal03', test('cabal03',
normal, extra_files(['Setup.lhs', 'p/', 'q/', 'r/']),
run_command, run_command,
['$MAKE -s --no-print-directory cabal03 ' + cleanup]) ['$MAKE -s --no-print-directory cabal03 ' + cleanup])
...@@ -19,6 +19,6 @@ else: ...@@ -19,6 +19,6 @@ else:
cleanup = 'CLEANUP=0' cleanup = 'CLEANUP=0'
test('cabal04', test('cabal04',
normal, extra_files(['Library.hs', 'Setup.lhs', 'TH.hs', 'thtest.cabal']),
run_command, run_command,
['$MAKE -s --no-print-directory cabal04 VANILLA=' + vanilla + ' PROF=' + prof + ' DYN=' + dyn + ' ' + cleanup]) ['$MAKE -s --no-print-directory cabal04 VANILLA=' + vanilla + ' PROF=' + prof + ' DYN=' + dyn + ' ' + cleanup])
...@@ -4,6 +4,6 @@ else: ...@@ -4,6 +4,6 @@ else:
cleanup = 'CLEANUP=0' cleanup = 'CLEANUP=0'
test('cabal05', test('cabal05',
normal, extra_files(['Setup.hs', 'p/', 'q/', 'r/', 's/', 't/']),
run_command, run_command,
['$MAKE -s --no-print-directory cabal05 ' + cleanup]) ['$MAKE -s --no-print-directory cabal05 ' + cleanup])
...@@ -4,6 +4,6 @@ else: ...@@ -4,6 +4,6 @@ else:
cleanup = 'CLEANUP=0' cleanup = 'CLEANUP=0'
test('cabal06', test('cabal06',
normal, extra_files(['Setup.hs', 'p-1.0/', 'p-1.1/', 'q/', 'r/']),
run_command, run_command,
['$MAKE -s --no-print-directory cabal06 ' + cleanup]) ['$MAKE -s --no-print-directory cabal06 ' + cleanup])
...@@ -4,6 +4,6 @@ else: ...@@ -4,6 +4,6 @@ else:
cleanup = 'CLEANUP=0' cleanup = 'CLEANUP=0'
test('cabal08', test('cabal08',
normal, extra_files(['Main.hs', 'Setup.hs', 'p1/', 'p2/']),
run_command, run_command,
['$MAKE -s --no-print-directory cabal08 ' + cleanup]) ['$MAKE -s --no-print-directory cabal08 ' + cleanup])
...@@ -4,6 +4,6 @@ else: ...@@ -4,6 +4,6 @@ else:
cleanup = 'CLEANUP=0' cleanup = 'CLEANUP=0'
test('cabal09', test('cabal09',
normal, extra_files(['Main.hs', 'Setup.hs', 'reexport.cabal']),
run_command, run_command,
['$MAKE -s --no-print-directory cabal09 ' + cleanup]) ['$MAKE -s --no-print-directory cabal09 ' + cleanup])
...@@ -3,4 +3,4 @@ ...@@ -3,4 +3,4 @@
# separate packages are allowed). Now it is a straightforward test # separate packages are allowed). Now it is a straightforward test
# for shadowing: the local Foreign module shadows the base package # for shadowing: the local Foreign module shadows the base package
# one. # one.
test('pkg02', [], multimod_compile, ['A', '-v0']) test('pkg02', [extra_files(['A.hs', 'Foreign.hs'])], multimod_compile, ['A', '-v0'])
...@@ -70,7 +70,7 @@ test('cgrun063', normal, compile_and_run, ['']) ...@@ -70,7 +70,7 @@ test('cgrun063', normal, compile_and_run, [''])
test('cgrun064', normal, compile_and_run, ['']) test('cgrun064', normal, compile_and_run, [''])
test('cgrun065', normal, compile_and_run, ['']) test('cgrun065', normal, compile_and_run, [''])
test('cgrun066', normal, compile_and_run, ['']) test('cgrun066', normal, compile_and_run, [''])
test('cgrun067', [], compile_and_run, ['']) test('cgrun067', [extra_files(['Cgrun067A.hs'])], compile_and_run, [''])
test('cgrun068', reqlib('random'), compile_and_run, ['']) test('cgrun068', reqlib('random'), compile_and_run, [''])
test('cgrun069', omit_ways(['ghci']), multi_compile_and_run, test('cgrun069', omit_ways(['ghci']), multi_compile_and_run,
['cgrun069', [('cgrun069_cmm.cmm', '')], '']) ['cgrun069', [('cgrun069_cmm.cmm', '')], ''])
......
...@@ -12,5 +12,6 @@ ...@@ -12,5 +12,6 @@
# multiple cores, which is why it is only running the 'threaded2' way # multiple cores, which is why it is only running the 'threaded2' way
# right now. --SDM 1/4/2010 # right now. --SDM 1/4/2010
test('concprog001', [when(fast(), skip), only_ways(['threaded2'])], test('concprog001', [extra_files(['Arithmetic.hs', 'Converter.hs', 'Mult.hs', 'Stream.hs', 'Thread.hs', 'Trit.hs', 'Utilities.hs']),
when(fast(), skip), only_ways(['threaded2'])],
multimod_compile_and_run, ['Mult', '']) multimod_compile_and_run, ['Mult', ''])
...@@ -10,6 +10,7 @@ else: ...@@ -10,6 +10,7 @@ else:
# hence -O0: # hence -O0:
test('concprog002', test('concprog002',