You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
71 lines
2.7 KiB
71 lines
2.7 KiB
6 years ago
|
"use strict";
|
||
|
|
||
|
function _typeof(obj) { if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }
|
||
|
|
||
|
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; var ownKeys = Object.keys(source); if (typeof Object.getOwnPropertySymbols === 'function') { ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function (sym) { return Object.getOwnPropertyDescriptor(source, sym).enumerable; })); } ownKeys.forEach(function (key) { _defineProperty(target, key, source[key]); }); } return target; }
|
||
|
|
||
|
function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
|
||
|
|
||
|
var toXML = require('jsontoxml');
|
||
|
|
||
|
var _require = require('../util/nodeutils'),
|
||
|
clear = _require.clear;
|
||
|
|
||
|
var toJSON = function toJSON(resultsArray) {
|
||
|
return {
|
||
|
testsuites: resultsArray.map(function (results) {
|
||
|
var name = results.name,
|
||
|
count = results.count,
|
||
|
success = results.success,
|
||
|
failures = results.failures,
|
||
|
skipped = results.skipped;
|
||
|
return {
|
||
|
name: 'testsuite',
|
||
|
attrs: {
|
||
|
name: name,
|
||
|
tests: count,
|
||
|
success: success.length,
|
||
|
failures: failures.length,
|
||
|
skipped: skipped.length,
|
||
|
timestamp: new Date().toUTCString(),
|
||
|
time: results.duration / 1000 || 0
|
||
|
},
|
||
|
children: results.reduce(function (acc, r) {
|
||
|
var content = r.status !== 'ok' && (r.status === 'skip' ? 'skipped' : {
|
||
|
name: 'failure',
|
||
|
text: r.reason ? r.reason && r.reason.stack : ''
|
||
|
});
|
||
|
acc.push(_objectSpread({
|
||
|
name: 'testcase',
|
||
|
attrs: {
|
||
|
name: r.description,
|
||
|
time: r.duration / 1000 || 0
|
||
|
}
|
||
|
}, _typeof(content) === 'object' && {
|
||
|
text: content && content.stack
|
||
|
}, _typeof(content) === 'object' && {
|
||
|
children: [content]
|
||
|
}));
|
||
|
return acc;
|
||
|
}, [])
|
||
|
};
|
||
|
})
|
||
|
};
|
||
|
};
|
||
|
|
||
|
var convert = function convert(results) {
|
||
|
return toXML(toJSON(results), {
|
||
|
xmlHeader: {
|
||
|
standalone: true
|
||
|
}
|
||
|
});
|
||
|
};
|
||
|
|
||
|
var xunit = function xunit(runner) {
|
||
|
return runner.on("end", function (results) {
|
||
|
return clear(), console.log(convert([results]));
|
||
|
});
|
||
|
};
|
||
|
|
||
|
module.exports = xunit;
|
||
|
module.exports.convert = convert;
|