about summary refs log tree commit diff stats
diff options
context:
space:
mode:
authorChristian Krinitsin <christian.krinitsin@iqmine.de>2025-04-08 15:31:14 +0200
committerChristian Krinitsin <christian.krinitsin@iqmine.de>2025-04-08 15:31:14 +0200
commit07741cdf203e3a7e339ef0b65c43107ac83877f0 (patch)
tree85d888ea1eb17daaa053308844344ac3a5ede10a
parentab279cd88d6367f3572dd244d50b04dcebfff099 (diff)
downloadtestreport-07741cdf203e3a7e339ef0b65c43107ac83877f0.tar.gz
testreport-07741cdf203e3a7e339ef0b65c43107ac83877f0.zip
add a cli to give the path of the executable and pipe the results to csv-parser
-rw-r--r--.gitignore3
-rw-r--r--create_report.py10
-rw-r--r--parse_data.py42
3 files changed, 46 insertions, 9 deletions
diff --git a/.gitignore b/.gitignore
index c5e2afa..58420ae 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,2 +1,3 @@
 report.html
-__pycache__
\ No newline at end of file
+__pycache__
+*.exe
\ No newline at end of file
diff --git a/create_report.py b/create_report.py
index 107f62c..c70b094 100644
--- a/create_report.py
+++ b/create_report.py
@@ -1,6 +1,12 @@
-from parse_data import data, stats
-
+from parse_data import parse_data
 from jinja2 import Environment, FileSystemLoader
+import argparse
+
+parser = argparse.ArgumentParser(prog='test_report_manager')
+parser.add_argument('executable', help="executable to parse")
+args = parser.parse_args()
+
+data, stats = parse_data(args.executable)
 
 # Load the template from the current directory
 env = Environment(loader=FileSystemLoader('.'))
diff --git a/parse_data.py b/parse_data.py
index 16b7bd9..8c56c90 100644
--- a/parse_data.py
+++ b/parse_data.py
@@ -1,4 +1,6 @@
 import csv
+import subprocess
+import io
 
 class Test:
     def __init__(self, number: int, description: str):
@@ -43,13 +45,18 @@ def find_category_in_data(name: str, data: list[Category]) -> int:
             return index
     return -1 
 
-data = [] # List of Category objects
+def parse_data(program_name: str):
+    data = [] # List of Category objects
+    process = subprocess.Popen(['HVSensorTest.exe'], stdout=subprocess.PIPE, stderr=subprocess.PIPE)
+    stdout, stderr = process.communicate()
 
-# Define the CSV filename
-csv_filename = "data.csv"
+    if stderr:
+        print("Error:", stderr.decode())
 
-with open(csv_filename, mode="r", encoding="utf-8") as file:
-    csv_reader = csv.DictReader(file)  # Reads as a dictionary
+    stdout_str = stdout.decode()
+    stdout_file = io.StringIO(stdout_str)
+
+    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()
 
@@ -60,4 +67,27 @@ with open(csv_filename, mode="r", encoding="utf-8") as file:
         else:
             category = data[index]
 
-        category.add_test(log_type, number, timestamp, test_description, fail_message)
\ No newline at end of file
+        category.add_test(log_type, number, timestamp, test_description, fail_message)
+            
+    # Final test statistics
+    stats = {
+        "failed": False,
+        "number_tests": 0,
+        "number_passed": 0,
+        "percentage_passed": 0,
+        "number_failed": 0,
+        "percentage_failed": 0,
+    }
+
+    for category in data:
+        if category.failed:
+            stats["number_failed"] = stats["number_failed"] + 1
+            stats["failed"] = True
+        else:
+            stats["number_passed"] = stats["number_passed"] + 1
+
+    stats["number_tests"] = len(data)
+    stats["percentage_passed"] = round((stats["number_passed"] / len(data)) * 100, 1)
+    stats["percentage_failed"] = 100 - stats["percentage_passed"]
+    
+    return data, stats
\ No newline at end of file