Skip to content

Commit 1d1d2b9

Browse files
authored
Merge pull request #867 from murgatroid99/log_merge_improvement
Handle parse failures when merging test logs
2 parents 3bebc22 + 61c8bdf commit 1d1d2b9

File tree

1 file changed

+30
-1
lines changed

1 file changed

+30
-1
lines changed

merge_kokoro_logs.js

Lines changed: 30 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,30 @@ const readDir = util.promisify(fs.readdir);
2525

2626
const rootDir = __dirname;
2727

28+
// Fake test suite log with a failure if log parsing failed
29+
const parseFailureLog = [
30+
{
31+
$: {
32+
name: 'Unknown Test Suite',
33+
tests: '1',
34+
failures: '1',
35+
},
36+
testcase: [
37+
{
38+
$: {
39+
classname: 'Test Log Parsing',
40+
name: 'Test Log Parsing',
41+
failure: {
42+
$: {
43+
message: "Log parsing failed"
44+
}
45+
}
46+
}
47+
}
48+
]
49+
}
50+
];
51+
2852
readDir(rootDir + '/reports')
2953
.then((dirNames) =>
3054
Promise.all(dirNames.map((dirName) =>
@@ -41,7 +65,12 @@ readDir(rootDir + '/reports')
4165
)
4266
.then((objects) => {
4367
let merged = objects[0];
44-
merged.testsuites.testsuite = Array.prototype.concat.apply([], objects.map((obj) => obj.testsuites.testsuite));
68+
merged.testsuites.testsuite = Array.prototype.concat.apply([], objects.map((obj) => {
69+
if (obj) {
70+
return obj.testsuites.testsuite;
71+
} else {
72+
return parseFailureLog;
73+
}}));
4574
let builder = new xml2js.Builder();
4675
let xml = builder.buildObject(merged);
4776
let resultName = path.resolve(rootDir, 'reports', dirName, 'sponge_log.xml');

0 commit comments

Comments
 (0)