@git.zone/tstest 1.0.79

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (34) hide show
  1. package/cli.js +4 -0
  2. package/dist_ts/00_commitinfo_data.d.ts +8 -0
  3. package/dist_ts/00_commitinfo_data.js +9 -0
  4. package/dist_ts/index.d.ts +1 -0
  5. package/dist_ts/index.js +10 -0
  6. package/dist_ts/tstest.classes.tap.combinator.d.ts +6 -0
  7. package/dist_ts/tstest.classes.tap.combinator.js +62 -0
  8. package/dist_ts/tstest.classes.tap.parser.d.ts +37 -0
  9. package/dist_ts/tstest.classes.tap.parser.js +158 -0
  10. package/dist_ts/tstest.classes.tap.testresult.d.ts +14 -0
  11. package/dist_ts/tstest.classes.tap.testresult.js +26 -0
  12. package/dist_ts/tstest.classes.testdirectory.d.ts +27 -0
  13. package/dist_ts/tstest.classes.testdirectory.js +35 -0
  14. package/dist_ts/tstest.classes.tstest.d.ts +14 -0
  15. package/dist_ts/tstest.classes.tstest.js +192 -0
  16. package/dist_ts/tstest.logprefixes.d.ts +3 -0
  17. package/dist_ts/tstest.logprefixes.js +6 -0
  18. package/dist_ts/tstest.paths.d.ts +3 -0
  19. package/dist_ts/tstest.paths.js +5 -0
  20. package/dist_ts/tstest.plugins.d.ts +17 -0
  21. package/dist_ts/tstest.plugins.js +23 -0
  22. package/npmextra.json +17 -0
  23. package/package.json +55 -0
  24. package/readme.md +61 -0
  25. package/ts/00_commitinfo_data.ts +8 -0
  26. package/ts/index.ts +10 -0
  27. package/ts/tstest.classes.tap.combinator.ts +65 -0
  28. package/ts/tstest.classes.tap.parser.ts +202 -0
  29. package/ts/tstest.classes.tap.testresult.ts +26 -0
  30. package/ts/tstest.classes.testdirectory.ts +57 -0
  31. package/ts/tstest.classes.tstest.ts +227 -0
  32. package/ts/tstest.logprefixes.ts +7 -0
  33. package/ts/tstest.paths.ts +5 -0
  34. package/ts/tstest.plugins.ts +42 -0
