Fix windows support, add report at end of tests

multiline-output
drunkendog 2023-09-12 16:15:52 +01:00
parent a6f0191b0a
commit b9450da442
1 changed files with 7 additions and 2 deletions

View File

@ -21,11 +21,16 @@ for file_name in glob.glob("*.c", recursive=False):
should_continue = input(f"{file_name}; run (y/N)? ").lower() should_continue = input(f"{file_name}; run (y/N)? ").lower()
if should_continue != "y": if should_continue != "y":
continue continue
subprocess.run(["gcc", "-std=c11", "-Wall", "-g", file_name], check=True) subprocess.run(["gcc", "-o", "a.out", "-std=c11", "-Wall", "-g", file_name], check=True)
with open(next(x for x in file_list if file_name.rstrip(".c") in x)) as f: with open(next(x for x in file_list if file_name.rstrip(".c") in x)) as f:
to_run = f.read().split("\n\n") to_run = f.read().split("\n\n")
total_tests, passed_tests = 0, 0
for x in to_run: for x in to_run:
x_split = x.split("\n") x_split = x.split("\n")
return_data = subprocess.run(["./a.out"], input=x_split[0].rstrip().encode(), capture_output=True).stdout.decode().rstrip() return_data = subprocess.run(["./a.out"], input=x_split[0].rstrip().encode(), capture_output=True).stdout.decode().rstrip()
print(f"\u001b[{31 + int(return_data == x_split[1].rstrip())}m{return_data}\u001b[0m", x_split[1]) test_passed_int = int(return_data == x_split[1].rstrip())
total_tests += 1
passed_tests += test_passed_int
print(f"\u001b[{31 + test_passed_int}m{return_data}\u001b[0m", x_split[1])
print(f"\u001b[32m{passed_tests} tests passed\u001b[0m, \u001b[{31 - 31*int(total_tests == passed_tests)}m{total_tests - passed_tests} tests failed\u001b[0m")
os.remove("a.out") os.remove("a.out")