@git.zone/tstest 3.6.5 → 3.6.7

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 (39) hide show
  1. package/.smartconfig.json +18 -6
  2. package/dist_ts/00_commitinfo_data.js +1 -1
  3. package/dist_ts_tapbundle/00_commitinfo_data.js +4 -4
  4. package/dist_ts_tapbundle/tapbundle.classes.taptools.d.ts +1 -1
  5. package/package.json +30 -30
  6. package/readme.hints.md +17 -0
  7. package/readme.md +14 -10
  8. package/ts/00_commitinfo_data.ts +1 -1
  9. package/ts/readme.md +4 -4
  10. package/dist_ts_tapbundle_node/classes.tapnodetools.d.ts +0 -25
  11. package/dist_ts_tapbundle_node/classes.tapnodetools.js +0 -81
  12. package/dist_ts_tapbundle_node/classes.testfileprovider.d.ts +0 -6
  13. package/dist_ts_tapbundle_node/classes.testfileprovider.js +0 -19
  14. package/dist_ts_tapbundle_node/index.d.ts +0 -1
  15. package/dist_ts_tapbundle_node/index.js +0 -2
  16. package/dist_ts_tapbundle_node/paths.d.ts +0 -2
  17. package/dist_ts_tapbundle_node/paths.js +0 -4
  18. package/dist_ts_tapbundle_node/plugins.d.ts +0 -11
  19. package/dist_ts_tapbundle_node/plugins.js +0 -14
  20. package/dist_ts_tapbundle_node/ts_tapbundle/tapbundle.classes.taptest.d.ts +0 -38
  21. package/dist_ts_tapbundle_node/ts_tapbundle/tapbundle.classes.taptest.js +0 -110
  22. package/dist_ts_tapbundle_node/ts_tapbundle/tapbundle.classes.taptools.d.ts +0 -109
  23. package/dist_ts_tapbundle_node/ts_tapbundle/tapbundle.classes.taptools.js +0 -241
  24. package/dist_ts_tapbundle_node/ts_tapbundle/tapbundle.plugins.d.ts +0 -8
  25. package/dist_ts_tapbundle_node/ts_tapbundle/tapbundle.plugins.js +0 -10
  26. package/dist_ts_tapbundle_node/ts_tapbundle/tapbundle.tapcreator.d.ts +0 -3
  27. package/dist_ts_tapbundle_node/ts_tapbundle/tapbundle.tapcreator.js +0 -5
  28. package/dist_ts_tapbundle_node/ts_tapbundle_node/classes.pathinject.d.ts +0 -5
  29. package/dist_ts_tapbundle_node/ts_tapbundle_node/classes.pathinject.js +0 -13
  30. package/dist_ts_tapbundle_node/ts_tapbundle_node/classes.tapnodetools.d.ts +0 -25
  31. package/dist_ts_tapbundle_node/ts_tapbundle_node/classes.tapnodetools.js +0 -81
  32. package/dist_ts_tapbundle_node/ts_tapbundle_node/classes.testfileprovider.d.ts +0 -6
  33. package/dist_ts_tapbundle_node/ts_tapbundle_node/classes.testfileprovider.js +0 -16
  34. package/dist_ts_tapbundle_node/ts_tapbundle_node/index.d.ts +0 -2
  35. package/dist_ts_tapbundle_node/ts_tapbundle_node/index.js +0 -3
  36. package/dist_ts_tapbundle_node/ts_tapbundle_node/paths.d.ts +0 -2
  37. package/dist_ts_tapbundle_node/ts_tapbundle_node/paths.js +0 -4
  38. package/dist_ts_tapbundle_node/ts_tapbundle_node/plugins.d.ts +0 -11
  39. package/dist_ts_tapbundle_node/ts_tapbundle_node/plugins.js +0 -14
package/.smartconfig.json CHANGED
@@ -10,12 +10,24 @@
10
10
  "license": "MIT"
11
11
  },
12
12
  "release": {
13
- "registries": [
14
- "https://verdaccio.lossless.digital",
15
- "https://registry.npmjs.org"
16
- ],
17
- "accessLevel": "public"
18
- }
13
+ "targets": {
14
+ "git": {
15
+ "enabled": true,
16
+ "remote": "origin",
17
+ "pushBranch": true,
18
+ "pushTags": true
19
+ },
20
+ "npm": {
21
+ "enabled": true,
22
+ "registries": [
23
+ "https://verdaccio.lossless.digital",
24
+ "https://registry.npmjs.org"
25
+ ],
26
+ "accessLevel": "public"
27
+ }
28
+ }
29
+ },
30
+ "schemaVersion": 2
19
31
  },
