1 | "use strict";
|
2 | var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
3 | function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
4 | return new (P || (P = Promise))(function (resolve, reject) {
|
5 | function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
6 | function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
7 | function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
8 | step((generator = generator.apply(thisArg, _arguments || [])).next());
|
9 | });
|
10 | };
|
11 | Object.defineProperty(exports, "__esModule", { value: true });
|
12 | const cli_1 = require("./cli");
|
13 | const testrunner_1 = require("./testrunner");
|
14 | const cli_ansi_1 = require("./cli-ansi");
|
15 | const flagpoleexecutionoptions_1 = require("../flagpoleexecutionoptions");
|
16 | const ansi = new cli_ansi_1.CliAnsi();
|
17 | exports.run = (suiteNames, tag) => __awaiter(void 0, void 0, void 0, function* () {
|
18 | const suitesInProject = cli_1.Cli.config.getSuites();
|
19 | let selectedSuites = [];
|
20 | if (suiteNames.length) {
|
21 | let regEx = (function () {
|
22 | let arr = [];
|
23 | suiteNames.forEach(name => {
|
24 | arr.push(name.replace(/([.+^=!:${}()|\[\]\/\\])/g, "\\$1").replace("*", ".*"));
|
25 | });
|
26 | return new RegExp(`^${arr.join("|")}$`, "i");
|
27 | })();
|
28 | suitesInProject.forEach(function (suite) {
|
29 | if (regEx.test(suite.name)) {
|
30 | selectedSuites.push(suite);
|
31 | }
|
32 | });
|
33 | }
|
34 | else if (tag.length) {
|
35 | suitesInProject.forEach(function (suite) {
|
36 | if (suite.tags.includes(tag)) {
|
37 | selectedSuites.push(suite);
|
38 | }
|
39 | });
|
40 | }
|
41 | else {
|
42 | selectedSuites = suitesInProject;
|
43 | }
|
44 | return runSuites(selectedSuites);
|
45 | });
|
46 | const runSuites = (selectedSuites) => __awaiter(void 0, void 0, void 0, function* () {
|
47 | const runner = new testrunner_1.TestRunner();
|
48 | selectedSuites.forEach(function (suite) {
|
49 | runner.addSuite(suite);
|
50 | });
|
51 | if (flagpoleexecutionoptions_1.FlagpoleExecution.opts.output == flagpoleexecutionoptions_1.FlagpoleOutput.console) {
|
52 | if (runner.suites.length == 0) {
|
53 | cli_1.Cli.log("Did not find any test suites to run.\n");
|
54 | cli_1.Cli.exit(2);
|
55 | }
|
56 | ansi.writeLine();
|
57 | const states = ["/", "—", "\\", "|"];
|
58 | let stateIndex = 0;
|
59 | let statusMessage = `Loading ${runner.suites.length} test suites...`;
|
60 | let timer = setInterval(() => {
|
61 | ansi.writeLine(ansi.cursorUp(), ansi.eraseLine(), `${states[stateIndex]} ${statusMessage}`);
|
62 | stateIndex = stateIndex < states.length - 1 ? stateIndex + 1 : 0;
|
63 | }, 100);
|
64 | runner.subscribe((message) => {
|
65 | statusMessage = message;
|
66 | });
|
67 | yield runner.runSpawn();
|
68 | clearInterval(timer);
|
69 | ansi.write(ansi.eraseLines(2));
|
70 | }
|
71 | else {
|
72 | yield runner.runSpawn();
|
73 | }
|
74 | cli_1.Cli.exit(runner.exitCode);
|
75 | });
|
76 |
|
\ | No newline at end of file |