testing: avoid showing 100% if any test failed

Fixes #115687
This commit is contained in:
Connor Peet 2021-02-05 13:17:15 -08:00
parent ac60c82c7d
commit 7323c52084
No known key found for this signature in database
GPG key ID: CF8FD2EA0DBC61BD

View file

@ -707,6 +707,8 @@ class TestsRenderer implements ITreeRenderer<ITestTreeElement, FuzzyScore, TestT
}
}
type CountSummary = ReturnType<typeof collectCounts>;
const collectCounts = (count: TestStateCount) => {
const failed = count[TestRunState.Errored] + count[TestRunState.Failed];
const passed = count[TestRunState.Passed];
@ -721,12 +723,17 @@ const collectCounts = (count: TestStateCount) => {
};
};
const getProgressText = ({ passed, runSoFar, skipped }: { passed: number, runSoFar: number, skipped: number }) => {
const percent = (passed / runSoFar * 100).toFixed(0);
const getProgressText = ({ passed, runSoFar, skipped, failed }: CountSummary) => {
let percent = passed / runSoFar * 100;
if (failed > 0) {
// fix: prevent from rounding to 100 if there's any failed test
percent = Math.min(percent, 99.9);
}
if (skipped === 0) {
return localize('testProgress', '{0}/{1} tests passed ({2}%)', passed, runSoFar, percent);
return localize('testProgress', '{0}/{1} tests passed ({2}%)', passed, runSoFar, percent.toPrecision(3));
} else {
return localize('testProgressWithSkip', '{0}/{1} tests passed ({2}%, {3} skipped)', passed, runSoFar, percent, skipped);
return localize('testProgressWithSkip', '{0}/{1} tests passed ({2}%, {3} skipped)', passed, runSoFar, percent.toPrecision(3), skipped);
}
};