@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.
- package/cli.js +4 -0
- package/dist_ts/00_commitinfo_data.d.ts +8 -0
- package/dist_ts/00_commitinfo_data.js +9 -0
- package/dist_ts/index.d.ts +1 -0
- package/dist_ts/index.js +10 -0
- package/dist_ts/tstest.classes.tap.combinator.d.ts +6 -0
- package/dist_ts/tstest.classes.tap.combinator.js +62 -0
- package/dist_ts/tstest.classes.tap.parser.d.ts +37 -0
- package/dist_ts/tstest.classes.tap.parser.js +158 -0
- package/dist_ts/tstest.classes.tap.testresult.d.ts +14 -0
- package/dist_ts/tstest.classes.tap.testresult.js +26 -0
- package/dist_ts/tstest.classes.testdirectory.d.ts +27 -0
- package/dist_ts/tstest.classes.testdirectory.js +35 -0
- package/dist_ts/tstest.classes.tstest.d.ts +14 -0
- package/dist_ts/tstest.classes.tstest.js +192 -0
- package/dist_ts/tstest.logprefixes.d.ts +3 -0
- package/dist_ts/tstest.logprefixes.js +6 -0
- package/dist_ts/tstest.paths.d.ts +3 -0
- package/dist_ts/tstest.paths.js +5 -0
- package/dist_ts/tstest.plugins.d.ts +17 -0
- package/dist_ts/tstest.plugins.js +23 -0
- package/npmextra.json +17 -0
- package/package.json +55 -0
- package/readme.md +61 -0
- package/ts/00_commitinfo_data.ts +8 -0
- package/ts/index.ts +10 -0
- package/ts/tstest.classes.tap.combinator.ts +65 -0
- package/ts/tstest.classes.tap.parser.ts +202 -0
- package/ts/tstest.classes.tap.testresult.ts +26 -0
- package/ts/tstest.classes.testdirectory.ts +57 -0
- package/ts/tstest.classes.tstest.ts +227 -0
- package/ts/tstest.logprefixes.ts +7 -0
- package/ts/tstest.paths.ts +5 -0
- package/ts/tstest.plugins.ts +42 -0
package/cli.js
ADDED
|
@@ -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>;
|
package/dist_ts/index.js
ADDED
|
@@ -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,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
|
+
}
|