@git.zone/tstest 3.1.7 → 3.2.0
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/dist_ts/00_commitinfo_data.js +1 -1
- package/dist_ts/tstest.classes.migration.js +4 -4
- package/dist_ts/tstest.classes.runtime.bun.js +5 -5
- package/dist_ts/tstest.classes.runtime.chromium.js +12 -10
- package/dist_ts/tstest.classes.runtime.deno.js +7 -7
- package/dist_ts/tstest.classes.runtime.docker.js +2 -2
- package/dist_ts/tstest.classes.runtime.node.js +5 -5
- package/dist_ts/tstest.classes.tap.parser.js +6 -7
- package/dist_ts/tstest.classes.testdirectory.d.ts +1 -1
- package/dist_ts/tstest.classes.testdirectory.js +11 -12
- package/dist_ts/tstest.classes.tstest.js +32 -31
- package/dist_ts/tstest.plugins.d.ts +6 -3
- package/dist_ts/tstest.plugins.js +7 -4
- package/dist_ts_tapbundle/tapbundle.classes.taptest.js +2 -2
- package/dist_ts_tapbundle_serverside/classes.tapnodetools.d.ts +30 -0
- package/dist_ts_tapbundle_serverside/classes.tapnodetools.js +100 -3
- package/dist_ts_tapbundle_serverside/classes.testfileprovider.js +3 -3
- package/dist_ts_tapbundle_serverside/plugins.d.ts +4 -1
- package/dist_ts_tapbundle_serverside/plugins.js +5 -2
- package/package.json +14 -13
- package/readme.hints.md +1 -1
- package/readme.md +273 -868
- package/ts/00_commitinfo_data.ts +1 -1
- package/ts/tstest.classes.migration.ts +3 -6
- package/ts/tstest.classes.runtime.bun.ts +4 -4
- package/ts/tstest.classes.runtime.chromium.ts +8 -12
- package/ts/tstest.classes.runtime.deno.ts +6 -6
- package/ts/tstest.classes.runtime.docker.ts +1 -1
- package/ts/tstest.classes.runtime.node.ts +4 -4
- package/ts/tstest.classes.tap.parser.ts +5 -7
- package/ts/tstest.classes.testdirectory.ts +19 -20
- package/ts/tstest.classes.tstest.ts +36 -41
- package/ts/tstest.plugins.ts +8 -3
|
@@ -70,12 +70,109 @@ class TapNodeTools {
|
|
|
70
70
|
async createSmarts3() {
|
|
71
71
|
const smarts3Mod = await import('@push.rocks/smarts3');
|
|
72
72
|
const smarts3Instance = new smarts3Mod.Smarts3({
|
|
73
|
-
port: 3003,
|
|
74
|
-
cleanSlate: true,
|
|
73
|
+
server: { port: 3003 },
|
|
74
|
+
storage: { cleanSlate: true },
|
|
75
75
|
});
|
|
76
76
|
await smarts3Instance.start();
|
|
77
77
|
return smarts3Instance;
|
|
78
78
|
}
|
|
79
|
+
// ============
|
|
80
|
+
// Network Tools
|
|
81
|
+
// ============
|
|
82
|
+
getSmartNetwork() {
|
|
83
|
+
if (!this.smartnetworkInstance) {
|
|
84
|
+
this.smartnetworkInstance = new plugins.smartnetwork.SmartNetwork();
|
|
85
|
+
}
|
|
86
|
+
return this.smartnetworkInstance;
|
|
87
|
+
}
|
|
88
|
+
/**
|
|
89
|
+
* Find a single free port on the local machine.
|
|
90
|
+
*/
|
|
91
|
+
async findFreePort(optionsArg) {
|
|
92
|
+
const options = {
|
|
93
|
+
startPort: 3000,
|
|
94
|
+
endPort: 60000,
|
|
95
|
+
randomize: true,
|
|
96
|
+
exclude: [],
|
|
97
|
+
...optionsArg,
|
|
98
|
+
};
|
|
99
|
+
const smartnetwork = this.getSmartNetwork();
|
|
100
|
+
const port = await smartnetwork.findFreePort(options.startPort, options.endPort, {
|
|
101
|
+
randomize: options.randomize,
|
|
102
|
+
exclude: options.exclude,
|
|
103
|
+
});
|
|
104
|
+
if (!port) {
|
|
105
|
+
throw new Error(`Could not find a free port in range ${options.startPort}-${options.endPort}`);
|
|
106
|
+
}
|
|
107
|
+
return port;
|
|
108
|
+
}
|
|
109
|
+
/**
|
|
110
|
+
* Find multiple distinct free ports on the local machine.
|
|
111
|
+
* Each found port is automatically excluded from subsequent searches.
|
|
112
|
+
*/
|
|
113
|
+
async findFreePorts(countArg, optionsArg) {
|
|
114
|
+
const options = {
|
|
115
|
+
startPort: 3000,
|
|
116
|
+
endPort: 60000,
|
|
117
|
+
randomize: true,
|
|
118
|
+
exclude: [],
|
|
119
|
+
...optionsArg,
|
|
120
|
+
};
|
|
121
|
+
const smartnetwork = this.getSmartNetwork();
|
|
122
|
+
const ports = [];
|
|
123
|
+
const excluded = new Set(options.exclude);
|
|
124
|
+
for (let i = 0; i < countArg; i++) {
|
|
125
|
+
const port = await smartnetwork.findFreePort(options.startPort, options.endPort, {
|
|
126
|
+
randomize: options.randomize,
|
|
127
|
+
exclude: [...excluded],
|
|
128
|
+
});
|
|
129
|
+
if (!port) {
|
|
130
|
+
throw new Error(`Could only find ${ports.length} of ${countArg} free ports in range ${options.startPort}-${options.endPort}`);
|
|
131
|
+
}
|
|
132
|
+
ports.push(port);
|
|
133
|
+
excluded.add(port);
|
|
134
|
+
}
|
|
135
|
+
return ports;
|
|
136
|
+
}
|
|
137
|
+
/**
|
|
138
|
+
* Find a range of consecutive free ports on the local machine.
|
|
139
|
+
* All returned ports are sequential (e.g., [4000, 4001, 4002]).
|
|
140
|
+
*/
|
|
141
|
+
async findFreePortRange(countArg, optionsArg) {
|
|
142
|
+
const options = {
|
|
143
|
+
startPort: 3000,
|
|
144
|
+
endPort: 60000,
|
|
145
|
+
exclude: [],
|
|
146
|
+
...optionsArg,
|
|
147
|
+
};
|
|
148
|
+
const smartnetwork = this.getSmartNetwork();
|
|
149
|
+
const excludeSet = new Set(options.exclude);
|
|
150
|
+
for (let start = options.startPort; start <= options.endPort - countArg + 1; start++) {
|
|
151
|
+
let allFree = true;
|
|
152
|
+
for (let offset = 0; offset < countArg; offset++) {
|
|
153
|
+
const port = start + offset;
|
|
154
|
+
if (excludeSet.has(port)) {
|
|
155
|
+
allFree = false;
|
|
156
|
+
start = port; // skip ahead past excluded port
|
|
157
|
+
break;
|
|
158
|
+
}
|
|
159
|
+
const isFree = await smartnetwork.isLocalPortUnused(port);
|
|
160
|
+
if (!isFree) {
|
|
161
|
+
allFree = false;
|
|
162
|
+
start = port; // skip ahead past occupied port
|
|
163
|
+
break;
|
|
164
|
+
}
|
|
165
|
+
}
|
|
166
|
+
if (allFree) {
|
|
167
|
+
const ports = [];
|
|
168
|
+
for (let offset = 0; offset < countArg; offset++) {
|
|
169
|
+
ports.push(start + offset);
|
|
170
|
+
}
|
|
171
|
+
return ports;
|
|
172
|
+
}
|
|
173
|
+
}
|
|
174
|
+
throw new Error(`Could not find ${countArg} consecutive free ports in range ${options.startPort}-${options.endPort}`);
|
|
175
|
+
}
|
|
79
176
|
}
|
|
80
177
|
export const tapNodeTools = new TapNodeTools();
|
|
81
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
178
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xhc3Nlcy50YXBub2RldG9vbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi90c190YXBidW5kbGVfc2VydmVyc2lkZS9jbGFzc2VzLnRhcG5vZGV0b29scy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUNqRSxPQUFPLEtBQUssT0FBTyxNQUFNLGNBQWMsQ0FBQztBQUV4QyxNQUFNLFlBQVk7SUFLaEI7UUFGTyxxQkFBZ0IsR0FBRyxJQUFJLGdCQUFnQixFQUFFLENBQUM7SUFFbEMsQ0FBQztJQUdULEtBQUssQ0FBQyxPQUFPO1FBQ2xCLElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDLElBQUksSUFBSSxJQUFJLE9BQU8sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxTQUFTLENBQUMsQ0FBQztRQUNoRSxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUM7SUFDbkIsQ0FBQztJQUNNLEtBQUssQ0FBQyxpQkFBaUIsQ0FBQyxhQUFxQjtRQUNsRCxNQUFNLElBQUksR0FBRyxNQUFNLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQztRQUNsQyxPQUFPLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxhQUFhLENBQUMsQ0FBQztJQUMvQyxDQUFDO0lBRU0sS0FBSyxDQUFDLFVBQVUsQ0FBQyxVQUFrQjtRQUN4QyxJQUFJLENBQUMsSUFBSSxDQUFDLGtCQUFrQixFQUFFLENBQUM7WUFDN0IsSUFBSSxDQUFDLGtCQUFrQixHQUFHLElBQUksT0FBTyxDQUFDLFVBQVUsQ0FBQyxVQUFVLENBQUM7Z0JBQzFELFFBQVEsRUFBRSxNQUFNO2FBQ2pCLENBQUMsQ0FBQztRQUNMLENBQUM7UUFDRCxNQUFNLE1BQU0sR0FBRyxNQUFNLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUM7UUFDOUQsT0FBTyxNQUFNLENBQUM7SUFDaEIsQ0FB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
|
|
@@ -10,10 +10,10 @@ export class TestFileProvider {
|
|
|
10
10
|
const response = await plugins.smartrequest.SmartRequest.create()
|
|
11
11
|
.url(fileUrls.dockerAlpineImage)
|
|
12
12
|
.get();
|
|
13
|
-
await plugins.
|
|
13
|
+
await plugins.smartfsInstance.directory(paths.testFilesDir).recursive().create();
|
|
14
14
|
const buffer = Buffer.from(await response.arrayBuffer());
|
|
15
|
-
await plugins.
|
|
15
|
+
await plugins.smartfsInstance.file(filePath).write(buffer);
|
|
16
16
|
return filePath;
|
|
17
17
|
}
|
|
18
18
|
}
|
|
19
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
19
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xhc3Nlcy50ZXN0ZmlsZXByb3ZpZGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vdHNfdGFwYnVuZGxlX3NlcnZlcnNpZGUvY2xhc3Nlcy50ZXN0ZmlsZXByb3ZpZGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sS0FBSyxPQUFPLE1BQU0sY0FBYyxDQUFDO0FBQ3hDLE9BQU8sS0FBSyxLQUFLLE1BQU0sWUFBWSxDQUFDO0FBRXBDLE1BQU0sQ0FBQyxNQUFNLFFBQVEsR0FBRztJQUN0QixpQkFBaUIsRUFBRSx1RUFBdUU7Q0FDM0YsQ0FBQTtBQUVELE1BQU0sT0FBTyxnQkFBZ0I7SUFDcEIsS0FBSyxDQUFDLGtDQUFrQztRQUM3QyxNQUFNLFFBQVEsR0FBRyxPQUFPLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsWUFBWSxFQUFFLFlBQVksQ0FBQyxDQUFBO1FBQ3BFLGdDQUFnQztRQUNoQyxNQUFNLFFBQVEsR0FBRyxNQUFNLE9BQU8sQ0FBQyxZQUFZLENBQUMsWUFBWSxDQUFDLE1BQU0sRUFBRTthQUM5RCxHQUFHLENBQUMsUUFBUSxDQUFDLGlCQUFpQixDQUFDO2FBQy9CLEdBQUcsRUFBRSxDQUFDO1FBQ1QsTUFBTSxPQUFPLENBQUMsZUFBZSxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsWUFBWSxDQUFDLENBQUMsU0FBUyxFQUFFLENBQUMsTUFBTSxFQUFFLENBQUM7UUFDakYsTUFBTSxNQUFNLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQyxNQUFNLFFBQVEsQ0FBQyxXQUFXLEVBQUUsQ0FBQyxDQUFDO1FBQ3pELE1BQU0sT0FBTyxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQzNELE9BQU8sUUFBUSxDQUFDO0lBQ2xCLENBQUM7Q0FDRiJ9
|
|
@@ -5,7 +5,10 @@ export { crypto, fs, path, };
|
|
|
5
5
|
import * as qenv from '@push.rocks/qenv';
|
|
6
6
|
import * as smartcrypto from '@push.rocks/smartcrypto';
|
|
7
7
|
import * as smartfile from '@push.rocks/smartfile';
|
|
8
|
+
import * as smartfs from '@push.rocks/smartfs';
|
|
9
|
+
declare const smartfsInstance: smartfs.SmartFs;
|
|
10
|
+
import * as smartnetwork from '@push.rocks/smartnetwork';
|
|
8
11
|
import * as smartpath from '@push.rocks/smartpath';
|
|
9
12
|
import * as smartrequest from '@push.rocks/smartrequest';
|
|
10
13
|
import * as smartshell from '@push.rocks/smartshell';
|
|
11
|
-
export { qenv, smartcrypto, smartfile, smartpath, smartrequest, smartshell, };
|
|
14
|
+
export { qenv, smartcrypto, smartfile, smartfs, smartfsInstance, smartnetwork, smartpath, smartrequest, smartshell, };
|
|
@@ -7,8 +7,11 @@ export { crypto, fs, path, };
|
|
|
7
7
|
import * as qenv from '@push.rocks/qenv';
|
|
8
8
|
import * as smartcrypto from '@push.rocks/smartcrypto';
|
|
9
9
|
import * as smartfile from '@push.rocks/smartfile';
|
|
10
|
+
import * as smartfs from '@push.rocks/smartfs';
|
|
11
|
+
const smartfsInstance = new smartfs.SmartFs(new smartfs.SmartFsProviderNode());
|
|
12
|
+
import * as smartnetwork from '@push.rocks/smartnetwork';
|
|
10
13
|
import * as smartpath from '@push.rocks/smartpath';
|
|
11
14
|
import * as smartrequest from '@push.rocks/smartrequest';
|
|
12
15
|
import * as smartshell from '@push.rocks/smartshell';
|
|
13
|
-
export { qenv, smartcrypto, smartfile, smartpath, smartrequest, smartshell, };
|
|
14
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
16
|
+
export { qenv, smartcrypto, smartfile, smartfs, smartfsInstance, smartnetwork, smartpath, smartrequest, smartshell, };
|
|
17
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGx1Z2lucy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3RzX3RhcGJ1bmRsZV9zZXJ2ZXJzaWRlL3BsdWdpbnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYztBQUNkLE9BQU8sS0FBSyxNQUFNLE1BQU0sUUFBUSxDQUFDO0FBQ2pDLE9BQU8sS0FBSyxFQUFFLE1BQU0sSUFBSSxDQUFDO0FBQ3pCLE9BQU8sS0FBSyxJQUFJLE1BQU0sTUFBTSxDQUFDO0FBRTdCLE9BQU8sRUFBRSxNQUFNLEVBQUMsRUFBRSxFQUFFLElBQUksR0FBRyxDQUFDO0FBRTVCLG9CQUFvQjtBQUNwQixPQUFPLEtBQUssSUFBSSxNQUFNLGtCQUFrQixDQUFDO0FBQ3pDLE9BQU8sS0FBSyxXQUFXLE1BQU0seUJBQXlCLENBQUM7QUFDdkQsT0FBTyxLQUFLLFNBQVMsTUFBTSx1QkFBdUIsQ0FBQztBQUNuRCxPQUFPLEtBQUssT0FBTyxNQUFNLHFCQUFxQixDQUFDO0FBQy9DLE1BQU0sZUFBZSxHQUFHLElBQUksT0FBTyxDQUFDLE9BQU8sQ0FBQyxJQUFJLE9BQU8sQ0FBQyxtQkFBbUIsRUFBRSxDQUFDLENBQUM7QUFDL0UsT0FBTyxLQUFLLFlBQVksTUFBTSwwQkFBMEIsQ0FBQztBQUN6RCxPQUFPLEtBQUssU0FBUyxNQUFNLHVCQUF1QixDQUFDO0FBQ25ELE9BQU8sS0FBSyxZQUFZLE1BQU0sMEJBQTBCLENBQUM7QUFDekQsT0FBTyxLQUFLLFVBQVUsTUFBTSx3QkFBd0IsQ0FBQztBQUVyRCxPQUFPLEVBQUUsSUFBSSxFQUFFLFdBQVcsRUFBRSxTQUFTLEVBQUUsT0FBTyxFQUFFLGVBQWUsRUFBRSxZQUFZLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxVQUFVLEdBQUcsQ0FBQyJ9
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@git.zone/tstest",
|
|
3
|
-
"version": "3.
|
|
3
|
+
"version": "3.2.0",
|
|
4
4
|
"private": false,
|
|
5
5
|
"description": "a test utility to run tests that match test/**/*.ts",
|
|
6
6
|
"exports": {
|
|
@@ -25,35 +25,36 @@
|
|
|
25
25
|
"buildDocs": "tsdoc"
|
|
26
26
|
},
|
|
27
27
|
"devDependencies": {
|
|
28
|
-
"@git.zone/tsbuild": "^
|
|
28
|
+
"@git.zone/tsbuild": "^4.1.2",
|
|
29
29
|
"@types/node": "^22.15.21"
|
|
30
30
|
},
|
|
31
31
|
"dependencies": {
|
|
32
|
-
"@api.global/typedserver": "^
|
|
33
|
-
"@git.zone/tsbundle": "^2.
|
|
34
|
-
"@git.zone/tsrun": "^2.0.
|
|
32
|
+
"@api.global/typedserver": "^8.4.0",
|
|
33
|
+
"@git.zone/tsbundle": "^2.9.0",
|
|
34
|
+
"@git.zone/tsrun": "^2.0.1",
|
|
35
35
|
"@push.rocks/consolecolor": "^2.0.3",
|
|
36
36
|
"@push.rocks/qenv": "^6.1.3",
|
|
37
37
|
"@push.rocks/smartbrowser": "^2.0.8",
|
|
38
|
-
"@push.rocks/smartchok": "^1.1.1",
|
|
39
38
|
"@push.rocks/smartcrypto": "^2.0.4",
|
|
40
39
|
"@push.rocks/smartdelay": "^3.0.5",
|
|
41
40
|
"@push.rocks/smartenv": "^6.0.0",
|
|
42
41
|
"@push.rocks/smartexpect": "^2.5.0",
|
|
43
|
-
"@push.rocks/smartfile": "^
|
|
44
|
-
"@push.rocks/
|
|
45
|
-
"@push.rocks/
|
|
46
|
-
"@push.rocks/
|
|
42
|
+
"@push.rocks/smartfile": "^13.1.2",
|
|
43
|
+
"@push.rocks/smartfs": "^1.3.1",
|
|
44
|
+
"@push.rocks/smartjson": "^6.0.0",
|
|
45
|
+
"@push.rocks/smartlog": "^3.2.1",
|
|
46
|
+
"@push.rocks/smartmongo": "^5.1.0",
|
|
47
47
|
"@push.rocks/smartnetwork": "^4.4.0",
|
|
48
48
|
"@push.rocks/smartpath": "^6.0.0",
|
|
49
49
|
"@push.rocks/smartpromise": "^4.2.3",
|
|
50
50
|
"@push.rocks/smartrequest": "^5.0.1",
|
|
51
|
-
"@push.rocks/smarts3": "^3.0
|
|
51
|
+
"@push.rocks/smarts3": "^5.3.0",
|
|
52
52
|
"@push.rocks/smartshell": "^3.3.0",
|
|
53
|
-
"@push.rocks/
|
|
53
|
+
"@push.rocks/smartwatch": "^6.3.0",
|
|
54
|
+
"@push.rocks/smarttime": "^4.2.3",
|
|
54
55
|
"@types/ws": "^8.18.1",
|
|
55
56
|
"figures": "^6.1.0",
|
|
56
|
-
"ws": "^8.
|
|
57
|
+
"ws": "^8.19.0"
|
|
57
58
|
},
|
|
58
59
|
"files": [
|
|
59
60
|
"ts/**/*",
|
package/readme.hints.md
CHANGED
|
@@ -6,7 +6,7 @@ This project integrates tstest with tapbundle through a modular architecture:
|
|
|
6
6
|
|
|
7
7
|
1. **tstest** (`/ts/`) - The test runner that discovers and executes test files
|
|
8
8
|
2. **tapbundle** (`/ts_tapbundle/`) - The TAP testing framework for writing tests
|
|
9
|
-
3. **tapbundle_serverside** (`/ts_tapbundle_serverside/`) - Server-side testing utilities (runCommand, env vars, HTTPS certs, MongoDB, S3, test assets)
|
|
9
|
+
3. **tapbundle_serverside** (`/ts_tapbundle_serverside/`) - Server-side testing utilities (network port finding, runCommand, env vars, HTTPS certs, MongoDB, S3, test assets)
|
|
10
10
|
|
|
11
11
|
## How Components Work Together
|
|
12
12
|
|