about summary refs log tree commit diff stats
diff options
context:
space:
mode:
authorChristian Krinitsin <christian.krinitsin@iqmine.de>2025-04-09 11:05:00 +0200
committerChristian Krinitsin <christian.krinitsin@iqmine.de>2025-04-09 11:05:00 +0200
commit3daccddb962cbe22a5ab88aadc26fe4c6284578c (patch)
tree2bd2f3369f13ba71c20f31f538517ee85370ccaa
parent4350fb1365f0be5c9972f8ca0ec000e6ed220752 (diff)
downloadtestreport-3daccddb962cbe22a5ab88aadc26fe4c6284578c.tar.gz
testreport-3daccddb962cbe22a5ab88aadc26fe4c6284578c.zip
add support for csv input files
-rw-r--r--create_report.py6
-rw-r--r--parse_data.py23
2 files changed, 19 insertions, 10 deletions
diff --git a/create_report.py b/create_report.py
index 9d7cb57..04b44b7 100644
--- a/create_report.py
+++ b/create_report.py
@@ -4,11 +4,13 @@ import argparse
 import sys
 
 parser = argparse.ArgumentParser(prog=sys.argv[0])
-parser.add_argument('exe_path', help="executable to parse")
+parser.add_argument('input_path', help="input to parse")
 parser.add_argument('-o', '--out', help="output file (default: report.html)", default="report.html")
+parser.add_argument('-c', '--csv', help="Flag: the input file is a csv and NOT an executable", action='store_true')
+
 args = parser.parse_args()
 
-data, stats = parse_data(args.executable)
+data, stats = parse_data(args.input_path, args.csv)
 
 # Load the template from the current directory
 env = Environment(loader=FileSystemLoader('.'))
diff --git a/parse_data.py b/parse_data.py
index 94d7f79..ac75bd5 100644
--- a/parse_data.py
+++ b/parse_data.py
@@ -45,17 +45,24 @@ def find_category_in_data(name: str, data: list[Category]) -> int:
             return index
     return -1 
 
-def parse_data(program_path: str):
-    data = [] # List of Category objects
-    process = subprocess.Popen([program_path], stdout=subprocess.PIPE, stderr=subprocess.PIPE)
-    stdout, stderr = process.communicate()
+def read_input(path: str, is_csv: bool):
+    if is_csv:
+        with open(path, 'r') as fd:
+            return io.StringIO(fd.read())
+    else:
+        process = subprocess.Popen([path], stdout=subprocess.PIPE, stderr=subprocess.PIPE)
+        stdout, stderr = process.communicate()
+
+        if stderr:
+            print("Error:", stderr.decode())
 
-    if stderr:
-        print("Error:", stderr.decode())
+        stdout_str = stdout.decode()
+        return io.StringIO(stdout_str)
 
-    stdout_str = stdout.decode()
-    stdout_file = io.StringIO(stdout_str)
+def parse_data(path: str, is_csv: bool):
+    data = [] # List of Category objects
 
+    stdout_file = read_input(path, is_csv)
     csv_reader = csv.DictReader(stdout_file) # Rows are dictionaries
     for row in csv_reader:
         log_type, timestamp, category_name, number, test_description, fail_message = row.values()