20
32
  "@ship.zone/szci": {
21
33
  "npmGlobalTools": []
@@ -3,7 +3,7 @@
3
3
  */
4
4
  export const commitinfo = {
5
5
  name: '@git.zone/tstest',
6
- version: '3.6.5',
6
+ version: '3.6.7',
7
7
  description: 'A powerful, modern test runner for TypeScript with multi-runtime support (Node.js, Deno, Bun, Chromium) and a batteries-included test framework.'
8
8
  };
9
9
  //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMDBfY29tbWl0aW5mb19kYXRhLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vdHMvMDBfY29tbWl0aW5mb19kYXRhLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztHQUVHO0FBQ0gsTUFBTSxDQUFDLE1BQU0sVUFBVSxHQUFHO0lBQ3hCLElBQUksRUFBRSxrQkFBa0I7SUFDeEIsT0FBTyxFQUFFLE9BQU87SUFDaEIsV0FBVyxFQUFFLGtKQUFrSjtDQUNoSyxDQUFBIn0=
@@ -2,8 +2,8 @@
2
2
  * autocreated commitinfo by @push.rocks/commitinfo
3
3
  */
4
4
  export const commitinfo = {
5
- name: '@push.rocks/tapbundle',
6
- version: '6.0.3',
7
- description: 'A comprehensive testing automation library that provides a wide range of utilities and tools for TAP (Test Anything Protocol) based testing, especially suitable for projects using tapbuffer.'
5
+ name: '@git.zone/tstest/tapbundle',
6
+ version: '3.6.5',
7
+ description: 'Core TAP testing framework with enhanced assertions and lifecycle hooks.'
8
8
  };
9
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMDBfY29tbWl0aW5mb19kYXRhLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vdHNfdGFwYnVuZGxlLzAwX2NvbW1pdGluZm9fZGF0YS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7R0FFRztBQUNILE1BQU0sQ0FBQyxNQUFNLFVBQVUsR0FBRztJQUN4QixJQUFJLEVBQUUsdUJBQXVCO0lBQzdCLE9BQU8sRUFBRSxPQUFPO0lBQ2hCLFdBQVcsRUFBRSxnTUFBZ007Q0FDOU0sQ0FBQSJ9
9
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMDBfY29tbWl0aW5mb19kYXRhLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vdHNfdGFwYnVuZGxlLzAwX2NvbW1pdGluZm9fZGF0YS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7R0FFRztBQUNILE1BQU0sQ0FBQyxNQUFNLFVBQVUsR0FBRztJQUN4QixJQUFJLEVBQUUsNEJBQTRCO0lBQ2xDLE9BQU8sRUFBRSxPQUFPO0lBQ2hCLFdBQVcsRUFBRSwwRUFBMEU7Q0FDeEYsQ0FBQSJ9
@@ -78,7 +78,7 @@ export declare class TapTools {
78
78
  */
79
79
  waitForTimeout(timeMilliArg: number): Promise<void>;
80
80
  returnError(throwingFuncArg: IPromiseFunc): Promise<Error>;
81
- defer(): plugins.smartpromise.Deferred<unknown>;
81
+ defer(): plugins.smartpromise.Deferred<void>;
82
82
  cumulativeDefer(): plugins.smartpromise.CumulativeDeferred;
83
83
  smartjson: typeof plugins.smartjson;
84
84
  /**
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@git.zone/tstest",
3
- "version": "3.6.5",
3
+ "version": "3.6.7",
4
4
  "private": false,
5
5
  "description": "A powerful, modern test runner for TypeScript with multi-runtime support (Node.js, Deno, Bun, Chromium) and a batteries-included test framework.",
6
6
  "exports": {
@@ -15,41 +15,33 @@
15
15
  "bin": {
16
16
  "tstest": "./cli.js"
17
17
  },
18
- "scripts": {
19
- "test": "pnpm run build && pnpm run test:tapbundle:verbose && pnpm run test:tstest:verbose",
20
- "test:tapbundle": "tsx ./cli.child.ts \"test/tapbundle/**/*.ts\"",
21
- "test:tapbundle:verbose": "tsx ./cli.child.ts \"test/tapbundle/**/*.ts\" --verbose",
22
- "test:tstest": "tsx ./cli.child.ts \"test/tstest/**/*.ts\"",
23
- "test:tstest:verbose": "tsx ./cli.child.ts \"test/tstest/**/*.ts\" --verbose",
24
- "build": "(tsbuild tsfolders)",
25
- "buildDocs": "tsdoc"
26
- },
27
18
  "devDependencies": {
28
- "@git.zone/tsbuild": "^4.4.0",
29
- "@types/node": "^25.5.0"
19
+ "@git.zone/tsbuild": "^4.4.2",
20
+ "@types/node": "^26.1.1",
21
+ "tsx": "^4.23.1"
30
22
  },
31
23
  "dependencies": {
32
- "@git.zone/tsbundle": "^2.10.0",
33
- "@git.zone/tsrun": "^2.0.1",
34
- "@push.rocks/consolecolor": "^2.0.3",
35
- "@push.rocks/qenv": "^6.1.3",
24
+ "@git.zone/tsbundle": "^2.11.3",
25
+ "@git.zone/tsrun": "^2.0.5",
26
+ "@push.rocks/consolecolor": "^2.0.4",
27
+ "@push.rocks/qenv": "^6.1.4",
36
28
  "@push.rocks/smartbrowser": "^2.0.11",
37
29
  "@push.rocks/smartcrypto": "^2.0.4",
38
- "@push.rocks/smartdelay": "^3.0.5",
39
- "@push.rocks/smartenv": "^6.0.0",
30
+ "@push.rocks/smartdelay": "^3.1.0",
31
+ "@push.rocks/smartenv": "^6.1.0",
40
32
  "@push.rocks/smartexpect": "^2.5.0",
41
- "@push.rocks/smartfile": "^13.1.2",
42
- "@push.rocks/smartfs": "^1.5.0",
43
- "@push.rocks/smartjson": "^6.0.0",
44
- "@push.rocks/smartlog": "^3.2.1",
45
- "@push.rocks/smartmongo": "^5.1.0",
46
- "@push.rocks/smartnetwork": "^4.5.2",
33
+ "@push.rocks/smartfile": "^13.1.3",
34
+ "@push.rocks/smartfs": "^1.5.1",
35
+ "@push.rocks/smartjson": "^6.0.1",
36
+ "@push.rocks/smartlog": "^3.2.2",
37
+ "@push.rocks/smartmongo": "^7.0.0",
38
+ "@push.rocks/smartnetwork": "^4.7.1",
47
39
  "@push.rocks/smartpath": "^6.0.0",
48
- "@push.rocks/smartpromise": "^4.2.3",
49
- "@push.rocks/smartrequest": "^5.0.1",
50
- "@push.rocks/smartserve": "^2.0.3",
40
+ "@push.rocks/smartpromise": "^4.2.4",
41
+ "@push.rocks/smartrequest": "^5.0.3",
42
+ "@push.rocks/smartserve": "^2.0.4",
51
43
  "@push.rocks/smartshell": "^3.3.8",
52
- "@push.rocks/smartstorage": "^6.3.2",
44
+ "@push.rocks/smartstorage": "^6.5.1",
53
45
  "@push.rocks/smarttime": "^4.2.3",
54
46
  "@push.rocks/smartwatch": "^6.4.0",
55
47
  "@types/ws": "^8.18.1",
@@ -71,5 +63,13 @@
71
63
  "browserslist": [
72
64
  "last 1 chrome versions"
73
65
  ],
74
- "packageManager": "pnpm@10.10.0+sha512.d615db246fe70f25dcfea6d8d73dee782ce23e2245e3c4f6f888249fb568149318637dca73c2c5c8ef2a4ca0d5657fb9567188bfab47f566d1ee6ce987815c39"
75
- }
66
+ "scripts": {
67
+ "test": "pnpm run build && pnpm run test:tapbundle:verbose && pnpm run test:tstest:verbose",
68
+ "test:tapbundle": "tsx ./cli.child.ts \"test/tapbundle/**/*.ts\"",
69
+ "test:tapbundle:verbose": "tsx ./cli.child.ts \"test/tapbundle/**/*.ts\" --verbose",
70
+ "test:tstest": "tsx ./cli.child.ts \"test/tstest/**/*.ts\"",
71
+ "test:tstest:verbose": "tsx ./cli.child.ts \"test/tstest/**/*.ts\" --verbose",
72
+ "build": "(tsbuild tsfolders)",
73
+ "buildDocs": "tsdoc"
74
+ }
75
+ }
package/readme.hints.md CHANGED
@@ -8,6 +8,23 @@ This project integrates tstest with tapbundle through a modular architecture:
8
8
  2. **tapbundle** (`/ts_tapbundle/`) - The TAP testing framework for writing tests
