mirror of
https://github.com/splunk/security_content
synced 2026-06-08 17:32:49 +00:00
65 lines
2.7 KiB
Python
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() |