From 5d35b1a34d5c8baa70c87a3f485a9e36f7a36746 Mon Sep 17 00:00:00 2001 From: Alasdair Date: Thu, 25 Jul 2024 22:43:53 +0100 Subject: [PATCH] Add some extra test cases --- test/typecheck/project/fail_simple.expect | 13 +++++++++++++ test/typecheck/project/fail_simple.sail_project | 8 ++++++++ .../project/submodules_include.sail_project | 11 +++++++++++ test/typecheck/run_tests.py | 10 ++++++++-- 4 files changed, 40 insertions(+), 2 deletions(-) create mode 100644 test/typecheck/project/fail_simple.expect create mode 100644 test/typecheck/project/fail_simple.sail_project create mode 100644 test/typecheck/project/submodules_include.sail_project diff --git a/test/typecheck/project/fail_simple.expect b/test/typecheck/project/fail_simple.expect new file mode 100644 index 000000000..f837e4cec --- /dev/null +++ b/test/typecheck/project/fail_simple.expect @@ -0,0 +1,13 @@ +Type error: +project/simple/bmod.sail:3.18-23: +3 |function main() = hello() +  | ^---^ +  | Not in scope +  | +  | Try requiring module A to bring the following into scope for module B: +  | project/simple/amod.sail:5.4-9: +  | 5 |val hello : unit -> unit +  |  | ^---^ definition here in A +  | project/fail_simple.sail_project:6.0-1: +  | 6 |B { +  |  |^ add 'requires A' within B here diff --git a/test/typecheck/project/fail_simple.sail_project b/test/typecheck/project/fail_simple.sail_project new file mode 100644 index 000000000..89de6c221 --- /dev/null +++ b/test/typecheck/project/fail_simple.sail_project @@ -0,0 +1,8 @@ + +A { + files simple/amod.sail +} + +B { + files simple/bmod.sail +} diff --git a/test/typecheck/project/submodules_include.sail_project b/test/typecheck/project/submodules_include.sail_project new file mode 100644 index 000000000..726e19821 --- /dev/null +++ b/test/typecheck/project/submodules_include.sail_project @@ -0,0 +1,11 @@ + +A { + ASub { + files simple/amod.sail + } +} + +B { + requires A + files simple/bmod.sail +} diff --git a/test/typecheck/run_tests.py b/test/typecheck/run_tests.py index d07bbc62c..622bb9b3f 100755 --- a/test/typecheck/run_tests.py +++ b/test/typecheck/run_tests.py @@ -55,14 +55,20 @@ def test_pass(): return results.finish() def test_projects(): - banner('Testing passing projects') + banner('Testing multi-file projects') results = Results('projects') for filenames in project_chunks(os.listdir('project'), parallel()): tests = {} for filename in filenames: + basename = os.path.splitext(os.path.basename(filename))[0] tests[filename] = os.fork() if tests[filename] == 0: - step('{} --no-memo-z3 project/{} --all-modules'.format(sail, filename)) + if filename.startswith('fail'): + step('{} --no-memo-z3 project/{} --all-modules 2> project/{}.error'.format(sail, filename, basename), expected_status = 1) + step('diff project/{}.error project/{}.expect'.format(basename, basename)) + step('rm project/{}.error'.format(basename)) + else: + step('{} --no-memo-z3 project/{} --all-modules'.format(sail, filename)) print_ok(filename) sys.exit() results.collect(tests)