forked from mirrors/gecko-dev
		
	 f024d94b2b
			
		
	
	
		f024d94b2b
		
	
	
	
	
		
			
			# ignore-this-changeset Differential Revision: https://phabricator.services.mozilla.com/D186092
		
			
				
	
	
		
			52 lines
		
	
	
	
		
			1.4 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
			
		
		
	
	
			52 lines
		
	
	
	
		
			1.4 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
| # This Source Code Form is subject to the terms of the Mozilla Public
 | |
| # License, v. 2.0. If a copy of the MPL was not distributed with this
 | |
| # file, You can obtain one at http://mozilla.org/MPL/2.0/.
 | |
| 
 | |
| import argparse
 | |
| import json
 | |
| import pathlib
 | |
| 
 | |
| 
 | |
| def filter_changes(line):
 | |
|     # Skip diff headers
 | |
|     if line.startswith("---") or line.startswith("+++"):
 | |
|         return False
 | |
| 
 | |
|     # Only count lines that changed
 | |
|     return line.startswith("-") or line.startswith("+")
 | |
| 
 | |
| 
 | |
| def run():
 | |
|     parser = argparse.ArgumentParser(
 | |
|         description="Classify output of taskgraph for CI analsyis"
 | |
|     )
 | |
|     parser.add_argument(
 | |
|         "path",
 | |
|         type=pathlib.Path,
 | |
|         help="Folder containing all the TXT files from taskgraph target.",
 | |
|     )
 | |
|     parser.add_argument(
 | |
|         "threshold",
 | |
|         type=int,
 | |
|         help="Minimum number of lines to trigger a warning on taskgraph output.",
 | |
|     )
 | |
|     args = parser.parse_args()
 | |
| 
 | |
|     out = {"files": {}, "status": "OK", "threshold": args.threshold}
 | |
|     for path in args.path.glob("*.txt"):
 | |
|         with path.open() as f:
 | |
|             nb = len(list(filter(filter_changes, f.readlines())))
 | |
| 
 | |
|         out["files"][path.stem] = {
 | |
|             "nb": nb,
 | |
|             "status": "WARNING" if nb >= args.threshold else "OK",
 | |
|         }
 | |
| 
 | |
|         if nb >= args.threshold:
 | |
|             out["status"] = "WARNING"
 | |
| 
 | |
|     (args.path / "summary.json").write_text(json.dumps(out, sort_keys=True, indent=4))
 | |
| 
 | |
| 
 | |
| if __name__ == "__main__":
 | |
|     run()
 |