Update json_to_md.py
This commit is contained in:
+49
-23
@@ -70,35 +70,61 @@ def json_to_md_nested(json_path, md_path, allure_dir=None):
|
||||
f.write("\n")
|
||||
|
||||
if "collectors" in data:
|
||||
f.write("## 📚 Collectés (Arborescence)\n")
|
||||
f.write("## 📚 Collectors (Arborescence)\n")
|
||||
|
||||
# 1. Structurer les données
|
||||
collector_tree = defaultdict(lambda: {
|
||||
'files': defaultdict(list),
|
||||
'outcome': None,
|
||||
'result': None
|
||||
})
|
||||
|
||||
# 1. Construire l'arborescence
|
||||
tree = defaultdict(lambda: defaultdict(list))
|
||||
for collector in data["collectors"]:
|
||||
nodeid = collector.get("nodeid", "unknown")
|
||||
outcome = collector.get("outcome", "unknown")
|
||||
result = collector.get("result", [])
|
||||
parts = nodeid.split("::")
|
||||
|
||||
if len(parts) >= 2:
|
||||
file_path = parts[0]
|
||||
test_name = parts[1]
|
||||
dirs = file_path.split("/")
|
||||
path = parts[0]
|
||||
test_name = parts[1].split("[")[0] # Retire les paramètres
|
||||
dirs = path.split("/")
|
||||
|
||||
current_level = tree
|
||||
for dir_name in dirs[:-1]: # Parcourir les répertoires
|
||||
current_level = current_level[dir_name]
|
||||
current_level[dirs[-1]].append(test_name) # Ajouter le fichier et le test
|
||||
|
||||
# 2. Fonction récursive pour afficher l'arborescence
|
||||
def print_tree(node, indent=0, f=f):
|
||||
for key, value in sorted(node.items()):
|
||||
if isinstance(value, dict):
|
||||
f.write(" " * indent + f"- 📁 {key}\n")
|
||||
print_tree(value, indent + 1, f)
|
||||
elif isinstance(value, list):
|
||||
f.write(" " * indent + f"- 📄 {key}\n")
|
||||
for test in sorted(value):
|
||||
f.write(" " * (indent + 1) + f" - 🧪 {test}\n")
|
||||
|
||||
print_tree(tree)
|
||||
current = collector_tree
|
||||
for dir_name in dirs[:-1]:
|
||||
current = current[dir_name]['files']
|
||||
current['files'][dirs[-1]].append({
|
||||
'test_name': test_name,
|
||||
'outcome': outcome,
|
||||
'result': result
|
||||
})
|
||||
|
||||
# 2. Fonction d'affichage récursive
|
||||
def print_collector_tree(node, level=0, f=f):
|
||||
indent = " " * level
|
||||
for name, data in sorted(node.items()):
|
||||
if name == 'files':
|
||||
for file_name, tests in sorted(data.items()):
|
||||
f.write(f"{indent}- <details><summary>📄 {file_name}</summary>\n\n")
|
||||
for test in tests:
|
||||
emoji = "✅" if test['outcome'] == "passed" else "❌"
|
||||
f.write(f"{indent} - {emoji} `{test['test_name']}`\n")
|
||||
if test['result']:
|
||||
f.write(f"{indent} - **result:**\n```\n")
|
||||
for item in test['result']:
|
||||
if isinstance(item, dict):
|
||||
for k, v in item.items():
|
||||
f.write(f"{k}: {v}\n")
|
||||
else:
|
||||
f.write(f"{item}\n")
|
||||
f.write("```\n")
|
||||
f.write(f"{indent}</details>\n")
|
||||
elif isinstance(data, dict):
|
||||
f.write(f"{indent}- <details><summary>📁 {name}</summary>\n\n")
|
||||
print_collector_tree(data, level + 1, f)
|
||||
f.write(f"{indent}</details>\n")
|
||||
|
||||
print_collector_tree(collector_tree)
|
||||
f.write("\n")
|
||||
|
||||
if "tests" in data and "summary" in data:
|
||||
|
||||
Reference in New Issue
Block a user