diff options
| author | Charles <sircharlesaze@gmail.com> | 2019-11-24 01:04:21 +0100 |
|---|---|---|
| committer | Charles <sircharlesaze@gmail.com> | 2019-11-24 01:04:21 +0100 |
| commit | 5a47d63887a0878243b17799b19c4a0f76d3756d (patch) | |
| tree | 72da1070587a0cd5c0a9599f6aacf8d4cb15b9c2 /prettier.py | |
| parent | 97e84015b635cf51d32b00000dc3fa25390251b4 (diff) | |
| download | libasm_test-5a47d63887a0878243b17799b19c4a0f76d3756d.tar.gz libasm_test-5a47d63887a0878243b17799b19c4a0f76d3756d.tar.bz2 libasm_test-5a47d63887a0878243b17799b19c4a0f76d3756d.zip | |
ft_write.s, ft_read.s, ft_strdup.s tests and prettier
Diffstat (limited to 'prettier.py')
| -rw-r--r-- | prettier.py | 86 |
1 files changed, 86 insertions, 0 deletions
diff --git a/prettier.py b/prettier.py new file mode 100644 index 0000000..ce8a839 --- /dev/null +++ b/prettier.py @@ -0,0 +1,86 @@ +import os +import sys +import re +import argparse + + +def green(*strings): + return "".join([f"\033[32m{s}\033[0m" for s in strings]) + + +def red(*strings): + return "".join([f"\033[31m{s}\033[0m" for s in strings]) + + +def parse_args(): + parser = argparse.ArgumentParser( prog="ft_printf test", description="A ~quicker tester for ft_printf") + parser.add_argument("-v", "--verbose", + help="increase verbosity", action="store_true") + parser.add_argument("-q", "--quiet", + help="decrease vebosity", action="store_true") + parser.add_argument("-l", "--no-log", + help="disable result log", action="store_true") + parser.add_argument("-c", "--no-clear", help="disable terminal clear before output") + parser.add_argument("-i", "--interactive", help="print fail as them come", + action="store_true") + parser.add_argument("-f", "--output-file", help="output file name") + return vars(parser.parse_args(sys.argv[1:])) + + +def print_log_ko(ko, options): + print(f"- [{red(ko['type'])}] ft_printf({ko['args']})") + if options["verbose"]: + print(" expected: ", ko["expected"]) + print(" actual: ", ko["actual"]) + print() + +def create_logs_entry(logs, key): + logs[key] = {} + logs[key]["ok_counter"] = 0 + logs[key]["ko_counter"] = 0 + logs[key]["ko_info"] = [] + +def parse(): + logs = {} + for line in sys.stdin: + line = line.strip() + if line[:2] == "OK": + l = logs.get(line[4:]) + if l is None: + print("\n\n", line[4:], ": ", sep="", end="") + create_logs_entry(logs, line[4:]) + logs[line[4:]]["ok_counter"] += 1 + if (logs[line[4:]]["ok_counter"] + logs[line[4:]]["ko_counter"]) % 10 == 0: + print("\n", ''.join([" " for _ in range(1 + len(line[4:]))]), end="") + print(green("[OK] "), end="") + continue + m = re.search("^KO: \[(SEGFAULT|COMPARE)\]: (.*): expected: (.*) got: (.*)$", line) + if m is None: + print(line) + print("PARSING ERROR") + continue + l = logs.get(m.group(2)) + if l is None: + print("\n") + create_logs_entry(logs, m.group(2)) + l["ko_counter"] += 1 + l["ko_info"].append({ + "type": m.group(1), + "expected": m.group(3), + "actual": m.group(4), + }) + if (l["ok_counter"] + l["ko_counter"]) % 10 == 0: + print("\n", ''.join([" " for _ in range(1 + len(m.group(2)))]), end="") + print(red("[KO] "), end="") + return logs + +if __name__ == "__main__": + os.system("clear") + logs = parse() + print("\n") + for k, v in logs.items(): + for e in v["ko_info"]: + if e['type'] == "SEGFAULT": + print(f"{k} : {red(SEGFAULT)}") + elif e['type'] == "COMPARE": + print(f"{k}:\n {green('expected: ', e['expected'])}\n {red('actual: ', e['actual'])}") |
