diff options
author | David Robillard <d@drobilla.net> | 2025-01-30 14:36:04 -0500 |
---|---|---|
committer | David Robillard <d@drobilla.net> | 2025-01-30 15:51:01 -0500 |
commit | c6cb174e7085cd2a41ed0ab74bbcbd7963e68d9d (patch) | |
tree | d8c7ae3f1de156f95bbc5c2fc06d527f3dc446b3 /test/run_suite.py | |
parent | e7a120cddc8a72cfcc264c4cd83a0911d352e0a2 (diff) | |
download | serd-c6cb174e7085cd2a41ed0ab74bbcbd7963e68d9d.tar.gz serd-c6cb174e7085cd2a41ed0ab74bbcbd7963e68d9d.tar.bz2 serd-c6cb174e7085cd2a41ed0ab74bbcbd7963e68d9d.zip |
Fix handling of some invalid EOF cases in lax mode
The return status of these tests unfortunately isn't consistent, so instead of
testing for an exact exit status, instead check that the return status doesn't
seem to be an abort() or other signal code (which are negative on Linux, while
serdi itself never exits with a negative status).
Diffstat (limited to 'test/run_suite.py')
-rwxr-xr-x | test/run_suite.py | 11 |
1 files changed, 8 insertions, 3 deletions
diff --git a/test/run_suite.py b/test/run_suite.py index 2e93502f..3811a74e 100755 --- a/test/run_suite.py +++ b/test/run_suite.py @@ -58,7 +58,7 @@ def run_positive_test(base_uri, command, in_path): return True -def run_negative_test(base_uri, command, in_path): +def run_negative_test(base_uri, command, in_path, ignore): """Run a negative syntax test and return whether the error was detected.""" if not os.path.exists(in_path): @@ -67,10 +67,14 @@ def run_negative_test(base_uri, command, in_path): command = command + [in_path, base_uri] proc = subprocess.run(command, check=False, stderr=PIPE, stdout=DEVNULL) - if proc.returncode == 0: + if not ignore and proc.returncode == 0: util.error("Unexpected successful return: " + in_path) return False + if proc.returncode < 0: + util.error("Command seems to have crashed: " + in_path) + return False + if len(proc.stderr) == 0: util.error("Command failed with no error output: " + in_path) return False @@ -86,7 +90,7 @@ def run_entry(args, entry, command, out_dir, suite_dir): negative = "Negative" in entry[NS_RDF + "type"][0] if negative and not args.lax: - return run_negative_test(base, command, in_path) + return run_negative_test(base, command, in_path, args.ignore) if NS_MF + "result" not in entry: return run_positive_test(base, command, in_path) @@ -151,6 +155,7 @@ def main(): ) parser.add_argument("--asserter", help="asserter URI for test report") + parser.add_argument("--ignore", action="store_true", help="ignore status") parser.add_argument("--lax", action="store_true", help="tolerate errors") parser.add_argument("--report", help="path to write result report to") parser.add_argument("--reverse", action="store_true", help="reverse test") |