marmoset-test-cases/run-tests.py

27 lines
1.1 KiB
Python
Raw Normal View History

2023-09-11 20:51:15 +01:00
#!/bin/python3
import glob
import subprocess
import os
2023-09-12 13:24:27 +01:00
import sys
2023-09-11 20:51:15 +01:00
# will break if there are namespace collisions
2023-09-12 13:49:39 +01:00
file_list = glob.glob(f"{os.path.dirname(__file__)}/**/*.cases", recursive=True)
file_only_list = [os.path.basename(x.rstrip(".cases")) for x in file_list]
2023-09-11 20:51:15 +01:00
2023-09-12 13:24:27 +01:00
if sys.platform == "win32":
2023-09-12 13:30:10 +01:00
os.system("color") # enables ANSI escape characters, bug in Python
2023-09-12 13:24:27 +01:00
2023-09-11 20:51:15 +01:00
for file_name in glob.glob("*.c", recursive=False):
if file_name.rstrip(".c") in file_only_list:
should_continue = input(f"{file_name}; run (y/N)?").lower()
2023-09-12 13:31:53 +01:00
if should_continue != "y":
2023-09-11 20:51:15 +01:00
continue
subprocess.run(["gcc", "-std=c11", "-Wall", "-g", file_name], check=True)
2023-09-12 13:49:39 +01:00
with open(next(x for x in file_list if file_name.rstrip(".c") in x)) as f:
2023-09-11 20:51:15 +01:00
to_run = f.read().split("\n\n")
2023-09-12 13:58:13 +01:00
for x in to_run.split():
return_data = subprocess.run(["./a.out"], input=x[0].rstrip().encode(), capture_output=True).stdout.decode()
2023-09-12 13:53:02 +01:00
print(f"\u001b[{31 + int(return_data.rstrip() == x[1].rstrip())}m{return_data}\u001b[0m", x[1])