99 Avg ,
1010 F ,
1111 Q ,
12+ QuerySet ,
1213 Sum ,
1314 Value ,
1415)
@@ -298,6 +299,17 @@ def compare(row: TestResultsRow) -> int:
298299 return rows [left :]
299300
300301
302+ def get_relevant_totals (
303+ repoid : int , branch : str | None , since : dt .datetime
304+ ) -> QuerySet :
305+ if branch :
306+ return DailyTestRollup .objects .filter (
307+ repoid = repoid , date__gt = since , branch = branch
308+ )
309+ else :
310+ return DailyTestRollup .objects .filter (repoid = repoid , date__gt = since )
311+
312+
301313def generate_test_results (
302314 ordering : str ,
303315 ordering_direction : str ,
@@ -341,7 +353,7 @@ def generate_test_results(
341353 test_ids : set [str ] | None = None
342354
343355 if term is not None :
344- totals = DailyTestRollup . objects . filter (repoid = repoid , date__gt = since )
356+ totals = get_relevant_totals (repoid , branch , since )
345357
346358 totals = totals .filter (test__name__icontains = term ).values ("test_id" )
347359
@@ -359,16 +371,21 @@ def generate_test_results(
359371 if parameter is not None :
360372 match parameter :
361373 case GENERATE_TEST_RESULT_PARAM .FLAKY :
362- flakes = Flake .objects .filter (
363- Q (repository_id = repoid )
364- & (Q (end_date__date__isnull = True ) | Q (end_date__date__gt = since ))
365- )
374+ totals = get_relevant_totals (repoid , branch , since )
366375
367- flaky_test_ids = set ([flake .test_id for flake in flakes ])
376+ flaky_test_ids = (
377+ totals .values ("test" )
378+ .annotate (flaky_fail_count_sum = Sum ("flaky_fail_count" ))
379+ .filter (flaky_fail_count_sum__gt = 0 )
380+ .values ("test_id" )
381+ )
382+ flaky_test_id_set = {test ["test_id" ] for test in flaky_test_ids }
368383
369- test_ids = test_ids & flaky_test_ids if test_ids else flaky_test_ids
384+ test_ids = (
385+ test_ids & flaky_test_id_set if test_ids else flaky_test_id_set
386+ )
370387 case GENERATE_TEST_RESULT_PARAM .FAILED :
371- totals = DailyTestRollup . objects . filter (repoid = repoid , date__gt = since )
388+ totals = get_relevant_totals (repoid , branch , since )
372389
373390 failed_test_ids = (
374391 totals .values ("test" )
@@ -382,7 +399,7 @@ def generate_test_results(
382399 test_ids & failed_test_id_set if test_ids else failed_test_id_set
383400 )
384401 case GENERATE_TEST_RESULT_PARAM .SKIPPED :
385- totals = DailyTestRollup . objects . filter (repoid = repoid , date__gt = since )
402+ totals = get_relevant_totals (repoid , branch , since )
386403
387404 skipped_test_ids = (
388405 totals .values ("test" )
@@ -400,7 +417,7 @@ def generate_test_results(
400417 test_ids & skipped_test_id_set if test_ids else skipped_test_id_set
401418 )
402419 case GENERATE_TEST_RESULT_PARAM .SLOWEST :
403- totals = DailyTestRollup . objects . filter (repoid = repoid , date__gt = since )
420+ totals = get_relevant_totals (repoid , branch , since )
404421
405422 num_tests = totals .distinct ("test_id" ).count ()
406423
0 commit comments