88
99from code_coverage_backend .config import COVERAGE_EXTENSIONS
1010from code_coverage_backend .gcp import load_cache
11+ from code_coverage_backend .report import DEFAULT_FILTER
1112
1213DEFAULT_REPOSITORY = "mozilla-central"
1314logger = structlog .get_logger (__name__ )
@@ -39,7 +40,13 @@ def coverage_latest(repository=DEFAULT_REPOSITORY):
3940 abort (404 )
4041
4142
42- def coverage_for_path (path = "" , changeset = None , repository = DEFAULT_REPOSITORY ):
43+ def coverage_for_path (
44+ path = "" ,
45+ changeset = None ,
46+ repository = DEFAULT_REPOSITORY ,
47+ platform = DEFAULT_FILTER ,
48+ suite = DEFAULT_FILTER ,
49+ ):
4350 """
4451 Aggregate coverage for a path, regardless of its type:
4552 * file, gives its coverage percent
@@ -54,17 +61,17 @@ def coverage_for_path(path="", changeset=None, repository=DEFAULT_REPOSITORY):
5461 try :
5562 if changeset :
5663 # Find closest report matching this changeset
57- changeset , _ = gcp .find_closest_report (repository , changeset )
64+ report = gcp .find_closest_report (repository , changeset , platform , suite )
5865 else :
5966 # Fallback to latest report
60- changeset , _ = gcp .find_report (repository )
67+ report = gcp .find_report (repository , platform , suite )
6168 except Exception as e :
6269 logger .warn ("Failed to retrieve report: {}" .format (e ))
6370 abort (404 )
6471
6572 # Load tests data from GCP
6673 try :
67- return gcp .get_coverage (repository , changeset , path )
74+ return gcp .get_coverage (report , path )
6875 except Exception as e :
6976 logger .warn (
7077 "Failed to load coverage" ,
@@ -76,7 +83,14 @@ def coverage_for_path(path="", changeset=None, repository=DEFAULT_REPOSITORY):
7683 abort (400 )
7784
7885
79- def coverage_history (repository = DEFAULT_REPOSITORY , path = "" , start = None , end = None ):
86+ def coverage_history (
87+ repository = DEFAULT_REPOSITORY ,
88+ path = "" ,
89+ start = None ,
90+ end = None ,
91+ platform = DEFAULT_FILTER ,
92+ suite = DEFAULT_FILTER ,
93+ ):
8094 """
8195 List overall coverage from ingested reports over a period of time
8296 """
@@ -86,7 +100,7 @@ def coverage_history(repository=DEFAULT_REPOSITORY, path="", start=None, end=Non
86100 abort (500 )
87101
88102 try :
89- return gcp .get_history (repository , path = path , start = start , end = end )
103+ return gcp .get_history (repository , path , start , end , platform , suite )
90104 except Exception as e :
91105 logger .warn (
92106 "Failed to load history" ,
@@ -97,3 +111,22 @@ def coverage_history(repository=DEFAULT_REPOSITORY, path="", start=None, end=Non
97111 error = str (e ),
98112 )
99113 abort (400 )
114+
115+
116+ def coverage_filters (repository = DEFAULT_REPOSITORY ):
117+ """
118+ List all available filters for that repository
119+ """
120+ gcp = load_cache ()
121+ if gcp is None :
122+ logger .error ("No GCP cache available" )
123+ abort (500 )
124+
125+ try :
126+ return {
127+ "platforms" : gcp .get_platforms (repository ),
128+ "suites" : gcp .get_suites (repository ),
129+ }
130+ except Exception as e :
131+ logger .warn ("Failed to load filters" , repo = repository , error = str (e ))
132+ abort (400 )
0 commit comments