UNPKG

@teambit/multi-tester

Version:
112 lines (108 loc) 4.01 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.MultiTester = void 0; function _pMapSeries() { const data = _interopRequireDefault(require("p-map-series")); _pMapSeries = function () { return data; }; return data; } function _tester() { const data = require("@teambit/tester"); _tester = function () { return data; }; return data; } function _testsResults() { const data = require("@teambit/tests-results"); _testsResults = function () { return data; }; return data; } function _lodash() { const data = require("lodash"); _lodash = function () { return data; }; return data; } function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; } function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; } function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == typeof i ? i : i + ""; } function _toPrimitive(t, r) { if ("object" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != typeof i) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); } class MultiTester { constructor(id, testers) { this.id = id; this.testers = testers; _defineProperty(this, "displayName", 'Multi tester'); } displayConfig() { return this.testers.map(tester => { return `${tester.displayName}\n${tester.displayConfig}\n`; }).join('\n'); } async test(context) { const allResults = await (0, _pMapSeries().default)(this.testers, tester => { return tester.test(context); }); const merged = this.mergeTests(allResults); return merged; } // TODO: not working properly yet async watch(context) { const allResults = await (0, _pMapSeries().default)(this.testers, tester => { return tester.watch ? tester.watch(context) : tester.test(context); }); const merged = this.mergeTests(allResults); return merged; } /** * returns the version of all testers instance (e.g. '4.0.1'). */ version() { return this.testers.map(tester => { return `${tester.displayName}@${tester.version()}`; }).join('\n'); } mergeTests(tests) { const componentResultsMap = new Map(); (0, _lodash().compact)(tests).forEach(currentTests => { currentTests.components.forEach(currentComponentResults => { const currIdStr = currentComponentResults.componentId.toString(); const foundComponent = componentResultsMap.get(currIdStr); if (foundComponent) { componentResultsMap.set(currIdStr, this.mergeComponentResults(foundComponent, currentComponentResults)); } else { componentResultsMap.set(currIdStr, currentComponentResults); } }); }); return new (_tester().Tests)(Array.from(componentResultsMap.values())); } mergeComponentResults(results1, results2) { const merged = { componentId: results1.componentId }; let start; if (!results1.results?.start) { start = results2.results?.start; } else if (!results2.results?.start) { start = results1.results?.start; } else { // Take sooner start start = results1.results?.start < results2.results?.start ? results1.results?.start : results2.results?.start; } const mergedTestsResults = new (_testsResults().TestsResult)([...(results1.results?.testFiles || []), ...(results2.results?.testFiles || [])], results1.results?.success && results2.results?.success, start); merged.results = mergedTestsResults; merged.errors = [...(results1.errors || []), ...(results2.errors || [])]; merged.loading = results1.loading || results2.loading; return merged; } } exports.MultiTester = MultiTester; //# sourceMappingURL=multi-tester.tester.js.map