|
- #!/usr/bin/env python3
- import argparse
- from pathlib import Path
- from typing import List, NamedTuple
- import subprocess
- import sys
-
-
- class TestOptions(NamedTuple):
- exe: Path
- toolchain: str
-
-
- def run_test_dir(dir: Path, opts: TestOptions) -> bool:
- try:
- subprocess.check_call(
- [
- str(opts.exe),
- 'build',
- '--export',
- '--warnings',
- '--tests',
- '--toolchain',
- opts.toolchain,
- ],
- cwd=dir,
- )
- except subprocess.CalledProcessError:
- import traceback
- traceback.print_exc()
- return False
- return True
-
-
- def run_tests(opts: TestOptions) -> int:
- print('Sanity check...')
- subprocess.check_output([str(opts.exe), '--help'])
- tests_subdir = Path(__file__).parent.absolute() / 'tests'
-
- test_dirs = tests_subdir.glob('*.test')
- ret = 0
- for td in test_dirs:
- if not run_test_dir(td, opts):
- ret = 1
- return ret
-
-
- def main(argv: List[str]) -> int:
- parser = argparse.ArgumentParser()
- parser.add_argument(
- '--exe',
- '-e',
- help='Path to the ddslim executable to test',
- required=True)
- parser.add_argument(
- '--toolchain',
- '-T',
- help='The ddslim toolchain to use while testing',
- required=True,
- )
- args = parser.parse_args(argv)
-
- opts = TestOptions(exe=Path(args.exe).absolute(), toolchain=args.toolchain)
-
- return run_tests(opts)
-
-
- if __name__ == "__main__":
- sys.exit(main(sys.argv[1:]))
|