aboutsummaryrefslogtreecommitdiff
path: root/prettier.py
diff options
context:
space:
mode:
Diffstat (limited to 'prettier.py')
-rw-r--r--prettier.py47
1 files changed, 38 insertions, 9 deletions
diff --git a/prettier.py b/prettier.py
index f12978f..9425f80 100644
--- a/prettier.py
+++ b/prettier.py
@@ -1,19 +1,33 @@
import sys
+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("-f", "--output-file", help="output file name")
+ return vars(parser.parse_args(sys.argv[1:]))
+
+
def parse():
logs = {
"ok": 0,
"ko": 0,
"ko_info": []
}
-
for line in sys.stdin:
line = line.strip()
if line.find("[OK]") != -1:
@@ -31,22 +45,37 @@ def parse():
return logs
-# def write_logs(logs):
+def write_logs(logs, options):
+ filename = "result.log"
+ if options["output_file"] is not None:
+ filename = options["output_file"]
+ with open(filename, "w") as log_file:
+ for ko in logs["ko_info"]:
+ log_file.write("- " + ko["msg"] + "\n")
+ log_file.write(" " + ko["expected"] + "\n")
+ log_file.write(" " + ko["actual"] + "\n\n")
+
-def print_logs(logs):
+def print_logs(logs, options):
total_str = f"\n\nTotal {green('OK: ', logs['ok'])} {red('KO: ', logs['ko'])}"
print(total_str)
print("=" * (len(total_str) - len(green("")) * 2 - len(red("")) * 2 - 2))
+ if options["quiet"]:
+ return
for ko in logs["ko_info"]:
- print(ko["msg"])
- print(" ", ko["expected"])
- print(" ", ko["actual"])
- print()
+ print("-", ko["msg"])
+ if options["verbose"]:
+ print(" ", ko["expected"])
+ print(" ", ko["actual"])
+ print()
+ print("\nSee result.log for more information\n")
if __name__ == "__main__":
print()
+ options = parse_args()
logs = parse()
- # write_logs(logs)
- print_logs(logs)
+ print_logs(logs, options)
+ if not options["no_log"]:
+ write_logs(logs, options)