aboutsummaryrefslogtreecommitdiff
path: root/automated/linux/kvm-unit-tests/parse-output.py
diff options
context:
space:
mode:
Diffstat (limited to 'automated/linux/kvm-unit-tests/parse-output.py')
-rwxr-xr-xautomated/linux/kvm-unit-tests/parse-output.py68
1 files changed, 68 insertions, 0 deletions
diff --git a/automated/linux/kvm-unit-tests/parse-output.py b/automated/linux/kvm-unit-tests/parse-output.py
new file mode 100755
index 00000000..5d433a66
--- /dev/null
+++ b/automated/linux/kvm-unit-tests/parse-output.py
@@ -0,0 +1,68 @@
+#!/usr/bin/env python3
+import sys
+import re
+
+
+def parse_line(line):
+ """
+ Parses a single line of input to extract the test result and description.
+
+ Args:
+ line (str): A single line of input.
+
+ Returns:
+ tuple: A tuple containing the result and description.
+ """
+
+ if not line.startswith("ok") and not line.startswith("not ok"):
+ return None, None
+
+ parts = re.split(r" \d+ - ", line)
+ if len(parts) < 2:
+ raise ValueError(f"Invalid line format: {line}")
+
+ result = "pass" if parts[0] == "ok" else "fail"
+ description = parts[1].strip()
+
+ if "# skip" in description.lower():
+ result = "skip"
+ description = description.split("# skip")[0].strip()
+
+ return result, description
+
+
+def sanitize_description(description):
+ """
+ Sanitizes the description by replacing spaces with dashes, removing special characters, and avoiding double dashes.
+
+ Args:
+ description (str): The test description.
+
+ Returns:
+ str: The sanitized description.
+ """
+ description = description.replace(" ", "-")
+ description = re.sub(r"[^a-zA-Z0-9_-]+", "", description) # Slugify
+ description = re.sub(
+ r"-+", "-", description
+ ) # Replace multiple dashes with a single dash
+ return description
+
+
+def main():
+ """
+ Main function to parse input, process each line, and output the results.
+ """
+ lines = sys.stdin.readlines()
+
+ for line in lines:
+ result, description = parse_line(line)
+
+ if not result or not description:
+ continue
+
+ print(f"{sanitize_description(description)} {result}")
+
+
+if __name__ == "__main__":
+ main()