Browse Source

Test that ddslim can build itself

default_compile_flags
vector-of-bool 5 years ago
parent
commit
2b117d40ae
1 changed files with 27 additions and 2 deletions
  1. +27
    -2
      tools/test.py

+ 27
- 2
tools/test.py View File

@@ -6,7 +6,6 @@ import shutil
import subprocess
import sys


ROOT = Path(__file__).parent.parent.absolute()


@@ -37,7 +36,8 @@ def run_test_dir(dir: Path, opts: TestOptions) -> bool:
)
if res.returncode != 0:
print('- FAILED')
print(f'Test failed with exit code [{res.returncode}]:\n{res.stdout.decode()}')
print(f'Test failed with exit code '
f'[{res.returncode}]:\n{res.stdout.decode()}')
else:
print('- PASSED')
return res.returncode == 0
@@ -56,6 +56,23 @@ def run_tests(opts: TestOptions) -> int:
return ret


def bootstrap_self(opts: TestOptions):
# Copy the exe to another location, as windows refuses to let a binary be
# replaced while it is executing
new_exe = ROOT / '_ddslime.bootstrap-test.exe'
shutil.copy2(opts.exe, new_exe)
res = subprocess.run([
str(new_exe),
'build',
f'-FT{opts.toolchain}',
])
if res.returncode != 0:
print('The bootstrap test failed!', file=sys.stderr)
return False
print('Bootstrap test PASSED!')
return True


def main(argv: List[str]) -> int:
parser = argparse.ArgumentParser()
parser.add_argument(
@@ -69,10 +86,18 @@ def main(argv: List[str]) -> int:
help='The ddslim toolchain to use while testing',
required=True,
)
parser.add_argument(
'--skip-bootstrap-test',
action='store_true',
help='Skip the self-bootstrap test',
)
args = parser.parse_args(argv)

opts = TestOptions(exe=Path(args.exe).absolute(), toolchain=args.toolchain)

if not args.skip_bootstrap_test and not bootstrap_self(opts):
return 2

return run_tests(opts)



Loading…
Cancel
Save