package/cli.js ADDED
@@ -0,0 +1,4 @@
1
+ #!/usr/bin/env node
2
+ process.env.CLI_CALL = 'true';
3
+ const cliTool = await import('./dist_ts/index.js');
4
+ cliTool.runCli();
@@ -0,0 +1,8 @@
1
+ /**
2
+ * autocreated commitinfo by @pushrocks/commitinfo
3
+ */
4
+ export declare const commitinfo: {
5
+ name: string;
6
+ version: string;
7
+ description: string;
8
+ };
@@ -0,0 +1,9 @@
1
+ /**
2
+ * autocreated commitinfo by @pushrocks/commitinfo
3
+ */
4
+ export const commitinfo = {
5
+ name: '@git.zone/tstest',
6
+ version: '1.0.78',
7
+ description: 'a test utility to run tests that match test/**/*.ts'
8
+ };
9
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMDBfY29tbWl0aW5mb19kYXRhLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vdHMvMDBfY29tbWl0aW5mb19kYXRhLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztHQUVHO0FBQ0gsTUFBTSxDQUFDLE1BQU0sVUFBVSxHQUFHO0lBQ3hCLElBQUksRUFBRSxrQkFBa0I7SUFDeEIsT0FBTyxFQUFFLFFBQVE7SUFDakIsV0FBVyxFQUFFLHFEQUFxRDtDQUNuRSxDQUFBIn0=
@@ -0,0 +1 @@
1
+ export declare const runCli: () => Promise<void>;
@@ -0,0 +1,10 @@
1
+ import { TsTest } from './tstest.classes.tstest.js';
2
+ export const runCli = async () => {
3
+ if (!process.argv[2]) {
4
+ console.error('You must specify a test directory as argument. Please try again.');
5
+ process.exit(1);
6
+ }
7
+ const tsTestInstance = new TsTest(process.cwd(), process.argv[2]);
8
+ await tsTestInstance.run();
9
+ };
10
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi90cy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFFcEQsTUFBTSxDQUFDLE1BQU0sTUFBTSxHQUFHLEtBQUssSUFBSSxFQUFFO0lBQy9CLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFO1FBQ3BCLE9BQU8sQ0FBQyxLQUFLLENBQUMsa0VBQWtFLENBQUMsQ0FBQztRQUNsRixPQUFPLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO0tBQ2pCO0lBQ0QsTUFBTSxjQUFjLEdBQUcsSUFBSSxNQUFNLENBQUMsT0FBTyxDQUFDLEdBQUcsRUFBRSxFQUFFLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNsRSxNQUFNLGNBQWMsQ0FBQyxHQUFHLEVBQUUsQ0FBQztBQUM3QixDQUFDLENBQUMifQ==
@@ -0,0 +1,6 @@
1
+ import { TapParser } from './tstest.classes.tap.parser.js';
2
+ export declare class TapCombinator {
3
+ tapParserStore: TapParser[];
4
+ addTapParser(tapParserArg: TapParser): void;
5
+ evaluate(): void;
6
+ }
@@ -0,0 +1,62 @@
1
+ // ============
2
+ // combines different tap test files to an overall result
3
+ // ============
4
+ import * as plugins from './tstest.plugins.js';
5
+ import { coloredString as cs } from '@push.rocks/consolecolor';
6
+ import { TapParser } from './tstest.classes.tap.parser.js';
7
+ import * as logPrefixes from './tstest.logprefixes.js';
8
+ export class TapCombinator {
9
+ constructor() {
10
+ this.tapParserStore = [];
11
+ }
12
+ addTapParser(tapParserArg) {
13
+ this.tapParserStore.push(tapParserArg);
14
+ }
15
+ evaluate() {
16
+ console.log(`${logPrefixes.TsTestPrefix} RESULTS FOR ${this.tapParserStore.length} TESTFILE(S):`);
17
+ let failGlobal = false; // determine wether tstest should fail
18
+ for (const tapParser of this.tapParserStore) {
19
+ if (!tapParser.expectedTests) {
20
+ failGlobal = true;
21
+ let overviewString = logPrefixes.TsTestPrefix +
22
+ cs(` ${tapParser.fileName} ${plugins.figures.cross}`, 'red') +
23
+ ` ${plugins.figures.pointer} ` +
24
+ `does not specify tests!`;
25
+ console.log(overviewString);
26
+ }
27
+ else if (tapParser.expectedTests !== tapParser.receivedTests) {
28
+ failGlobal = true;
29
+ let overviewString = logPrefixes.TsTestPrefix +
30
+ cs(` ${tapParser.fileName} ${plugins.figures.cross}`, 'red') +
31
+ ` ${plugins.figures.pointer} ` +
32
+ tapParser.getTestOverviewAsString() +
33
+ `did not execute all specified tests!`;
34
+ console.log(overviewString);
35
+ }
36
+ else if (tapParser.getErrorTests().length === 0) {
37
+ let overviewString = logPrefixes.TsTestPrefix +
38
+ cs(` ${tapParser.fileName} ${plugins.figures.tick}`, 'green') +
39
+ ` ${plugins.figures.pointer} ` +
40
+ tapParser.getTestOverviewAsString();
41
+ console.log(overviewString);
42
+ }
43
+ else {
44
+ failGlobal = true;
45
+ let overviewString = logPrefixes.TsTestPrefix +
46
+ cs(` ${tapParser.fileName} ${plugins.figures.cross}`, 'red') +
47
+ ` ${plugins.figures.pointer} ` +
48
+ tapParser.getTestOverviewAsString();
49
+ console.log(overviewString);
50
+ }
51
+ }
52
+ console.log(cs(plugins.figures.hamburger.repeat(48), 'cyan'));
53
+ if (!failGlobal) {
54
+ console.log(cs('FINAL RESULT: SUCCESS!', 'green'));
55
+ }
56
+ else {
57
+ console.log(cs('FINAL RESULT: FAIL!', 'red'));
58
+ process.exit(1);
59
+ }
60
+ }
61
+ }
62
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHN0ZXN0LmNsYXNzZXMudGFwLmNvbWJpbmF0b3IuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi90cy90c3Rlc3QuY2xhc3Nlcy50YXAuY29tYmluYXRvci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxlQUFlO0FBQ2YseURBQXlEO0FBQ3pELGVBQWU7QUFDZixPQUFPLEtBQUssT0FBTyxNQUFNLHFCQUFxQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxhQUFhLElBQUksRUFBRSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFFL0QsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQzNELE9BQU8sS0FBSyxXQUFXLE1BQU0seUJBQXlCLENBQUM7QUFFdkQsTUFBTSxPQUFPLGFBQWE7SUFBMUI7UUFDRSxtQkFBYyxHQUFnQixFQUFFLENBQUM7SUFzRG5DLENBQUM7SUFyREMsWUFBWSxDQUFDLFlBQXVCO1FBQ2xDLElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDO0lBQ3pDLENBQUM7SUFFRCxRQUFRO1FBQ04sT0FBTyxDQUFDLEdBQUcsQ0FDVCxHQUFHLFdBQVcsQ0FBQyxZQUFZLGdCQUFnQixJQUFJLENBQUMsY0FBYyxDQUFDLE1BQU0sZUFBZSxDQUNyRixDQUFDO1FBRUYsSUFBSSxVQUFVLEdBQUcsS0FBSyxDQUFDLENBQUMsc0NBQXNDO1FBQzlELEtBQUssTUFBTSxTQUFTLElBQUksSUFBSSxDQUFDLGNBQWMsRUFBRTtZQUMzQyxJQUFJLENBQUMsU0FBUyxDQUFDLGFBQWEsRUFBRTtnQkFDNUIsVUFBVSxHQUFHLElBQUksQ0FBQztnQkFDbEIsSUFBSSxjQUFjLEdBQ2hCLFdBQVcsQ0FBQyxZQUFZO29CQUN4QixFQUFFLENBQUMsSUFBSSxTQUFTLENBQUMsUUFBUSxJQUFJLE9BQU8sQ0FBQyxPQUFPLENBQUMsS0FBSyxFQUFFLEVBQUUsS0FBSyxDQUFDO29CQUM1RCxJQUFJLE9BQU8sQ0FBQyxPQUFPLENBQUMsT0FBTyxHQUFHO29CQUM5Qix5QkFBeUIsQ0FBQztnQkFDNUIsT0FBTyxDQUFDLEdBQUcsQ0FBQyxjQUFjLENBQUMsQ0FBQzthQUM3QjtpQkFBTSxJQUFJLFNBQVMsQ0FBQyxhQUFhLEtBQUssU0FBUyxDQUFDLGFBQWEsRUFBRTtnQkFDOUQsVUFBVSxHQUFHLElBQUksQ0FBQztnQkFDbEIsSUFBSSxjQUFjLEdBQ2hCLFdBQVcsQ0FBQyxZQUFZO29CQUN4QixFQUFFLENBQUMsSUFBSSxTQUFTLENBQUMsUUFBUSxJQUFJLE9BQU8sQ0FBQyxPQUFPLENBQUMsS0FBSyxFQUFFLEVBQUUsS0FBSyxDQUFDO29CQUM1RCxJQUFJLE9BQU8sQ0FBQyxPQUFPLENBQUMsT0FBTyxHQUFHO29CQUM5QixTQUFTLENBQUMsdUJBQXVCLEVBQUU7b0JBQ25DLHNDQUFzQyxDQUFDO2dCQUN6QyxPQUFPLENBQUMsR0FBRyxDQUFDLGNBQWMsQ0FBQyxDQUFDO2FBQzdCO2lCQUFNLElBQUksU0FBUyxDQUFDLGFBQWEsRUFBRSxDQUFDLE1BQU0sS0FBSyxDQUFDLEVBQUU7Z0JBQ2pELElBQUksY0FBYyxHQUNoQixXQUFXLENBQUMsWUFBWTtvQkFDeEIsRUFBRSxDQUFDLElBQUksU0FBUyxDQUFDLFFBQVEsSUFBSSxPQUFPLENBQUMsT0FBTyxDQUFDLElBQUksRUFBRSxFQUFFLE9BQU8sQ0FBQztvQkFDN0QsSUFBSSxPQUFPLENBQUMsT0FBTyxDQUFDLE9BQU8sR0FBRztvQkFDOUIsU0FBUyxDQUFDLHVCQUF1QixFQUFFLENBQUM7Z0JBQ3RDLE9BQU8sQ0FBQyxHQUFHLENBQUMsY0FBYyxDQUFDLENBQUM7YUFDN0I7aUJBQU07Z0JBQ0wsVUFBVSxHQUFHLElBQUksQ0FBQztnQkFDbEIsSUFBSSxjQUFjLEdBQ2hCLFdBQVcsQ0FBQyxZQUFZO29CQUN4QixFQUFFLENBQUMsSUFBSSxTQUFTLENBQUMsUUFBUSxJQUFJLE9BQU8sQ0FBQyxPQUFPLENBQUMsS0FBSyxFQUFFLEVBQUUsS0FBSyxDQUFDO29CQUM1RCxJQUFJLE9BQU8sQ0FBQyxPQUFPLENBQUMsT0FBTyxHQUFHO29CQUM5QixTQUFTLENBQUMsdUJBQXVCLEVBQUUsQ0FBQztnQkFDdEMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxjQUFjLENBQUMsQ0FBQzthQUM3QjtTQUNGO1FBQ0QsT0FBTyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxFQUFFLE1BQU0sQ0FBQyxDQUFDLENBQUM7UUFDOUQsSUFBSSxDQUFDLFVBQVUsRUFBRTtZQUNmLE9BQU8sQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLHdCQUF3QixFQUFFLE9BQU8sQ0FBQyxDQUFDLENBQUM7U0FDcEQ7YUFBTTtZQUNMLE9BQU8sQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLHFCQUFxQixFQUFFLEtBQUssQ0FBQyxDQUFDLENBQUM7WUFDOUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztTQUNqQjtJQUNILENBQUM7Q0FDRiJ9
@@ -0,0 +1,37 @@
1
+ /// <reference types="node" resolution-mode="require"/>
2
+ import { ChildProcess } from 'child_process';
3
+ import { TapTestResult } from './tstest.classes.tap.testresult.js';
4
+ export declare class TapParser {
5
+ fileName: string;
6
+ testStore: TapTestResult[];
7
+ expectedTestsRegex: RegExp;
8
+ expectedTests: number;
9
+ receivedTests: number;
10
+ testStatusRegex: RegExp;
11
+ activeTapTestResult: TapTestResult;
12
+ /**
13
+ * the constructor for TapParser
14
+ */
15
+ constructor(fileName: string);
16
+ private _getNewTapTestResult;
17
+ private _processLog;
18
+ /**
19
+ * returns all tests that are not completed
20
+ */
21
+ getUncompletedTests(): void;
22
+ /**
23
+ * returns all tests that threw an error
24
+ */
25
+ getErrorTests(): TapTestResult[];
26
+ /**
27
+ * returns a test overview as string
28
+ */
29
+ getTestOverviewAsString(): string;
30
+ /**
31
+ * handles a tap process
32
+ * @param childProcessArg
33
+ */
34
+ handleTapProcess(childProcessArg: ChildProcess): Promise<void>;
35
+ handleTapLog(tapLog: string): Promise<void>;
36
+ private _evaluateResult;
37
+ }
@@ -0,0 +1,158 @@
1
+ import { ChildProcess } from 'child_process';
2
+ import { coloredString as cs } from '@push.rocks/consolecolor';
3
+ // ============
4
+ // combines different tap test files to an overall result
5
+ // ============
6
+ import * as plugins from './tstest.plugins.js';
7
+ import { TapTestResult } from './tstest.classes.tap.testresult.js';
8
+ import * as logPrefixes from './tstest.logprefixes.js';
9
+ export class TapParser {
10
+ /**
11
+ * the constructor for TapParser
12
+ */
13
+ constructor(fileName) {
14
+ this.fileName = fileName;
15
+ this.testStore = [];
16
+ this.expectedTestsRegex = /([0-9]*)\.\.([0-9]*)$/;
17
+ this.testStatusRegex = /(ok|not\sok)\s([0-9]+)\s-\s(.*)\s#\stime=(.*)ms$/;
18
+ }
19
+ _getNewTapTestResult() {
20
+ this.activeTapTestResult = new TapTestResult(this.testStore.length + 1);
21
+ }
22
+ _processLog(logChunk) {
23
+ if (Buffer.isBuffer(logChunk)) {
24
+ logChunk = logChunk.toString();
25
+ }
26
+ const logLineArray = logChunk.split('\n');
27
+ if (logLineArray[logLineArray.length - 1] === '') {
28
+ logLineArray.pop();
29
+ }
30
+ // lets parse the log information
31
+ for (const logLine of logLineArray) {
32
+ let logLineIsTapProtocol = false;
33
+ if (!this.expectedTests && this.expectedTestsRegex.test(logLine)) {
34
+ logLineIsTapProtocol = true;
35
+ const regexResult = this.expectedTestsRegex.exec(logLine);
36
+ this.expectedTests = parseInt(regexResult[2]);
37
+ console.log(`${logPrefixes.TapPrefix} ${cs(`Expecting ${this.expectedTests} tests!`, 'blue')}`);
38
+ // initiating first TapResult
39
+ this._getNewTapTestResult();
40
+ }
41
+ else if (this.testStatusRegex.test(logLine)) {
42
+ logLineIsTapProtocol = true;
43
+ const regexResult = this.testStatusRegex.exec(logLine);
44
+ const testId = parseInt(regexResult[2]);
45
+ const testOk = (() => {
46
+ if (regexResult[1] === 'ok') {
47
+ return true;
48
+ }
49
+ return false;
50
+ })();
51
+ const testSubject = regexResult[3];
52
+ const testDuration = parseInt(regexResult[4]);
53
+ // test for protocol error
54
+ if (testId !== this.activeTapTestResult.id) {
55
+ console.log(`${logPrefixes.TapErrorPrefix} Something is strange! Test Ids are not equal!`);
56
+ }
57
+ this.activeTapTestResult.setTestResult(testOk);
58
+ if (testOk) {
59
+ console.log(logPrefixes.TapPrefix, `${cs(`T${testId} ${plugins.figures.tick}`, 'green')} ${plugins.figures.arrowRight} ` +
60
+ cs(testSubject, 'blue') +
61
+ ` | ${cs(`${testDuration} ms`, 'orange')}`);
62
+ }
63
+ else {
64
+ console.log(logPrefixes.TapPrefix, `${cs(`T${testId} ${plugins.figures.cross}`, 'red')} ${plugins.figures.arrowRight} ` +
65
+ cs(testSubject, 'blue') +
66
+ ` | ${cs(`${testDuration} ms`, 'orange')}`);
67
+ }
68
+ }
69
+ if (!logLineIsTapProtocol) {
70
+ if (this.activeTapTestResult) {
71
+ this.activeTapTestResult.addLogLine(logLine);
72
+ }
73
+ console.log(logLine);
74
+ }
75
+ if (this.activeTapTestResult && this.activeTapTestResult.testSettled) {
76
+ this.testStore.push(this.activeTapTestResult);
77
+ this._getNewTapTestResult();
78
+ }
79
+ }
80
+ }
81
+ /**
82
+ * returns all tests that are not completed
83
+ */
84
+ getUncompletedTests() {
85
+ // TODO:
86
+ }
87
+ /**
88
+ * returns all tests that threw an error
89
+ */
90
+ getErrorTests() {
91
+ return this.testStore.filter((tapTestArg) => {
92
+ return !tapTestArg.testOk;
93
+ });
94
+ }
95
+ /**
96
+ * returns a test overview as string
97
+ */
98
+ getTestOverviewAsString() {
99
+ let overviewString = '';
100
+ for (const test of this.testStore) {
101
+ if (overviewString !== '') {
102
+ overviewString += ' | ';
103
+ }
104
+ if (test.testOk) {
105
+ overviewString += cs(`T${test.id} ${plugins.figures.tick}`, 'green');
106
+ }
107
+ else {
108
+ overviewString += cs(`T${test.id} ${plugins.figures.cross}`, 'red');
109
+ }
110
+ }
111
+ return overviewString;
112
+ }
113
+ /**
114
+ * handles a tap process
115
+ * @param childProcessArg
116
+ */
117
+ async handleTapProcess(childProcessArg) {
118
+ const done = plugins.smartpromise.defer();
119
+ childProcessArg.stdout.on('data', (data) => {
120
+ this._processLog(data);
121
+ });
122
+ childProcessArg.stderr.on('data', (data) => {
123
+ this._processLog(data);
124
+ });
125
+ childProcessArg.on('exit', async () => {
126
+ await this._evaluateResult();
127
+ done.resolve();
128
+ });
129
+ await done.promise;
130
+ }
131
+ async handleTapLog(tapLog) {
132
+ this._processLog(tapLog);
133
+ await this._evaluateResult();
134
+ }
135
+ async _evaluateResult() {
136
+ this.receivedTests = this.testStore.length;
137
+ // check wether all tests ran
138
+ if (this.expectedTests === this.receivedTests) {
139
+ console.log(`${logPrefixes.TapPrefix} ${cs(`${this.receivedTests} out of ${this.expectedTests} Tests completed!`, 'green')}`);
140
+ }
141
+ else {
142
+ console.log(`${logPrefixes.TapErrorPrefix} ${cs(`Only ${this.receivedTests} out of ${this.expectedTests} completed!`, 'red')}`);
143
+ }
144
+ if (!this.expectedTests) {
145
+ console.log(cs('Error: No tests were defined. Therefore the testfile failed!', 'red'));
146
+ }
147
+ else if (this.expectedTests !== this.receivedTests) {
148
+ console.log(cs('Error: The amount of received tests and expectedTests is unequal! Therefore the testfile failed', 'red'));
149
+ }
150
+ else if (this.getErrorTests().length === 0) {
151
+ console.log(`${logPrefixes.TapPrefix} ${cs(`All tests are successfull!!!`, 'green')}`);
152
+ }
153
+ else {
154
+ console.log(`${logPrefixes.TapPrefix} ${cs(`${this.getErrorTests().length} tests threw an error!!!`, 'red')}`);
155
+ }
156
+ }
157
+ }
158
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHN0ZXN0LmNsYXNzZXMudGFwLnBhcnNlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3RzL3RzdGVzdC5jbGFzc2VzLnRhcC5wYXJzZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUM3QyxPQUFPLEVBQUUsYUFBYSxJQUFJLEVBQUUsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBRS9ELGVBQWU7QUFDZix5REFBeUQ7QUFDekQsZUFBZTtBQUNmLE9BQU8sS0FBSyxPQUFPLE1BQU0scUJBQXFCLENBQUM7QUFDL0MsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLG9DQUFvQyxDQUFDO0FBQ25FLE9BQU8sS0FBSyxXQUFXLE1BQU0seUJBQXlCLENBQUM7QUFFdkQsTUFBTSxPQUFPLFNBQVM7SUFVcEI7O09BRUc7SUFDSCxZQUFtQixRQUFnQjtRQUFoQixhQUFRLEdBQVIsUUFBUSxDQUFRO1FBWm5DLGNBQVMsR0FBb0IsRUFBRSxDQUFDO1FBRWhDLHVCQUFrQixHQUFHLHVCQUF1QixDQUFDO1FBSTdDLG9CQUFlLEdBQUcsa0RBQWtELENBQUM7SUFNL0IsQ0FBQztJQUUvQixvQkFBb0I7UUFDMUIsSUFBSSxDQUFDLG1CQUFtQixHQUFHLElBQUksYUFBYSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDO0lBQzFFLENBQUM7SUFFTyxXQUFXLENBQUMsUUFBeUI7UUFDM0MsSUFBSSxNQUFNLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxFQUFFO1lBQzdCLFFBQVEsR0FBRyxRQUFRLENBQUMsUUFBUSxFQUFFLENBQUM7U0FDaEM7UUFDRCxNQUFNLFlBQVksR0FBRyxRQUFRLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQzFDLElBQUksWUFBWSxDQUFDLFlBQVksQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLEtBQUssRUFBRSxF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
@@ -0,0 +1,14 @@
1
+ /// <reference types="node" resolution-mode="require"/>
2
+ export declare class TapTestResult {
3
+ id: number;
4
+ testLogBuffer: Buffer;
5
+ testOk: boolean;
6
+ testSettled: boolean;
7
+ constructor(id: number);
8
+ /**
9
+ * adds a logLine to the log buffer of the test
10
+ * @param logLine
11
+ */
12
+ addLogLine(logLine: string): void;
13
+ setTestResult(testOkArg: boolean): void;
14
+ }
@@ -0,0 +1,26 @@
1
+ // ============
2
+ // combines different tap test files to an overall result
3
+ // ============
4
+ import * as plugins from './tstest.plugins.js';
5
+ export class TapTestResult {
6
+ constructor(id) {
7
+ this.id = id;
8
+ this.testLogBuffer = Buffer.from('');
9
+ this.testOk = false;
10
+ this.testSettled = false;
11
+ }
12
+ /**
13
+ * adds a logLine to the log buffer of the test
14
+ * @param logLine
15
+ */
16
+ addLogLine(logLine) {
17
+ logLine = logLine + '\n';
18
+ const logLineBuffer = Buffer.from(logLine);
19
+ this.testLogBuffer = Buffer.concat([this.testLogBuffer, logLineBuffer]);
20
+ }
21
+ setTestResult(testOkArg) {
22
+ this.testOk = testOkArg;
23
+ this.testSettled = true;
24
+ }
25
+ }
26
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHN0ZXN0LmNsYXNzZXMudGFwLnRlc3RyZXN1bHQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi90cy90c3Rlc3QuY2xhc3Nlcy50YXAudGVzdHJlc3VsdC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxlQUFlO0FBQ2YseURBQXlEO0FBQ3pELGVBQWU7QUFDZixPQUFPLEtBQUssT0FBTyxNQUFNLHFCQUFxQixDQUFDO0FBRS9DLE1BQU0sT0FBTyxhQUFhO0lBSXhCLFlBQW1CLEVBQVU7UUFBVixPQUFFLEdBQUYsRUFBRSxDQUFRO1FBSDdCLGtCQUFhLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUNoQyxXQUFNLEdBQVksS0FBSyxDQUFDO1FBQ3hCLGdCQUFXLEdBQVksS0FBSyxDQUFDO0lBQ0csQ0FBQztJQUVqQzs7O09BR0c7SUFDSCxVQUFVLENBQUMsT0FBZTtRQUN4QixPQUFPLEdBQUcsT0FBTyxHQUFHLElBQUksQ0FBQztRQUN6QixNQUFNLGFBQWEsR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQzNDLElBQUksQ0FBQyxhQUFhLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDLElBQUksQ0FBQyxhQUFhLEVBQUUsYUFBYSxDQUFDLENBQUMsQ0FBQztJQUMxRSxDQUFDO0lBRUQsYUFBYSxDQUFDLFNBQWtCO1FBQzlCLElBQUksQ0FBQyxNQUFNLEdBQUcsU0FBUyxDQUFDO1FBQ3hCLElBQUksQ0FBQyxXQUFXLEdBQUcsSUFBSSxDQUFDO0lBQzFCLENBQUM7Q0FDRiJ9
@@ -0,0 +1,27 @@
1
+ import { Smartfile } from '@push.rocks/smartfile';
2
+ export declare class TestDirectory {
3
+ /**
4
+ * the current working directory
5
+ */
6
+ cwd: string;
7
+ /**
8
+ * the relative location of the test dir
9
+ */
10
+ relativePath: string;
11
+ /**
12
+ * the absolute path of the test dir
13
+ */
14
+ absolutePath: string;
15
+ /**
16
+ * an array of Smartfiles
17
+ */
18
+ testfileArray: Smartfile[];
19
+ /**
20
+ * the constructor for TestDirectory
21
+ * tell it the path
22
+ * @param pathToTestDirectory
23
+ */
24
+ constructor(cwdArg: string, relativePathToTestDirectory: string);
25
+ private _init;
26
+ getTestFilePathArray(): Promise<string[]>;
27
+ }
@@ -0,0 +1,35 @@
1
+ import * as plugins from './tstest.plugins.js';
2
+ import * as paths from './tstest.paths.js';
3
+ import { Smartfile } from '@push.rocks/smartfile';
4
+ // tap related stuff
5
+ import { TapCombinator } from './tstest.classes.tap.combinator.js';
6
+ import { TapParser } from './tstest.classes.tap.parser.js';
7
+ import { TapTestResult } from './tstest.classes.tap.testresult.js';
8
+ export class TestDirectory {
9
+ /**
10
+ * the constructor for TestDirectory
11
+ * tell it the path
12
+ * @param pathToTestDirectory
13
+ */
14
+ constructor(cwdArg, relativePathToTestDirectory) {
15
+ /**
16
+ * an array of Smartfiles
17
+ */
18
+ this.testfileArray = [];
19
+ this.cwd = cwdArg;
20
+ this.relativePath = relativePathToTestDirectory;
21
+ }
22
+ async _init() {
23
+ this.testfileArray = await plugins.smartfile.fs.fileTreeToObject(plugins.path.join(this.cwd, this.relativePath), 'test*.ts');
24
+ }
25
+ async getTestFilePathArray() {
26
+ await this._init();
27
+ const testFilePaths = [];
28
+ for (const testFile of this.testfileArray) {
29
+ const filePath = plugins.path.join(this.relativePath, testFile.path);
30
+ testFilePaths.push(filePath);
31
+ }
32
+ return testFilePaths;
33
+ }
34
+ }
35
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHN0ZXN0LmNsYXNzZXMudGVzdGRpcmVjdG9yeS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3RzL3RzdGVzdC5jbGFzc2VzLnRlc3RkaXJlY3RvcnkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxLQUFLLE9BQU8sTUFBTSxxQkFBcUIsQ0FBQztBQUMvQyxPQUFPLEtBQUssS0FBSyxNQUFNLG1CQUFtQixDQUFDO0FBQzNDLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUVsRCxvQkFBb0I7QUFDcEIsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLG9DQUFvQyxDQUFDO0FBQ25FLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUMzRCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sb0NBQW9DLENBQUM7QUFFbkUsTUFBTSxPQUFPLGFBQWE7SUFxQnhCOzs7O09BSUc7SUFDSCxZQUFZLE1BQWMsRUFBRSwyQkFBbUM7UUFWL0Q7O1dBRUc7UUFDSCxrQkFBYSxHQUFnQixFQUFFLENBQUM7UUFROUIsSUFBSSxDQUFDLEdBQUcsR0FBRyxNQUFNLENBQUM7UUFDbEIsSUFBSSxDQUFDLFlBQVksR0FBRywyQkFBMkIsQ0FBQztJQUNsRCxDQUFDO0lBRU8sS0FBSyxDQUFDLEtBQUs7UUFDakIsSUFBSSxDQUFDLGFBQWEsR0FBRyxNQUFNLE9BQU8sQ0FBQyxTQUFTLENBQUMsRUFBRSxDQUFDLGdCQUFnQixDQUM5RCxPQUFPLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxFQUFFLElBQUksQ0FBQyxZQUFZLENBQUMsRUFDOUMsVUFBVSxDQUNYLENBQUM7SUFDSixDQUFDO0lBRUQsS0FBSyxDQUFDLG9CQUFvQjtRQUN4QixNQUFNLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQztRQUNuQixNQUFNLGFBQWEsR0FBYSxFQUFFLENBQUM7UUFDbkMsS0FBSyxNQUFNLFFBQVEsSUFBSSxJQUFJLENBQUMsYUFBYSxFQUFFO1lBQ3pDLE1BQU0sUUFBUSxHQUFHLE9BQU8sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxZQUFZLEVBQUUsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDO1lBQ3JFLGFBQWEsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7U0FDOUI7UUFDRCxPQUFPLGFBQWEsQ0FBQztJQUN2QixDQUFDO0NBQ0YifQ==
@@ -0,0 +1,14 @@
1
+ import * as plugins from './tstest.plugins.js';
2
+ import { TestDirectory } from './tstest.classes.testdirectory.js';
3
+ import { TapParser } from './tstest.classes.tap.parser.js';
4
+ export declare class TsTest {
5
+ testDir: TestDirectory;
6
+ smartshellInstance: plugins.smartshell.Smartshell;
7
+ smartbrowserInstance: plugins.smartbrowser.SmartBrowser;
8
+ tsbundleInstance: plugins.tsbundle.TsBundle;
9
+ constructor(cwdArg: string, relativePathToTestDirectory: string);
10
+ run(): Promise<void>;
11
+ runInNode(fileNameArg: string): Promise<TapParser>;
12
+ runInChrome(fileNameArg: string): Promise<TapParser>;
13
+ runInDeno(): Promise<void>;
14
+ }