Skip to content

Commit f161ba2

Browse files
authored
fix regression microsoft#127 (microsoft#128)
Signed-off-by: xuzho <xuzho@microsoft.com>
1 parent 3cca5a6 commit f161ba2

2 files changed

Lines changed: 37 additions & 42 deletions

File tree

extension/src/Runner/JUnitTestRunner/junitRunnerResultAnalyzer.ts

Lines changed: 0 additions & 41 deletions
Original file line numberDiff line numberDiff line change
@@ -37,14 +37,11 @@ export class JUnitRunnerResultAnalyzer extends JarFileRunnerResultAnalyzer {
3737
const result: ITestResult[] = [];
3838
this._tests.forEach((t) => {
3939
if (t.level === TestLevel.Class) {
40-
toAggregate.add(t);
4140
t.children.forEach((c) => this.processMethod(c, result));
4241
} else {
43-
toAggregate.add(t.parent);
4442
this.processMethod(t, result);
4543
}
4644
});
47-
toAggregate.forEach((t) => this.processClass(t, result));
4845
return result;
4946
}
5047

@@ -85,44 +82,6 @@ export class JUnitRunnerResultAnalyzer extends JarFileRunnerResultAnalyzer {
8582
}
8683
}
8784

88-
private processClass(t: ITestInfo, result: ITestResult[]): void {
89-
let passNum: number = 0;
90-
let failNum: number = 0;
91-
let skipNum: number = 0;
92-
let duration: number = 0;
93-
let notRun: boolean = false;
94-
for (const child of t.children) {
95-
if (!this._testResults.has(child.test)) {
96-
notRun = true;
97-
continue;
98-
}
99-
const childResult: TestResult = this._testResults.get(child.test);
100-
duration += Number(childResult.duration);
101-
switch (childResult.status) {
102-
case TestStatus.Pass:
103-
passNum++;
104-
break;
105-
case TestStatus.Fail:
106-
failNum++;
107-
break;
108-
case TestStatus.Skipped:
109-
skipNum++;
110-
break;
111-
}
112-
}
113-
114-
const classResult: TestResult = {
115-
status: notRun ? undefined : (skipNum === t.children.length ? TestStatus.Skipped : (failNum > 0 ? TestStatus.Fail : TestStatus.Pass)),
116-
summary: `Tests run: ${passNum + failNum}, Failures: ${failNum}, Skipped: ${skipNum}.`,
117-
duration: notRun ? undefined : duration.toString(),
118-
};
119-
result.push({
120-
test: t.test,
121-
uri: t.uri,
122-
result: classResult,
123-
});
124-
}
125-
12685
private processMethod(t: ITestInfo, result: ITestResult[]): void {
12786
if (!this._testResults.has(t.test)) {
12887
this._testResults.set(t.test, {

extension/src/Runner/testRunnerWrapper.ts

Lines changed: 37 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33

44
import { ClassPathManager } from "../classPathManager";
55
import { TestStatusBarProvider } from "../testStatusBarProvider";
6-
import { TestKind, TestResult, TestSuite } from "../Models/protocols";
6+
import { TestKind, TestLevel, TestResult, TestStatus, TestSuite } from "../Models/protocols";
77
import * as Logger from "../Utils/Logger/logger";
88
import { ITestRunner } from "./testRunner";
99
import { ITestRunnerParameters } from "./testRunnerParameters";
@@ -59,13 +59,49 @@ export class TestRunnerWrapper {
5959
total.set(cur.test, cur.result);
6060
return total;
6161
}, new Map<string, TestResult>());
62+
const classesInflucenced = [];
6263
const flattenedTests = new Set(tests.map((t) => [t, t.parent, ...(t.children || [])])
6364
.reduce((total, cur) => total.concat(cur), [])
6465
.filter((t) => t));
6566
flattenedTests.forEach((t) => {
6667
if (mapper.has(t.test)) {
6768
t.result = mapper.get(t.test);
69+
} else if (t.level === TestLevel.Class) {
70+
classesInflucenced.push(t);
6871
}
6972
});
73+
classesInflucenced.forEach((c) => this.processClass(c));
74+
}
75+
76+
private static processClass(t: TestSuite): void {
77+
let passNum: number = 0;
78+
let failNum: number = 0;
79+
let skipNum: number = 0;
80+
let duration: number = 0;
81+
let notRun: boolean = false;
82+
for (const child of t.children) {
83+
if (!child.result) {
84+
notRun = true;
85+
continue;
86+
}
87+
duration += Number(child.result.duration);
88+
switch (child.result.status) {
89+
case TestStatus.Pass:
90+
passNum++;
91+
break;
92+
case TestStatus.Fail:
93+
failNum++;
94+
break;
95+
case TestStatus.Skipped:
96+
skipNum++;
97+
break;
98+
}
99+
}
100+
101+
t.result = {
102+
status: notRun ? undefined : (skipNum === t.children.length ? TestStatus.Skipped : (failNum > 0 ? TestStatus.Fail : TestStatus.Pass)),
103+
summary: `Tests run: ${passNum + failNum}, Failures: ${failNum}, Skipped: ${skipNum}.`,
104+
duration: notRun ? undefined : duration.toString(),
105+
};
70106
}
71107
}

0 commit comments

Comments
 (0)