11# ================================
22#
3- # OK- Read No of retagger batches
4- # OK- Artifact is exported as python-unittest-retagger-gate-batch{NO}-{OS}-{ARCH}-jdk-latest_logs
5- #
6- # list => new job => require_artifacts: reports list
7- #
8- # Download all artifacts => extraxt => filter by name retagger-report
9- # OK- Merge => report-merged.json
10- # run mx merge-tags-from-report => git diff => export git diff artifact
3+ # This script is used by ci to merge several retagger report JSON files, which is then used
4+ # by running python3 runner.py merge-tags-from-reports reports-merged.json
115#
126# ================================
137
1812import argparse
1913from dataclasses import dataclass
2014
21- # Tests' status we want to merge and export
15+ # status we want to focus on
2216EXPORT_STATUS = ["FAILED" ]
2317
2418@dataclass
2519class Test :
26- name : str
27- status : str
28- duration : str
20+ name : str
21+ status : str
22+ duration : str
23+
2924
3025def read_report (path : str ) -> list [Test ]:
3126 tests = []
@@ -39,15 +34,16 @@ def read_report(path: str) -> list[Test]:
3934
4035def merge_tests (report : list [Test ], merged : dict [str , dict ]):
4136 for test in report :
42- if test .name not in merged : merged [test .name ] = test .__dict__
37+ if test .name not in merged :
38+ merged [test .name ] = test .__dict__
4339
4440def export_reports (merged : dict [str , dict ], outfile : str ):
4541 with open (outfile , "w" ) as f :
4642 json .dump (list (merged .values ()), f )
47- print (f"=== Exported { len (merged )} failing tests to { f .name } ===" )
43+ print (f"=== Exported { len (merged )} ( { EXPORT_STATUS } ) tests to { f .name } ===" )
4844
4945def merge_reports (reports : list [str ], outfile : str ):
50- merged_reports = {} # key: test_name
46+ merged_reports = {}
5147 for report in reports :
5248 report_tests = read_report (report )
5349 merge_tests (report_tests , merged_reports )
0 commit comments