diff options
| author | Christian Krinitsin <christian.krinitsin@iqmine.de> | 2025-04-09 11:05:00 +0200 |
|---|---|---|
| committer | Christian Krinitsin <christian.krinitsin@iqmine.de> | 2025-04-09 11:05:00 +0200 |
| commit | 3daccddb962cbe22a5ab88aadc26fe4c6284578c (patch) | |
| tree | 2bd2f3369f13ba71c20f31f538517ee85370ccaa | |
| parent | 4350fb1365f0be5c9972f8ca0ec000e6ed220752 (diff) | |
| download | testreport-3daccddb962cbe22a5ab88aadc26fe4c6284578c.tar.gz testreport-3daccddb962cbe22a5ab88aadc26fe4c6284578c.zip | |
add support for csv input files
| -rw-r--r-- | create_report.py | 6 | ||||
| -rw-r--r-- | parse_data.py | 23 |
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() |