@git.zone/tstest 2.8.3 → 3.0.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_tapbundle_serverside/classes.tapnodetools.d.ts +25 -0
- package/dist_ts_tapbundle_serverside/classes.tapnodetools.js +81 -0
- package/dist_ts_tapbundle_serverside/classes.testfileprovider.d.ts +6 -0
- package/dist_ts_tapbundle_serverside/classes.testfileprovider.js +19 -0
- package/dist_ts_tapbundle_serverside/index.d.ts +1 -0
- package/dist_ts_tapbundle_serverside/index.js +2 -0
- package/dist_ts_tapbundle_serverside/paths.d.ts +2 -0
- package/dist_ts_tapbundle_serverside/paths.js +4 -0
- package/dist_ts_tapbundle_serverside/plugins.d.ts +11 -0
- package/dist_ts_tapbundle_serverside/plugins.js +14 -0
- package/package.json +2 -2
- package/readme.hints.md +3 -3
- package/readme.md +26 -1
- package/ts/00_commitinfo_data.ts +1 -1
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
*/
|
|
4
4
|
export const commitinfo = {
|
|
5
5
|
name: '@git.zone/tstest',
|
|
6
|
-
version: '
|
|
6
|
+
version: '3.0.0',
|
|
7
7
|
description: 'a test utility to run tests that match test/**/*.ts'
|
|
8
8
|
};
|
|
9
9
|
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMDBfY29tbWl0aW5mb19kYXRhLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vdHMvMDBfY29tbWl0aW5mb19kYXRhLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztHQUVHO0FBQ0gsTUFBTSxDQUFDLE1BQU0sVUFBVSxHQUFHO0lBQ3hCLElBQUksRUFBRSxrQkFBa0I7SUFDeEIsT0FBTyxFQUFFLE9BQU87SUFDaEIsV0FBVyxFQUFFLHFEQUFxRDtDQUNuRSxDQUFBIn0=
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import { TestFileProvider } from './classes.testfileprovider.js';
|
|
2
|
+
import * as plugins from './plugins.js';
|
|
3
|
+
declare class TapNodeTools {
|
|
4
|
+
private smartshellInstance;
|
|
5
|
+
testFileProvider: TestFileProvider;
|
|
6
|
+
constructor();
|
|
7
|
+
private qenv;
|
|
8
|
+
getQenv(): Promise<plugins.qenv.Qenv>;
|
|
9
|
+
getEnvVarOnDemand(envVarNameArg: string): Promise<string>;
|
|
10
|
+
runCommand(commandArg: string): Promise<any>;
|
|
11
|
+
createHttpsCert(commonName?: string, allowSelfSigned?: boolean): Promise<{
|
|
12
|
+
key: string;
|
|
13
|
+
cert: string;
|
|
14
|
+
}>;
|
|
15
|
+
/**
|
|
16
|
+
* create and return a smartmongo instance
|
|
17
|
+
*/
|
|
18
|
+
createSmartmongo(): Promise<import("@push.rocks/smartmongo").SmartMongo>;
|
|
19
|
+
/**
|
|
20
|
+
* create and return a smarts3 instance
|
|
21
|
+
*/
|
|
22
|
+
createSmarts3(): Promise<import("@push.rocks/smarts3").Smarts3>;
|
|
23
|
+
}
|
|
24
|
+
export declare const tapNodeTools: TapNodeTools;
|
|
25
|
+
export {};
|
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
import { TestFileProvider } from './classes.testfileprovider.js';
|
|
2
|
+
import * as plugins from './plugins.js';
|
|
3
|
+
class TapNodeTools {
|
|
4
|
+
constructor() {
|
|
5
|
+
this.testFileProvider = new TestFileProvider();
|
|
6
|
+
}
|
|
7
|
+
async getQenv() {
|
|
8
|
+
this.qenv = this.qenv || new plugins.qenv.Qenv('./', '.nogit/');
|
|
9
|
+
return this.qenv;
|
|
10
|
+
}
|
|
11
|
+
async getEnvVarOnDemand(envVarNameArg) {
|
|
12
|
+
const qenv = await this.getQenv();
|
|
13
|
+
return qenv.getEnvVarOnDemand(envVarNameArg);
|
|
14
|
+
}
|
|
15
|
+
async runCommand(commandArg) {
|
|
16
|
+
if (!this.smartshellInstance) {
|
|
17
|
+
this.smartshellInstance = new plugins.smartshell.Smartshell({
|
|
18
|
+
executor: 'bash',
|
|
19
|
+
});
|
|
20
|
+
}
|
|
21
|
+
const result = await this.smartshellInstance.exec(commandArg);
|
|
22
|
+
return result;
|
|
23
|
+
}
|
|
24
|
+
async createHttpsCert(commonName = 'localhost', allowSelfSigned = true) {
|
|
25
|
+
if (allowSelfSigned) {
|
|
26
|
+
// set node to allow self-signed certificates
|
|
27
|
+
process.env.NODE_TLS_REJECT_UNAUTHORIZED = '0';
|
|
28
|
+
}
|
|
29
|
+
// Generate a key pair
|
|
30
|
+
const keys = plugins.smartcrypto.nodeForge.pki.rsa.generateKeyPair(2048);
|
|
31
|
+
// Create a self-signed certificate
|
|
32
|
+
const cert = plugins.smartcrypto.nodeForge.pki.createCertificate();
|
|
33
|
+
cert.publicKey = keys.publicKey;
|
|
34
|
+
cert.serialNumber = '01';
|
|
35
|
+
cert.validity.notBefore = new Date();
|
|
36
|
+
cert.validity.notAfter = new Date();
|
|
37
|
+
cert.validity.notAfter.setFullYear(cert.validity.notBefore.getFullYear() + 1);
|
|
38
|
+
const attrs = [
|
|
39
|
+
{ name: 'commonName', value: commonName },
|
|
40
|
+
{ name: 'countryName', value: 'US' },
|
|
41
|
+
{ shortName: 'ST', value: 'California' },
|
|
42
|
+
{ name: 'localityName', value: 'San Francisco' },
|
|
43
|
+
{ name: 'organizationName', value: 'My Company' },
|
|
44
|
+
{ shortName: 'OU', value: 'Dev' },
|
|
45
|
+
];
|
|
46
|
+
cert.setSubject(attrs);
|
|
47
|
+
cert.setIssuer(attrs);
|
|
48
|
+
// Sign the certificate with its own private key (self-signed)
|
|
49
|
+
cert.sign(keys.privateKey, plugins.smartcrypto.nodeForge.md.sha256.create());
|
|
50
|
+
// PEM encode the private key and certificate
|
|
51
|
+
const pemKey = plugins.smartcrypto.nodeForge.pki.privateKeyToPem(keys.privateKey);
|
|
52
|
+
const pemCert = plugins.smartcrypto.nodeForge.pki.certificateToPem(cert);
|
|
53
|
+
return {
|
|
54
|
+
key: pemKey,
|
|
55
|
+
cert: pemCert,
|
|
56
|
+
};
|
|
57
|
+
}
|
|
58
|
+
/**
|
|
59
|
+
* create and return a smartmongo instance
|
|
60
|
+
*/
|
|
61
|
+
async createSmartmongo() {
|
|
62
|
+
const smartmongoMod = await import('@push.rocks/smartmongo');
|
|
63
|
+
const smartmongoInstance = new smartmongoMod.SmartMongo();
|
|
64
|
+
await smartmongoInstance.start();
|
|
65
|
+
return smartmongoInstance;
|
|
66
|
+
}
|
|
67
|
+
/**
|
|
68
|
+
* create and return a smarts3 instance
|
|
69
|
+
*/
|
|
70
|
+
async createSmarts3() {
|
|
71
|
+
const smarts3Mod = await import('@push.rocks/smarts3');
|
|
72
|
+
const smarts3Instance = new smarts3Mod.Smarts3({
|
|
73
|
+
port: 3003,
|
|
74
|
+
cleanSlate: true,
|
|
75
|
+
});
|
|
76
|
+
await smarts3Instance.start();
|
|
77
|
+
return smarts3Instance;
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
export const tapNodeTools = new TapNodeTools();
|
|
81
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xhc3Nlcy50YXBub2RldG9vbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi90c190YXBidW5kbGVfc2VydmVyc2lkZS9jbGFzc2VzLnRhcG5vZGV0b29scy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUNqRSxPQUFPLEtBQUssT0FBTyxNQUFNLGNBQWMsQ0FBQztBQUV4QyxNQUFNLFlBQVk7SUFJaEI7UUFGTyxxQkFBZ0IsR0FBRyxJQUFJLGdCQUFnQixFQUFFLENBQUM7SUFFbEMsQ0FBQztJQUdULEtBQUssQ0FBQyxPQUFPO1FBQ2xCLElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDLElBQUksSUFBSSxJQUFJLE9BQU8sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxTQUFTLENBQUMsQ0FBQztRQUNoRSxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUM7SUFDbkIsQ0FBQztJQUNNLEtBQUssQ0FBQyxpQkFBaUIsQ0FBQyxhQUFxQjtRQUNsRCxNQUFNLElBQUksR0FBRyxNQUFNLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQztRQUNsQyxPQUFPLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxhQUFhLENBQUMsQ0FBQztJQUMvQyxDQUFDO0lBRU0sS0FBSyxDQUFDLFVBQVUsQ0FBQyxVQUFrQjtRQUN4QyxJQUFJLENBQUMsSUFBSSxDQUFDLGtCQUFrQixFQUFFLENBQUM7WUFDN0IsSUFBSSxDQUFDLGtCQUFrQixHQUFHLElBQUksT0FBTyxDQUFDLFVBQVUsQ0FBQyxVQUFVLENBQUM7Z0JBQzFELFFBQVEsRUFBRSxNQUFNO2FBQ2pCLENBQUMsQ0FBQztRQUNMLENBQUM7UUFDRCxNQUFNLE1BQU0sR0FBRyxNQUFNLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUM7UUFDOUQsT0FBTyxNQUFNLENBQUM7SUFDaEIsQ0FBQztJQUVNLEtBQUssQ0FBQyxlQUFlLENBQzFCLGFBQXFCLFdBQVcsRUFDaEMsa0JBQTJCLElBQUk7UUFFL0IsSUFBSSxlQUFlLEVBQUUsQ0FBQztZQUNwQiw2Q0FBNkM7WUFDN0MsT0FBTyxDQUFDLEdBQUcsQ0FBQyw0QkFBNEIsR0FBRyxHQUFHLENBQUM7UUFDakQsQ0FBQztRQUVELHNCQUFzQjtRQUN0QixNQUFNLElBQUksR0FBRyxPQUFPLENBQUMsV0FBVyxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUV6RSxtQ0FBbUM7UUFDbkMsTUFBTSxJQUFJLEdBQUcsT0FBTyxDQUFDLFdBQVcsQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLGlCQUFpQixFQUFFLENBQUM7UUFDbkUsSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDO1FBQ2hDLElBQUksQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFDO1FBQ3pCLElBQUksQ0FBQyxRQUFRLENBQUMsU0FBUyxHQUFHLElBQUksSUFBSSxFQUFFLENBQUM7UUFDckMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxRQUFRLEdBQUcsSUFBSSxJQUFJLEVBQUUsQ0FBQztRQUNwQyxJQUFJLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxTQUFTLENBQUMsV0FBVyxFQUFFLEdBQUcsQ0FBQyxDQUFDLENBQUM7UUFFOUUsTUFBTSxLQUFLLEdBQUc7WUFDWixFQUFFLElBQUksRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFFLFVBQVUsRUFBRTtZQUN6QyxFQUFFLElBQUksRUFBRSxhQUFhLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRTtZQUNwQyxFQUFFLFNBQVMsRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLFlBQVksRUFBRTtZQUN4QyxFQUFFLElBQUksRUFBRSxjQUFjLEVBQUUsS0FBSyxFQUFFLGVBQWUsRUFBRTtZQUNoRCxFQUFFLElBQUksRUFBRSxrQkFBa0IsRUFBRSxLQUFLLEVBQUUsWUFBWSxFQUFFO1lBQ2pELEVBQUUsU0FBUyxFQUFFLElBQUksRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFO1NBQ2xDLENBQUM7UUFDRixJQUFJLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ3ZCLElBQUksQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLENBQUM7UUFFdEIsOERBQThEO1FBQzlELElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFVBQVUsRUFBRSxPQUFPLENBQUMsV0FBVyxDQUFDLFNBQVMsQ0FBQyxFQUFFLENBQUMsTUFBTSxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUM7UUFFN0UsNkNBQTZDO1FBQzdDLE1BQU0sTUFBTSxHQUFHLE9BQU8sQ0FBQyxXQUFXLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBQ2xGLE1BQU0sT0FBTyxHQUFHLE9BQU8sQ0FBQyxXQUFXLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUV6RSxPQUFPO1lBQ0wsR0FBRyxFQUFFLE1BQU07WUFDWCxJQUFJLEVBQUUsT0FBTztTQUNkLENBQUM7SUFDSixDQUFDO0lBRUQ7O09BRUc7SUFDSSxLQUFLLENBQUMsZ0JBQWdCO1FBQzNCLE1BQU0sYUFBYSxHQUFHLE1BQU0sTUFBTSxDQUFDLHdCQUF3QixDQUFDLENBQUM7UUFDN0QsTUFBTSxrQkFBa0IsR0FBRyxJQUFJLGFBQWEsQ0FBQyxVQUFVLEVBQUUsQ0FBQztRQUMxRCxNQUFNLGtCQUFrQixDQUFDLEtBQUssRUFBRSxDQUFDO1FBQ2pDLE9BQU8sa0JBQWtCLENBQUM7SUFDNUIsQ0FBQztJQUVEOztPQUVHO0lBQ0ksS0FBSyxDQUFDLGFBQWE7UUFDeEIsTUFBTSxVQUFVLEdBQUcsTUFBTSxNQUFNLENBQUMscUJBQXFCLENBQUMsQ0FBQztRQUN2RCxNQUFNLGVBQWUsR0FBRyxJQUFJLFVBQVUsQ0FBQyxPQUFPLENBQUM7WUFDN0MsSUFBSSxFQUFFLElBQUk7WUFDVixVQUFVLEVBQUUsSUFBSTtTQUNqQixDQUFDLENBQUM7UUFDSCxNQUFNLGVBQWUsQ0FBQyxLQUFLLEVBQUUsQ0FBQztRQUM5QixPQUFPLGVBQWUsQ0FBQztJQUN6QixDQUFDO0NBQ0Y7QUFFRCxNQUFNLENBQUMsTUFBTSxZQUFZLEdBQUcsSUFBSSxZQUFZLEVBQUUsQ0FBQyJ9
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import * as plugins from './plugins.js';
|
|
2
|
+
import * as paths from './paths.js';
|
|
3
|
+
export const fileUrls = {
|
|
4
|
+
dockerAlpineImage: 'https://code.foss.global/testassets/docker/raw/branch/main/alpine.tar',
|
|
5
|
+
};
|
|
6
|
+
export class TestFileProvider {
|
|
7
|
+
async getDockerAlpineImageAsLocalTarball() {
|
|
8
|
+
const filePath = plugins.path.join(paths.testFilesDir, 'alpine.tar');
|
|
9
|
+
// fetch the docker alpine image
|
|
10
|
+
const response = await plugins.smartrequest.SmartRequest.create()
|
|
11
|
+
.url(fileUrls.dockerAlpineImage)
|
|
12
|
+
.get();
|
|
13
|
+
await plugins.smartfile.fs.ensureDir(paths.testFilesDir);
|
|
14
|
+
const buffer = Buffer.from(await response.arrayBuffer());
|
|
15
|
+
await plugins.smartfile.memory.toFs(buffer, filePath);
|
|
16
|
+
return filePath;
|
|
17
|
+
}
|
|
18
|
+
}
|
|
19
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xhc3Nlcy50ZXN0ZmlsZXByb3ZpZGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vdHNfdGFwYnVuZGxlX3NlcnZlcnNpZGUvY2xhc3Nlcy50ZXN0ZmlsZXByb3ZpZGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sS0FBSyxPQUFPLE1BQU0sY0FBYyxDQUFDO0FBQ3hDLE9BQU8sS0FBSyxLQUFLLE1BQU0sWUFBWSxDQUFDO0FBRXBDLE1BQU0sQ0FBQyxNQUFNLFFBQVEsR0FBRztJQUN0QixpQkFBaUIsRUFBRSx1RUFBdUU7Q0FDM0YsQ0FBQTtBQUVELE1BQU0sT0FBTyxnQkFBZ0I7SUFDcEIsS0FBSyxDQUFDLGtDQUFrQztRQUM3QyxNQUFNLFFBQVEsR0FBRyxPQUFPLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsWUFBWSxFQUFFLFlBQVksQ0FBQyxDQUFBO1FBQ3BFLGdDQUFnQztRQUNoQyxNQUFNLFFBQVEsR0FBRyxNQUFNLE9BQU8sQ0FBQyxZQUFZLENBQUMsWUFBWSxDQUFDLE1BQU0sRUFBRTthQUM5RCxHQUFHLENBQUMsUUFBUSxDQUFDLGlCQUFpQixDQUFDO2FBQy9CLEdBQUcsRUFBRSxDQUFDO1FBQ1QsTUFBTSxPQUFPLENBQUMsU0FBUyxDQUFDLEVBQUUsQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLFlBQVksQ0FBQyxDQUFDO1FBQ3pELE1BQU0sTUFBTSxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsTUFBTSxRQUFRLENBQUMsV0FBVyxFQUFFLENBQUMsQ0FBQztRQUN6RCxNQUFNLE9BQU8sQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsUUFBUSxDQUFDLENBQUM7UUFDdEQsT0FBTyxRQUFRLENBQUM7SUFDbEIsQ0FBQztDQUNGIn0=
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from './classes.tapnodetools.js';
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
export * from './classes.tapnodetools.js';
|
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi90c190YXBidW5kbGVfc2VydmVyc2lkZS9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLDJCQUEyQixDQUFDIn0=
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import * as plugins from './plugins.js';
|
|
2
|
+
export const cwd = process.cwd();
|
|
3
|
+
export const testFilesDir = plugins.path.join(cwd, './.nogit/testfiles/');
|
|
4
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGF0aHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi90c190YXBidW5kbGVfc2VydmVyc2lkZS9wYXRocy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEtBQUssT0FBTyxNQUFNLGNBQWMsQ0FBQztBQUV4QyxNQUFNLENBQUMsTUFBTSxHQUFHLEdBQUcsT0FBTyxDQUFDLEdBQUcsRUFBRSxDQUFDO0FBQ2pDLE1BQU0sQ0FBQyxNQUFNLFlBQVksR0FBRyxPQUFPLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLEVBQUUscUJBQXFCLENBQUMsQ0FBQyJ9
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import * as crypto from 'crypto';
|
|
2
|
+
import * as fs from 'fs';
|
|
3
|
+
import * as path from 'path';
|
|
4
|
+
export { crypto, fs, path, };
|
|
5
|
+
import * as qenv from '@push.rocks/qenv';
|
|
6
|
+
import * as smartcrypto from '@push.rocks/smartcrypto';
|
|
7
|
+
import * as smartfile from '@push.rocks/smartfile';
|
|
8
|
+
import * as smartpath from '@push.rocks/smartpath';
|
|
9
|
+
import * as smartrequest from '@push.rocks/smartrequest';
|
|
10
|
+
import * as smartshell from '@push.rocks/smartshell';
|
|
11
|
+
export { qenv, smartcrypto, smartfile, smartpath, smartrequest, smartshell, };
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
// node native
|
|
2
|
+
import * as crypto from 'crypto';
|
|
3
|
+
import * as fs from 'fs';
|
|
4
|
+
import * as path from 'path';
|
|
5
|
+
export { crypto, fs, path, };
|
|
6
|
+
// @push.rocks scope
|
|
7
|
+
import * as qenv from '@push.rocks/qenv';
|
|
8
|
+
import * as smartcrypto from '@push.rocks/smartcrypto';
|
|
9
|
+
import * as smartfile from '@push.rocks/smartfile';
|
|
10
|
+
import * as smartpath from '@push.rocks/smartpath';
|
|
11
|
+
import * as smartrequest from '@push.rocks/smartrequest';
|
|
12
|
+
import * as smartshell from '@push.rocks/smartshell';
|
|
13
|
+
export { qenv, smartcrypto, smartfile, smartpath, smartrequest, smartshell, };
|
|
14
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGx1Z2lucy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3RzX3RhcGJ1bmRsZV9zZXJ2ZXJzaWRlL3BsdWdpbnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYztBQUNkLE9BQU8sS0FBSyxNQUFNLE1BQU0sUUFBUSxDQUFDO0FBQ2pDLE9BQU8sS0FBSyxFQUFFLE1BQU0sSUFBSSxDQUFDO0FBQ3pCLE9BQU8sS0FBSyxJQUFJLE1BQU0sTUFBTSxDQUFDO0FBRTdCLE9BQU8sRUFBRSxNQUFNLEVBQUMsRUFBRSxFQUFFLElBQUksR0FBRyxDQUFDO0FBRTVCLG9CQUFvQjtBQUNwQixPQUFPLEtBQUssSUFBSSxNQUFNLGtCQUFrQixDQUFDO0FBQ3pDLE9BQU8sS0FBSyxXQUFXLE1BQU0seUJBQXlCLENBQUM7QUFDdkQsT0FBTyxLQUFLLFNBQVMsTUFBTSx1QkFBdUIsQ0FBQztBQUNuRCxPQUFPLEtBQUssU0FBUyxNQUFNLHVCQUF1QixDQUFDO0FBQ25ELE9BQU8sS0FBSyxZQUFZLE1BQU0sMEJBQTBCLENBQUM7QUFDekQsT0FBTyxLQUFLLFVBQVUsTUFBTSx3QkFBd0IsQ0FBQztBQUVyRCxPQUFPLEVBQUUsSUFBSSxFQUFFLFdBQVcsRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxVQUFVLEdBQUcsQ0FBQyJ9
|
package/package.json
CHANGED
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@git.zone/tstest",
|
|
3
|
-
"version": "
|
|
3
|
+
"version": "3.0.0",
|
|
4
4
|
"private": false,
|
|
5
5
|
"description": "a test utility to run tests that match test/**/*.ts",
|
|
6
6
|
"exports": {
|
|
7
7
|
".": "./dist_ts/index.js",
|
|
8
8
|
"./tapbundle": "./dist_ts_tapbundle/index.js",
|
|
9
|
-
"./
|
|
9
|
+
"./tapbundle_serverside": "./dist_ts_tapbundle_serverside/index.js",
|
|
10
10
|
"./tapbundle_protocol": "./dist_ts_tapbundle_protocol/index.js"
|
|
11
11
|
},
|
|
12
12
|
"type": "module",
|
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. **
|
|
9
|
+
3. **tapbundle_serverside** (`/ts_tapbundle_serverside/`) - Server-side testing utilities (runCommand, env vars, HTTPS certs, MongoDB, S3, test assets)
|
|
10
10
|
|
|
11
11
|
## How Components Work Together
|
|
12
12
|
|
|
@@ -31,7 +31,7 @@ This project integrates tstest with tapbundle through a modular architecture:
|
|
|
31
31
|
|
|
32
32
|
1. **Import Structure**
|
|
33
33
|
- Test files import from local tapbundle: `import { tap, expect } from '../../ts_tapbundle/index.js'`
|
|
34
|
-
-
|
|
34
|
+
- Server-side tests also import from tapbundle_serverside for Node.js-only utilities: `import { tapNodeTools } from '../../ts_tapbundle_serverside/index.js'`
|
|
35
35
|
|
|
36
36
|
2. **WebHelpers**
|
|
37
37
|
- Browser tests can use webhelpers for DOM manipulation
|
|
@@ -41,7 +41,7 @@ This project integrates tstest with tapbundle through a modular architecture:
|
|
|
41
41
|
|
|
42
42
|
3. **Build System**
|
|
43
43
|
- Uses `tsbuild tsfolders` to compile TypeScript (invoked by `pnpm build`)
|
|
44
|
-
- Maintains separate output directories: `/dist_ts/`, `/dist_ts_tapbundle/`, `/
|
|
44
|
+
- Maintains separate output directories: `/dist_ts/`, `/dist_ts_tapbundle/`, `/dist_ts_tapbundle_serverside/`, `/dist_ts_tapbundle_protocol/`
|
|
45
45
|
- Compilation order is resolved automatically based on dependencies in tspublish.json files
|
|
46
46
|
- Protocol imports use compiled dist directories:
|
|
47
47
|
```typescript
|
package/readme.md
CHANGED
|
@@ -318,9 +318,34 @@ tstest provides multiple exports for different use cases:
|
|
|
318
318
|
|
|
319
319
|
- `@git.zone/tstest` - Main CLI and test runner functionality
|
|
320
320
|
- `@git.zone/tstest/tapbundle` - Browser-compatible test framework
|
|
321
|
-
- `@git.zone/tstest/
|
|
321
|
+
- `@git.zone/tstest/tapbundle_serverside` - Server-side testing utilities for Node.js-only tests (*.node.ts files)
|
|
322
|
+
- Execute shell commands during tests
|
|
323
|
+
- Manage environment variables on-demand with secure storage
|
|
324
|
+
- Generate self-signed HTTPS certificates for testing secure connections
|
|
325
|
+
- Create ephemeral MongoDB instances for database testing
|
|
326
|
+
- Create local S3-compatible storage for object storage testing
|
|
327
|
+
- Download and manage test assets (e.g., Docker images)
|
|
322
328
|
- `@git.zone/tstest/tapbundle_protocol` - Protocol V2 emitter and parser for TAP extensions
|
|
323
329
|
|
|
330
|
+
### When to Use tapbundle_serverside
|
|
331
|
+
|
|
332
|
+
Use `@git.zone/tstest/tapbundle_serverside` when your tests:
|
|
333
|
+
|
|
334
|
+
- Run exclusively on Node.js server-side (*.node.ts test files)
|
|
335
|
+
- Need to execute shell commands or interact with the file system
|
|
336
|
+
- Require environment variable management with secure on-demand prompts
|
|
337
|
+
- Test HTTPS servers and need self-signed certificates
|
|
338
|
+
- Interact with databases (MongoDB) and need ephemeral test instances
|
|
339
|
+
- Work with object storage (S3-compatible) and need local testing
|
|
340
|
+
- Require test assets like Docker images or other downloadable files
|
|
341
|
+
|
|
342
|
+
**Important:** tapbundle_serverside utilities are NOT available in:
|
|
343
|
+
- Browser environments
|
|
344
|
+
- Deno runtime
|
|
345
|
+
- Bun runtime
|
|
346
|
+
|
|
347
|
+
For cross-runtime tests, only import tapbundle_serverside in `.node.ts` files where you need server-side specific functionality.
|
|
348
|
+
|
|
324
349
|
## tapbundle Protocol V2
|
|
325
350
|
|
|
326
351
|
tstest includes an enhanced TAP protocol (Protocol V2) that extends standard TAP 13 with additional metadata while maintaining backwards compatibility.
|