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

import subprocess import subprocess
import sys import sys



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




) )
if res.returncode != 0: if res.returncode != 0:
print('- FAILED') 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: else:
print('- PASSED') print('- PASSED')
return res.returncode == 0 return res.returncode == 0
return ret 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: def main(argv: List[str]) -> int:
parser = argparse.ArgumentParser() parser = argparse.ArgumentParser()
parser.add_argument( parser.add_argument(
help='The ddslim toolchain to use while testing', help='The ddslim toolchain to use while testing',
required=True, required=True,
) )
parser.add_argument(
'--skip-bootstrap-test',
action='store_true',
help='Skip the self-bootstrap test',
)
args = parser.parse_args(argv) args = parser.parse_args(argv)


opts = TestOptions(exe=Path(args.exe).absolute(), toolchain=args.toolchain) 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) return run_tests(opts)





Loading…
Cancel
Save