9
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
+ ## Node Runtime CJS JSON Compatibility
12
+
13
+ Node 24 and newer exposed a `tsx` synchronous-loader regression in versions
14
+ 4.22.0 and 4.22.1: JSON reached through CommonJS `require()` was transformed
15
+ into JavaScript in memory, then passed to Node's CommonJS JSON parser. The
16
+ resulting error misleadingly showed generated JavaScript such as `var ...` as
17
+ invalid JSON.
18
+
19
+ The upstream fix shipped in `tsx` 4.22.2. `tstest` requires
20
+ `@git.zone/tsrun` 2.0.5 or newer, whose `tsx` dependency starts at a fixed
21
+ version. The Node runtime regression test covers the ESM hook to CommonJS
22
+ `require()` to JSON path and verifies that the fixture bytes remain unchanged.
23
+
24
+ This loader failure is not evidence that `node_modules/**/db.json` was
25
+ overwritten on disk. Any observed file hash or content change is a separate
26
+ filesystem-writer issue and must be traced independently.
27
+
11
28
  ## How Components Work Together
12
29
 
13
30
  ### Test Execution Flow
package/readme.md CHANGED
@@ -2,15 +2,15 @@
2
2
 
3
3
  🧪 **A powerful, modern test runner for TypeScript** — beautiful output, multi-runtime support, and a batteries-included test framework that makes testing actually enjoyable.
