@tsdi/unit
Version:
unit testing framework, base on AOP, Ioc container
109 lines (107 loc) • 4.94 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.UnitTestRunner = void 0;
var tslib_1 = require("tslib");
var ioc_1 = require("@tsdi/ioc");
var boot_1 = require("@tsdi/boot");
var OldTestRunner_1 = require("./OldTestRunner");
var decorators_1 = require("../decorators");
var TestReport_1 = require("../reports/TestReport");
/**
* Suite runner.
*
* @export
* @class SuiteRunner
* @implements {IRunner<any>}
*/
var UnitTestRunner = /** @class */ (function (_super) {
tslib_1.__extends(UnitTestRunner, _super);
function UnitTestRunner() {
return _super !== null && _super.apply(this, arguments) || this;
}
UnitTestRunner.prototype.configureService = function (ctx) {
return tslib_1.__awaiter(this, void 0, void 0, function () {
return tslib_1.__generator(this, function (_a) {
this.context = ctx;
return [2 /*return*/];
});
});
};
UnitTestRunner.prototype.getContext = function () {
return this.context;
};
UnitTestRunner.prototype.run = function (data) {
return tslib_1.__awaiter(this, void 0, void 0, function () {
var context, config, src, injector, exit, suites, oldRunner, loader, alltypes, alltypes, builder, reflects;
return tslib_1.__generator(this, function (_a) {
switch (_a.label) {
case 0:
context = this.getContext();
return [4 /*yield*/, context.getConfiguration()];
case 1:
config = _a.sent();
src = config.src;
injector = context.injector;
exit = injector.get(boot_1.ApplicationExit);
if (exit) {
exit.enable = false;
}
suites = [];
oldRunner = injector.resolve(OldTestRunner_1.OldTestRunner);
return [4 /*yield*/, oldRunner.configureService(context)];
case 2:
_a.sent();
loader = injector.getLoader();
oldRunner.registerGlobalScope();
if (!ioc_1.isString(src)) return [3 /*break*/, 4];
return [4 /*yield*/, loader.loadTypes({ files: [src], basePath: this.context.baseURL })];
case 3:
alltypes = _a.sent();
alltypes.forEach(function (tys) {
suites = suites.concat(tys);
});
return [3 /*break*/, 8];
case 4:
if (!ioc_1.isClass(src)) return [3 /*break*/, 5];
suites = [src];
return [3 /*break*/, 8];
case 5:
if (!ioc_1.isArray(src)) return [3 /*break*/, 8];
if (!src.some(function (t) { return ioc_1.isClass(t); })) return [3 /*break*/, 6];
suites = src;
return [3 /*break*/, 8];
case 6: return [4 /*yield*/, loader.loadTypes({ files: src, basePath: this.context.baseURL })];
case 7:
alltypes = _a.sent();
alltypes.forEach(function (tys) {
suites = suites.concat(tys);
});
_a.label = 8;
case 8:
oldRunner.unregisterGlobalScope();
return [4 /*yield*/, oldRunner.run()];
case 9:
_a.sent();
builder = injector.resolve(boot_1.BuilderService);
reflects = this.context.reflects;
return [4 /*yield*/, ioc_1.PromiseUtil.step(suites.filter(function (v) { return ioc_1.isClass(v) && reflects.hasMetadata(decorators_1.Suite, v); }).map(function (s) { return function () { return builder.run({ type: s, injector: injector }); }; }))];
case 10:
_a.sent();
return [4 /*yield*/, injector.resolve(TestReport_1.TestReport).report()];
case 11:
_a.sent();
return [2 /*return*/];
}
});
});
};
UnitTestRunner.ρAnn = function () {
return { "name": "UnitTestRunner", "params": { "configureService": ["ctx"], "run": ["data"] } };
};
UnitTestRunner = tslib_1.__decorate([
ioc_1.Injectable
], UnitTestRunner);
return UnitTestRunner;
}(boot_1.Runnable));
exports.UnitTestRunner = UnitTestRunner;
//# sourceMappingURL=../sourcemaps/runner/UnitTestRunner.js.map