Files
2024-07-24 17:04:57 -05:00

65 lines
2.7 KiB
Python

"""
A simple script formatting test_results/summary.yml to display on github actions
"""
import yaml
import re
import os
import sys
def main():
# Define the path to the YAML file
# yaml_file_path = 'summary.yml'
yaml_file_path = '/home/runner/work/security_content/security_content/test_results/summary.yml'
# Check if the YAML file exists
if not os.path.exists(yaml_file_path):
print(f"Error: The file {yaml_file_path} does not exist.")
exit(1) # Exit with an error code
# Load the YAML file
with open(yaml_file_path, 'r') as file:
data = yaml.safe_load(file)
# Extract total_fail value and debug print it
total_fail = data['summary']['total_fail']
total_detections = data['summary']['total_detections']
print("**Download the job artifacts of this run and view complete summary in test_results/summary.yml for troubleshooting failures.**\n")
print(" 📝 **Experimental or manual_test detections are not tested** 📝 **\n")
print(f"Extracted total_fail: [{total_fail}]\n")
# Print all unit test details first
print(" 🏗️⚒️ **Unit Test Details:**\n")
print(f"{'Name':<80} | {'Status':<6} | {'Test Type':<10} | {'Exception':<50}")
print(f"{'----':<80} | {'------':<6} | {'---------':<10} | {'---------':<50}")
for detection in data['tested_detections']:
for test in detection['tests']:
if test['test_type'].strip() == "unit": # Check if the test type is "unit"
name = (detection.get('name') or 'N/A').strip()
status = 'PASS' if test.get('success') else 'FAIL'
test_type = (test.get('test_type') or 'N/A').strip()
exception = (test.get('exception') or 'N/A') # Get exception if exists, else 'N/A'
if status == 'FAIL':
print(f"{name:<80} | 🔴 {status:<6} | {test_type:<10} | {exception:<50}")
else:
print(f"{name:<80} | 🟢 {status:<6} | {test_type:<10} | {'-':<50}")
# Check if total_fail is a valid integer and greater than or equal to one
print("\n") # Print a newline for separation
print("**Overall Status**")
print("-------------------------------")
# Continue with additional prints or other logic
if int(total_fail) >=1:
# Print the message in bold
print("🔴 - **CI Failure: There are failed tests.**\n\n")
sys.exit(1)
if int(total_fail) < 1:
print("🟢 - **CI Success: No failed tests.**\n\n")
sys.exit(0)
if int(total_detections) < 1:
print("🔵 - **CI Success: No detections to test**\n\n")
sys.exit(0)
if __name__ == "__main__":
main()