diff --git a/lib.js b/lib.js index f4998d5..2f1fe8b 100644 --- a/lib.js +++ b/lib.js @@ -3,6 +3,8 @@ import columnify from 'columnify'; import { red, green, bold } from 'colorette'; import { EOL } from 'os'; +const toString = (v) => Object.prototype.toString.call(v); + export const generateSummary = (summary) => { const data = { '> Name:': summary.name, @@ -59,7 +61,7 @@ const generateTestcaseResult = (testcase) => { if (!isTestcaseSuccess(testcase)) { let errorLines = ''; if (testcase.failure.join) { - errorLines = testcase.failure.join(EOL).split(EOL).join(EOL + '\t'); + errorLines = testcase.failure.map(toString).join(EOL).split(EOL).join(EOL + '\t'); } else { errorLines = testcase.failure; } diff --git a/lib.test.js b/lib.test.js index 2db2046..a06110a 100644 --- a/lib.test.js +++ b/lib.test.js @@ -1,8 +1,52 @@ import assert from 'assert'; import * as lib from './lib.js'; +import parseString from 'xml2js'; + +const xmlStr = ` + + + + + + + + + + + +`; describe('lib', () => { + + describe('from parsed XML', () => { + let result, err; + beforeEach((done) => { + parseString.parseString(xmlStr, (outErr, outResult) => { + result = outResult; + err = outErr; + done(); + }); + }); + it('should parse', () => { + assert.equal(err, null); + }); + it('should not throw with parsed XML', () => { + if (!result.testsuites.$) { + result.testsuites.$ = lib.findSummaryFromTestsuites(result.testsuites.testsuite); + } else { + result.testsuites.$ = { + ...result.testsuites.$, + ...lib.findSummaryFromTestsuites(result.testsuites.testsuite), + }; + } + assert.doesNotThrow(() => lib.generateSummary(result.testsuites.$)); + result.testsuites.testsuite.forEach(t => { + assert.doesNotThrow(() => lib.generateTestsuiteSummary(t)); + assert.doesNotThrow(() => lib.generateTestsuiteResult(t)); + }); + }); + }); describe('generateSummary()', () => { const summary = { name: 'test',