4
4
 
5
+ ## Issue Reporting and Security
6
+
7
+ For reporting bugs, issues, or security vulnerabilities, please visit [community.foss.global/](https://community.foss.global/). This is the central community hub for all issue reporting. Developers who sign and comply with our contribution agreement and go through identification can also get a [code.foss.global/](https://code.foss.global/) account to submit Pull Requests directly.
8
+
5
9
  ## Availability and Links
6
10
 
7
11
  - [npmjs.org (npm package)](https://www.npmjs.com/package/@git.zone/tstest)
8
12
  - [code.foss.global (source)](https://code.foss.global/git.zone/tstest)
9
13
 
10
- ## Issue Reporting and Security
11
-
12
- For reporting bugs, issues, or security vulnerabilities, please visit [community.foss.global/](https://community.foss.global/). This is the central community hub for all issue reporting. Developers who sign and comply with our contribution agreement and go through identification can also get a [code.foss.global/](https://code.foss.global/) account to submit Pull Requests directly.
13
-
14
14
  ## Why tstest?
15
15
 
16
16
  Most TypeScript test runners feel like an afterthought — clunky configuration, ugly output, and poor TypeScript support. **tstest** was built from the ground up for TypeScript developers who want:
@@ -126,7 +126,7 @@ Name your test files with runtime specifiers to control where they run:
126
126
 
127
127
  ### Runtime Execution Order
128
128
 
129
- When multiple runtimes are specified, tests execute in this order: **Node.js → Bun → Deno → Chromium**
129
+ When multiple runtimes are specified, tests execute in this order: **Node.js → Chromium → Deno → Bun**
130
130
 
131
131
  ### Migration from Legacy Naming
132
132
 
@@ -147,6 +147,7 @@ tstest migrate --write
147
147
 
148
148
  | Option | Description |
149
149
  |---|---|
150
+ | `--version` | Show the installed tstest version |
150
151
  | `--quiet`, `-q` | Minimal output — perfect for CI |
151
152
  | `--verbose`, `-v` | Show all console output from tests |
152
153
  | `--no-color` | Disable colored output |
@@ -158,7 +159,6 @@ tstest migrate --write
158
159
  | `--stopAt <n>` | Stop at test file number N |
159
160
  | `--watch`, `-w` | Re-run tests on file changes |
160
161
  | `--watch-ignore <patterns>` | Ignore patterns in watch mode |
161
- | `--only` | Run only tests marked with `.only` |
162
162
 
163
163
  ## Writing Tests with tapbundle
164
164
 
@@ -287,7 +287,9 @@ tap.test('snapshot test', async (tools) => {
287
287
  ### Test Fixtures
288
288
 
289
289
  ```typescript
290
- tap.defineFixture('testUser', async (data) => ({
290
+ import { tap, expect, TapTools } from '@git.zone/tstest/tapbundle';
291
+
292
+ TapTools.defineFixture('testUser', async (data) => ({
291
293
  id: Date.now(),
292
294
  name: data?.name || 'Test User',
293
295
  email: data?.email || 'test@example.com',
@@ -368,8 +370,10 @@ expect(7).customAssertion(v => v % 2 === 1, 'Value is not odd');
368
370
  For Node.js-only tests, import server-side utilities:
369
371
 
370
372
  ```typescript
371
- import { tapNodeTools } from '@git.zone/tstest/tapbundle_serverside';
372
373
  import { tap, expect } from '@git.zone/tstest/tapbundle';
374
+ import { TapNodeTools } from '@git.zone/tstest/tapbundle_serverside';
375
+
376
+ const tapNodeTools = new TapNodeTools(tap);
373
377
  ```
374
378
 
375
379
  ### 🌐 Network Utilities
@@ -437,7 +441,7 @@ await mongo.stop();
437
441
  ### 📦 Local S3 Storage
438
442
 
439
443
  ```typescript
440
- const s3 = await tapNodeTools.createSmarts3();
444
+ const s3 = await tapNodeTools.createSmartStorage();
441
445
  // ... run object storage tests ...
442
446
  await s3.stop();
443
447
  ```
@@ -448,7 +452,7 @@ Control runtime behavior directly from your test files using special comment dir
448
452
 
449
453
  ### Deno Permissions
450
454
 
451
- By default, Deno tests run with `--allow-read`, `--allow-env`, `--allow-net`, `--allow-write`, `--allow-sys`, and `--allow-import`. Add directives to request additional permissions:
455
+ By default, Deno tests run with `--allow-read`, `--allow-env`, `--allow-net`, `--allow-write`, `--allow-sys`, `--allow-import`, `--node-modules-dir`, and `--sloppy-imports`. Add directives to request additional permissions:
452
456
 
453
457
  ```typescript
454
458
  // tstest:deno:allowAll
@@ -3,6 +3,6 @@
3
3
  */
4
4
  export const commitinfo = {
5
5
  name: '@git.zone/tstest',
6
- version: '3.6.5',
6
+ version: '3.6.7',
7
7
  description: 'A powerful, modern test runner for TypeScript with multi-runtime support (Node.js, Deno, Bun, Chromium) and a batteries-included test framework.'
8
8
  }
package/ts/readme.md CHANGED
@@ -2,6 +2,10 @@
2
2
 
3
3
  > 🚀 Multi-runtime TypeScript test runner with beautiful output and intelligent test orchestration
4
4
 
5
+ ## Issue Reporting and Security
6
+
7
+ For reporting bugs, issues, or security vulnerabilities, please visit [community.foss.global/](https://community.foss.global/). This is the central community hub for all issue reporting. Developers who sign and comply with our contribution agreement and go through identification can also get a [code.foss.global/](https://code.foss.global/) account to submit Pull Requests directly.
8
+
5
9
  ## Installation
6
10
 
7
11
  ```bash
@@ -9,10 +13,6 @@
9
13
  pnpm install --save-dev @git.zone/tstest
10
14
  ```
11
15
 
12
- ## Issue Reporting and Security
13
-
14
- For reporting bugs, issues, or security vulnerabilities, please visit [community.foss.global/](https://community.foss.global/). This is the central community hub for all issue reporting. Developers who sign and comply with our contribution agreement and go through identification can also get a [code.foss.global/](https://code.foss.global/) account to submit Pull Requests directly.
15
-
16
16
  ## Overview
17
17
 
18
18
  This is the core test runner module of `@git.zone/tstest`. It provides the CLI, test discovery, multi-runtime execution, TAP output parsing, structured logging, and test orchestration. It ties together the entire testing pipeline — from finding test files to dispatching them across Node.js, Chromium, Deno, Bun, and Docker runtimes.
@@ -1,25 +0,0 @@
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 {};
@@ -1,81 +0,0 @@
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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xhc3Nlcy50YXBub2RldG9vbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi90c190YXBidW5kbGVfbm9kZS9jbGFzc2VzLnRhcG5vZGV0b29scy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUNqRSxPQUFPLEtBQUssT0FBTyxNQUFNLGNBQWMsQ0FBQztBQUV4QyxNQUFNLFlBQVk7SUFJaEI7UUFGTyxxQkFBZ0IsR0FBRyxJQUFJLGdCQUFnQixFQUFFLENBQUM7SUFFbEMsQ0FBQztJQUdULEtBQUssQ0FBQyxPQUFPO1FBQ2xCLElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDLElBQUksSUFBSSxJQUFJLE9BQU8sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxTQUFTLENBQUMsQ0FBQztRQUNoRSxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUM7SUFDbkIsQ0FBQztJQUNNLEtBQUssQ0FBQyxpQkFBaUIsQ0FBQyxhQUFxQjtRQUNsRCxNQUFNLElBQUksR0FBRyxNQUFNLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQztRQUNsQyxPQUFPLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxhQUFhLENBQUMsQ0FBQztJQUMvQyxDQUFDO0lBRU0sS0FBSyxDQUFDLFVBQVUsQ0FBQyxVQUFrQjtRQUN4QyxJQUFJLENBQUMsSUFBSSxDQUFDLGtCQUFrQixFQUFFLENBQUM7WUFDN0IsSUFBSSxDQUFDLGtCQUFrQixHQUFHLElBQUksT0FBTyxDQUFDLFVBQVUsQ0FBQyxVQUFVLENBQUM7Z0JBQzFELFFBQVEsRUFBRSxNQUFNO2FBQ2pCLENBQUMsQ0FBQztRQUNMLENBQUM7UUFDRCxNQUFNLE1BQU0sR0FBRyxNQUFNLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUM7UUFDOUQsT0FBTyxNQUFNLENBQUM7SUFDaEIsQ0FBQztJQUVN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
@@ -1,6 +0,0 @@
1
- export declare const fileUrls: {
2
- dockerAlpineImage: string;
3
- };
4
- export declare class TestFileProvider {
5
- getDockerAlpineImageAsLocalTarball(): Promise<string>;
6
- }
@@ -1,19 +0,0 @@
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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xhc3Nlcy50ZXN0ZmlsZXByb3ZpZGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vdHNfdGFwYnVuZGxlX25vZGUvY2xhc3Nlcy50ZXN0ZmlsZXByb3ZpZGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sS0FBSyxPQUFPLE1BQU0sY0FBYyxDQUFDO0FBQ3hDLE9BQU8sS0FBSyxLQUFLLE1BQU0sWUFBWSxDQUFDO0FBRXBDLE1BQU0sQ0FBQyxNQUFNLFFBQVEsR0FBRztJQUN0QixpQkFBaUIsRUFBRSx1RUFBdUU7Q0FDM0YsQ0FBQTtBQUVELE1BQU0sT0FBTyxnQkFBZ0I7SUFDcEIsS0FBSyxDQUFDLGtDQUFrQztRQUM3QyxNQUFNLFFBQVEsR0FBRyxPQUFPLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsWUFBWSxFQUFFLFlBQVksQ0FBQyxDQUFBO1FBQ3BFLGdDQUFnQztRQUNoQyxNQUFNLFFBQVEsR0FBRyxNQUFNLE9BQU8sQ0FBQyxZQUFZLENBQUMsWUFBWSxDQUFDLE1BQU0sRUFBRTthQUM5RCxHQUFHLENBQUMsUUFBUSxDQUFDLGlCQUFpQixDQUFDO2FBQy9CLEdBQUcsRUFBRSxDQUFDO1FBQ1QsTUFBTSxPQUFPLENBQUMsU0FBUyxDQUFDLEVBQUUsQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLFlBQVksQ0FBQyxDQUFDO1FBQ3pELE1BQU0sTUFBTSxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsTUFBTSxRQUFRLENBQUMsV0FBVyxFQUFFLENBQUMsQ0FBQztRQUN6RCxNQUFNLE9BQU8sQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsUUFBUSxDQUFDLENBQUM7UUFDdEQsT0FBTyxRQUFRLENBQUM7SUFDbEIsQ0FBQztDQUNGIn0=
@@ -1 +0,0 @@
1
- export * from './classes.tapnodetools.js';
@@ -1,2 +0,0 @@
1
- export * from './classes.tapnodetools.js';
2
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi90c190YXBidW5kbGVfbm9kZS9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLDJCQUEyQixDQUFDIn0=
@@ -1,2 +0,0 @@
1
- export declare const cwd: string;
2
- export declare const testFilesDir: string;
@@ -1,4 +0,0 @@
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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGF0aHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi90c190YXBidW5kbGVfbm9kZS9wYXRocy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEtBQUssT0FBTyxNQUFNLGNBQWMsQ0FBQztBQUV4QyxNQUFNLENBQUMsTUFBTSxHQUFHLEdBQUcsT0FBTyxDQUFDLEdBQUcsRUFBRSxDQUFDO0FBQ2pDLE1BQU0sQ0FBQyxNQUFNLFlBQVksR0FBRyxPQUFPLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLEVBQUUscUJBQXFCLENBQUMsQ0FBQyJ9
@@ -1,11 +0,0 @@
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, };
@@ -1,14 +0,0 @@
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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGx1Z2lucy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3RzX3RhcGJ1bmRsZV9ub2RlL3BsdWdpbnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYztBQUNkLE9BQU8sS0FBSyxNQUFNLE1BQU0sUUFBUSxDQUFDO0FBQ2pDLE9BQU8sS0FBSyxFQUFFLE1BQU0sSUFBSSxDQUFDO0FBQ3pCLE9BQU8sS0FBSyxJQUFJLE1BQU0sTUFBTSxDQUFDO0FBRTdCLE9BQU8sRUFBRSxNQUFNLEVBQUMsRUFBRSxFQUFFLElBQUksR0FBRyxDQUFDO0FBRTVCLG9CQUFvQjtBQUNwQixPQUFPLEtBQUssSUFBSSxNQUFNLGtCQUFrQixDQUFDO0FBQ3pDLE9BQU8sS0FBSyxXQUFXLE1BQU0seUJBQXlCLENBQUM7QUFDdkQsT0FBTyxLQUFLLFNBQVMsTUFBTSx1QkFBdUIsQ0FBQztBQUNuRCxPQUFPLEtBQUssU0FBUyxNQUFNLHVCQUF1QixDQUFDO0FBQ25ELE9BQU8sS0FBSyxZQUFZLE1BQU0sMEJBQTBCLENBQUM7QUFDekQsT0FBTyxLQUFLLFVBQVUsTUFBTSx3QkFBd0IsQ0FBQztBQUVyRCxPQUFPLEVBQUUsSUFBSSxFQUFFLFdBQVcsRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxVQUFVLEdBQUcsQ0FBQyJ9
@@ -1,38 +0,0 @@
1
- import { TapTools } from './tapbundle.classes.taptools.js';
2
- import { HrtMeasurement } from '@push.rocks/smarttime';
3
- export type TTestStatus = 'success' | 'error' | 'pending' | 'errorAfterSuccess' | 'timeout' | 'skipped';
4
- export interface ITestFunction<T> {
5
- (tapTools?: TapTools): Promise<T>;
6
- }
7
- export declare class TapTest<T = unknown> {
8
- description: string;
9
- failureAllowed: boolean;
10
- hrtMeasurement: HrtMeasurement;
11
- parallel: boolean;
12
- status: TTestStatus;
13
- tapTools: TapTools;
14
- testFunction: ITestFunction<T>;
15
- testKey: number;
16
- timeoutMs?: number;
17
- isTodo: boolean;
18
- todoReason?: string;
19
- tags: string[];
20
- priority: 'high' | 'medium' | 'low';
21
- fileName?: string;
22
- private testDeferred;
23
- testPromise: Promise<TapTest<T>>;
24
- private testResultDeferred;
25
- testResultPromise: Promise<T>;
26
- /**
27
- * constructor
28
- */
29
- constructor(optionsArg: {
30
- description: string;
31
- testFunction: ITestFunction<T>;
32
- parallel: boolean;
33
- });
34
- /**
35
- * run the test
36
- */
37
- run(testKeyArg: number): Promise<void>;
38
- }
@@ -1,110 +0,0 @@
1
- import * as plugins from './tapbundle.plugins.js';
2
- import { tapCreator } from './tapbundle.tapcreator.js';
3
- import { TapTools, SkipError } from './tapbundle.classes.taptools.js';
4
- // imported interfaces
5
- import { Deferred } from '@push.rocks/smartpromise';
6
- import { HrtMeasurement } from '@push.rocks/smarttime';
7
- export class TapTest {
8
- /**
9
- * constructor
10
- */
11
- constructor(optionsArg) {
12
- this.isTodo = false;
13
- this.tags = [];
14
- this.priority = 'medium';
15
- this.testDeferred = plugins.smartpromise.defer();
16
- this.testPromise = this.testDeferred.promise;
17
- this.testResultDeferred = plugins.smartpromise.defer();
18
- this.testResultPromise = this.testResultDeferred.promise;
19
- this.description = optionsArg.description;
20
- this.hrtMeasurement = new HrtMeasurement();
21
- this.parallel = optionsArg.parallel;
22
- this.status = 'pending';
23
- this.tapTools = new TapTools(this);
24
- this.testFunction = optionsArg.testFunction;
25
- }
26
- /**
27
- * run the test
28
- */
29
- async run(testKeyArg) {
30
- this.testKey = testKeyArg;
31
- const testNumber = testKeyArg + 1;
32
- // Handle todo tests
33
- if (this.isTodo) {
34
- const todoText = this.todoReason ? `# TODO ${this.todoReason}` : '# TODO';
35
- console.log(`ok ${testNumber} - ${this.description} ${todoText}`);
36
- this.status = 'success';
37
- this.testDeferred.resolve(this);
38
- return;
39
- }
40
- // Run test with retries
41
- let lastError;
42
- const maxRetries = this.tapTools.maxRetries;
43
- for (let attempt = 0; attempt <= maxRetries; attempt++) {
44
- this.hrtMeasurement.start();
45
- try {
46
- // Set up timeout if specified
47
- let timeoutHandle;
48
- let timeoutPromise = null;
49
- if (this.timeoutMs) {
50
- timeoutPromise = new Promise((_, reject) => {
51
- timeoutHandle = setTimeout(() => {
52
- this.status = 'timeout';
53
- reject(new Error(`Test timed out after ${this.timeoutMs}ms`));
54
- }, this.timeoutMs);
55
- });
56
- }
57
- // Run the test function with potential timeout
58
- const testPromise = this.testFunction(this.tapTools);
59
- const testReturnValue = timeoutPromise
60
- ? await Promise.race([testPromise, timeoutPromise])
61
- : await testPromise;
62
- // Clear timeout if test completed
63
- if (timeoutHandle) {
64
- clearTimeout(timeoutHandle);
65
- }
66
- this.hrtMeasurement.stop();
67
- console.log(`ok ${testNumber} - ${this.description} # time=${this.hrtMeasurement.milliSeconds}ms`);
68
- this.status = 'success';
69
- this.testDeferred.resolve(this);
70
- this.testResultDeferred.resolve(testReturnValue);
71
- return; // Success, exit retry loop
72
- }
73
- catch (err) {
74
- this.hrtMeasurement.stop();
75
- // Handle skip
76
- if (err instanceof SkipError || err.name === 'SkipError') {
77
- console.log(`ok ${testNumber} - ${this.description} # SKIP ${err.message.replace('Skipped: ', '')}`);
78
- this.status = 'skipped';
79
- this.testDeferred.resolve(this);
80
- return;
81
- }
82
- lastError = err;
83
- // If we have retries left, try again
84
- if (attempt < maxRetries) {
85
- console.log(`# Retry ${attempt + 1}/${maxRetries} for test: ${this.description}`);
86
- this.tapTools._incrementRetryCount();
87
- continue;
88
- }
89
- // Final failure
90
- console.log(`not ok ${testNumber} - ${this.description} # time=${this.hrtMeasurement.milliSeconds}ms`);
91
- this.testDeferred.resolve(this);
92
- this.testResultDeferred.resolve(err);
93
- // if the test has already succeeded before
94
- if (this.status === 'success') {
95
- this.status = 'errorAfterSuccess';
96
- console.log('!!! ALERT !!!: weird behaviour, since test has been already successfull');
97
- }
98
- else {
99
- this.status = 'error';
100
- }
101
- // if the test is allowed to fail
102
- if (this.failureAllowed) {
103
- console.log(`please note: failure allowed!`);
104
- }
105
- console.log(err);
106
- }
107
- }
108
- }
109
- }
110
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFwYnVuZGxlLmNsYXNzZXMudGFwdGVzdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3RzX3RhcGJ1bmRsZS90YXBidW5kbGUuY2xhc3Nlcy50YXB0ZXN0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sS0FBSyxPQUFPLE1BQU0sd0JBQXdCLENBQUM7QUFDbEQsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQ3ZELE9BQU8sRUFBRSxRQUFRLEVBQUUsU0FBUyxFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFFdEUsc0JBQXNCO0FBQ3RCLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUNwRCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFTdkQsTUFBTSxPQUFPLE9BQU87SUFtQmxCOztPQUVHO0lBQ0gsWUFBWSxVQUlYO1FBaEJNLFdBQU0sR0FBWSxLQUFLLENBQUM7UUFFeEIsU0FBSSxHQUFhLEVBQUUsQ0FBQztRQUNwQixhQUFRLEdBQThCLFFBQVEsQ0FBQztRQUU5QyxpQkFBWSxHQUF5QixPQUFPLENBQUMsWUFBWSxDQUFDLEtBQUssRUFBRSxDQUFDO1FBQ25FLGdCQUFXLEdBQXdCLElBQUksQ0FBQyxZQUFZLENBQUMsT0FBTyxDQUFDO1FBQzVELHVCQUFrQixHQUFnQixPQUFPLENBQUMsWUFBWSxDQUFDLEtBQUssRUFBRSxDQUFDO1FBQ2hFLHNCQUFpQixHQUFlLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxPQUFPLENBQUM7UUFTckUsSUFBSSxDQUFDLFdBQVcsR0FBRyxVQUFVLENBQUMsV0FBVyxDQUFDO1FBQzFDLElBQUksQ0FBQyxjQUFjLEdBQUcsSUFBSSxjQUFjLEVBQUUsQ0FBQztRQUMzQyxJQUFJLENBQUMsUUFBUSxHQUFHLFVBQVUsQ0FBQyxRQUFRLENBQUM7UUFDcEMsSUFBSSxDQUFDLE1BQU0sR0FBRyxTQUFTLENBQUM7UUFDeEIsSUFB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