[PATCH v1] dts: fix pass rate edge case in results json

Luca Vizzarro Luca.Vizzarro at arm.com
Wed Jan 15 11:10:14 CET 2025


Hi Dean,

good timing! I actually noticed this issue last week and was going to 
tackle it soon.


On 13/01/2025 21:52, Dean Marx wrote:
> @@ -324,13 +324,15 @@ def generate_pass_rate_dict(self, test_run_summary) -> dict[str, float]:
>           Returns:
>               A dictionary with the PASS/FAIL ratio of all test cases.
>           """
> -        return {
> -            "PASS_RATE": (
> -                float(test_run_summary[Result.PASS.name])
> -                * 100
> -                / sum(test_run_summary[result.name] for result in Result if result != Result.SKIP)
> -            )
> -        }
> +        cases_not_skipped = sum(
> +            test_run_summary[result.name] for result in Result if result != Result.SKIP
> +        )
> +        if cases_not_skipped == 0:
> +            return {"PASS_RATE": 0.0}
> +        else:
> +            return {
> +                "PASS_RATE": (float(test_run_summary[Result.PASS.name]) * 100 / cases_not_skipped)
> +            }

The solution feels a bit overcomplicated, you can just throw a 
max(sum(..), 1), so:

     ran_tests = sum(test_run_summary[result.name] for result in Result
                     if result != Result.SKIP)
     return {
         "PASS_RATE": test_run_summary[Result.PASS.name] * 100.0 / 
max(ran_tests, 1)
     }

also while you are at it, changing the 100 to 100.0 will spare us from 
writing a longer float(..) expression.


More information about the dev mailing list