From 61c8bdf10f936478e01fd17d08914830bed1fd22 Mon Sep 17 00:00:00 2001 From: murgatroid99 Date: Wed, 15 May 2019 15:13:21 -0700 Subject: [PATCH] Handle parse failures when merging test logs --- merge_kokoro_logs.js | 31 ++++++++++++++++++++++++++++++- 1 file changed, 30 insertions(+), 1 deletion(-) diff --git a/merge_kokoro_logs.js b/merge_kokoro_logs.js index d8cc98db..9b8e2d9b 100644 --- a/merge_kokoro_logs.js +++ b/merge_kokoro_logs.js @@ -25,6 +25,30 @@ const readDir = util.promisify(fs.readdir); const rootDir = __dirname; +// Fake test suite log with a failure if log parsing failed +const parseFailureLog = [ + { + $: { + name: 'Unknown Test Suite', + tests: '1', + failures: '1', + }, + testcase: [ + { + $: { + classname: 'Test Log Parsing', + name: 'Test Log Parsing', + failure: { + $: { + message: "Log parsing failed" + } + } + } + } + ] + } +]; + readDir(rootDir + '/reports') .then((dirNames) => Promise.all(dirNames.map((dirName) => @@ -41,7 +65,12 @@ readDir(rootDir + '/reports') ) .then((objects) => { let merged = objects[0]; - merged.testsuites.testsuite = Array.prototype.concat.apply([], objects.map((obj) => obj.testsuites.testsuite)); + merged.testsuites.testsuite = Array.prototype.concat.apply([], objects.map((obj) => { + if (obj) { + return obj.testsuites.testsuite; + } else { + return parseFailureLog; + }})); let builder = new xml2js.Builder(); let xml = builder.buildObject(merged); let resultName = path.resolve(rootDir, 'reports', dirName, 'sponge_log.xml');