Commit d55dedef authored by Jan Kiene's avatar Jan Kiene
Browse files

add script for running sanitizer tests

parent d9c92338
Loading
Loading
Loading
Loading
+70 −0
Original line number Diff line number Diff line
#!/usr/bin/env python3

import argparse
import sys
import subprocess
import pathlib


DURATION = "120"
CFG = "ci_linux.json"
TESTS = [ "CLANG1", "CLANG2" ]
TESTS = [ "CLANG2" ]
EP_FILE = "ep_015.g192"

SCRIPT_DIR = pathlib.Path("./scripts").resolve()

def main(args):
	in_format = args.in_format
	out_formats = args.out_formats

	modes = get_modes(in_format)
	returncode = run_check(modes, out_formats)

	sys.exit(returncode)


def get_modes(in_format: str) -> list:
	cmd = [SCRIPT_DIR.joinpath("runIvasCodec.py"), "-l"]
	list_process = subprocess.run(cmd, capture_output=True)

	output = list_process.stdout.decode("utf8")
	return [m for m in output.splitlines() if in_format in m]


def run_check(modes: list, out_formats: list):
	cmd = [
		SCRIPT_DIR.joinpath("IvasBuildAndRunChecks.py"),
		"-U",
		DURATION,
		"-p",
		CFG,
		"--checks",
		*TESTS,
		"-m",
		*modes,
		"--oc",
		*out_formats
	]

	proc = subprocess.Popen(cmd, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
	for c in iter(lambda: proc.stdout.read(1), b""):
		sys.stdout.buffer.write(c)
	proc.wait()

	if proc.returncode not in [0, 101]:
		raise IvasBuildAndRunFailed()

	return proc.returncode


class IvasBuildAndRunFailed(Exception):
	pass


if __name__ == "__main__":
	parser = argparse.ArgumentParser()
	parser.add_argument("in_format", type=str)
	parser.add_argument("out_formats", type=str, nargs="+")

	sys.exit(main(parser.parse_args()))
 No newline at end of file