@pezkuwi/dev-test 0.85.3 → 0.85.4
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/LICENSE +201 -0
- package/browser.d.ts +1 -0
- package/browser.js +2 -0
- package/cjs/browser.d.ts +1 -0
- package/cjs/browser.js +4 -0
- package/cjs/env/browser.d.ts +313 -0
- package/cjs/env/browser.js +98 -0
- package/cjs/env/expect.d.ts +297 -0
- package/cjs/env/expect.js +213 -0
- package/cjs/env/index.d.ts +4 -0
- package/cjs/env/index.js +20 -0
- package/cjs/env/jest.d.ts +127 -0
- package/cjs/env/jest.js +56 -0
- package/cjs/env/lifecycle.d.ts +12 -0
- package/cjs/env/lifecycle.js +17 -0
- package/cjs/env/suite.d.ts +16 -0
- package/cjs/env/suite.js +35 -0
- package/cjs/index.d.ts +1 -0
- package/cjs/index.js +1 -0
- package/cjs/node.d.ts +1 -0
- package/cjs/node.js +4 -0
- package/cjs/package.json +3 -0
- package/cjs/packageInfo.d.ts +6 -0
- package/cjs/packageInfo.js +4 -0
- package/cjs/types.d.ts +15 -0
- package/cjs/types.js +2 -0
- package/cjs/util.d.ts +20 -0
- package/cjs/util.js +51 -0
- package/env/browser.d.ts +313 -0
- package/env/browser.js +95 -0
- package/env/expect.d.ts +300 -0
- package/env/expect.js +210 -0
- package/env/index.d.ts +4 -0
- package/env/index.js +17 -0
- package/env/jest.d.ts +131 -0
- package/env/jest.js +53 -0
- package/env/lifecycle.d.ts +16 -0
- package/env/lifecycle.js +14 -0
- package/env/suite.d.ts +16 -0
- package/env/suite.js +32 -0
- package/globals.cjs +4 -0
- package/globals.d.cts +1 -0
- package/globals.d.ts +30 -0
- package/index.d.ts +1 -0
- package/index.js +1 -0
- package/node.d.ts +1 -0
- package/node.js +2 -0
- package/package.json +197 -7
- package/packageInfo.d.ts +6 -0
- package/packageInfo.js +1 -0
- package/tsconfig.build.tsbuildinfo +1 -1
- package/tsconfig.spec.json +2 -1
- package/tsconfig.spec.tsbuildinfo +1 -1
- package/types.d.ts +18 -0
- package/types.js +1 -0
- package/util.d.ts +20 -0
- package/util.js +46 -0
package/env/jest.js
ADDED
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
import { mock } from 'node:test';
|
|
2
|
+
import { enhanceObj, stubObj, warnObj } from '../util.js';
|
|
3
|
+
const JEST_KEYS_STUB = ['advanceTimersByTime', 'advanceTimersToNextTimer', 'autoMockOff', 'autoMockOn', 'clearAllMocks', 'clearAllTimers', 'createMockFromModule', 'deepUnmock', 'disableAutomock', 'doMock', 'dontMock', 'enableAutomock', 'fn', 'genMockFromModule', 'getRealSystemTime', 'getSeed', 'getTimerCount', 'isEnvironmentTornDown', 'isMockFunction', 'isolateModules', 'isolateModulesAsync', 'mock', 'mocked', 'now', 'replaceProperty', 'requireActual', 'requireMock', 'resetAllMocks', 'resetModules', 'restoreAllMocks', 'retryTimes', 'runAllImmediates', 'runAllTicks', 'runAllTimers', 'runOnlyPendingTimers', 'setMock', 'setSystemTime', 'setTimeout', 'spyOn', 'unmock', 'unstable_mockModule', 'useFakeTimers', 'useRealTimers'];
|
|
4
|
+
const JEST_KEYS_WARN = ['setTimeout'];
|
|
5
|
+
const MOCK_KEYS_STUB = ['_isMockFunction', 'getMockImplementation', 'getMockName', 'mock', 'mockClear', 'mockImplementation', 'mockImplementationOnce', 'mockName', 'mockRejectedValue', 'mockRejectedValueOnce', 'mockReset', 'mockResolvedValue', 'mockResolvedValueOnce', 'mockRestore', 'mockReturnThis', 'mockReturnValue', 'mockReturnValueOnce', 'withImplementation'];
|
|
6
|
+
const jestStub = stubObj('jest', JEST_KEYS_STUB);
|
|
7
|
+
const jestWarn = warnObj('jest', JEST_KEYS_WARN);
|
|
8
|
+
const mockStub = stubObj('jest.fn()', MOCK_KEYS_STUB);
|
|
9
|
+
/**
|
|
10
|
+
* @internal
|
|
11
|
+
*
|
|
12
|
+
* This adds the mockReset and mockRestore functionality to any
|
|
13
|
+
* spy or mock function
|
|
14
|
+
**/
|
|
15
|
+
function extendMock(mocked) {
|
|
16
|
+
// We use the node:test mock here for casting below - however we
|
|
17
|
+
// don't want this in any method signature since this is a private
|
|
18
|
+
// types export, which could get us in "some" trouble
|
|
19
|
+
//
|
|
20
|
+
// Effectively the casts below ensure that our WithMock<*> aligns
|
|
21
|
+
// on a high-level to what we use via private type...
|
|
22
|
+
const spy = mocked;
|
|
23
|
+
return enhanceObj(enhanceObj(mocked, {
|
|
24
|
+
mockImplementation: (fn) => {
|
|
25
|
+
spy.mock.mockImplementation(fn);
|
|
26
|
+
},
|
|
27
|
+
mockImplementationOnce: (fn) => {
|
|
28
|
+
spy.mock.mockImplementationOnce(fn);
|
|
29
|
+
},
|
|
30
|
+
mockReset: () => {
|
|
31
|
+
spy.mock.resetCalls();
|
|
32
|
+
},
|
|
33
|
+
mockRestore: () => {
|
|
34
|
+
spy.mock.restore();
|
|
35
|
+
}
|
|
36
|
+
}), mockStub);
|
|
37
|
+
}
|
|
38
|
+
/**
|
|
39
|
+
* Sets up the jest object. This is certainly not extensive, and probably
|
|
40
|
+
* not quite meant to be (never say never). Rather this adds the functionality
|
|
41
|
+
* that we use in the pezkuwi-js projects.
|
|
42
|
+
**/
|
|
43
|
+
export function jest() {
|
|
44
|
+
return {
|
|
45
|
+
jest: enhanceObj(enhanceObj({
|
|
46
|
+
fn: (fn) => extendMock(mock.fn(fn)),
|
|
47
|
+
restoreAllMocks: () => {
|
|
48
|
+
mock.reset();
|
|
49
|
+
},
|
|
50
|
+
spyOn: (obj, key) => extendMock(mock.method(obj, key))
|
|
51
|
+
}, jestWarn), jestStub)
|
|
52
|
+
};
|
|
53
|
+
}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
// [object Object]
|
|
2
|
+
// SPDX-License-Identifier: Apache-2.0
|
|
3
|
+
|
|
4
|
+
import type { after, afterEach, before, beforeEach } from 'node:test';
|
|
5
|
+
|
|
6
|
+
/**
|
|
7
|
+
* This ensures that the before/after functions are exposed
|
|
8
|
+
**/
|
|
9
|
+
export declare function lifecycle(): {
|
|
10
|
+
after: typeof after;
|
|
11
|
+
afterAll: typeof after;
|
|
12
|
+
afterEach: typeof afterEach;
|
|
13
|
+
before: typeof before;
|
|
14
|
+
beforeAll: typeof before;
|
|
15
|
+
beforeEach: typeof beforeEach;
|
|
16
|
+
};
|
package/env/lifecycle.js
ADDED
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { after, afterEach, before, beforeEach } from 'node:test';
|
|
2
|
+
/**
|
|
3
|
+
* This ensures that the before/after functions are exposed
|
|
4
|
+
**/
|
|
5
|
+
export function lifecycle() {
|
|
6
|
+
return {
|
|
7
|
+
after,
|
|
8
|
+
afterAll: after,
|
|
9
|
+
afterEach,
|
|
10
|
+
before,
|
|
11
|
+
beforeAll: before,
|
|
12
|
+
beforeEach
|
|
13
|
+
};
|
|
14
|
+
}
|
package/env/suite.d.ts
ADDED
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* This ensures that the describe and it functions match our actual usages.
|
|
3
|
+
* This includes .only, .skip and .todo helpers (.each is not applied)
|
|
4
|
+
**/
|
|
5
|
+
export declare function suite(): {
|
|
6
|
+
describe: ((name: string, exec: () => void | Promise<void>, timeout?: number) => void) & Omit<{
|
|
7
|
+
only: (name: string, exec: () => void | Promise<void>, timeout?: number) => void;
|
|
8
|
+
skip: (name: string, exec: () => void | Promise<void>, timeout?: number) => void;
|
|
9
|
+
todo: (name: string, exec: () => void | Promise<void>, timeout?: number) => void;
|
|
10
|
+
}, never>;
|
|
11
|
+
it: ((name: string, exec: () => void | Promise<void>, timeout?: number) => void) & Omit<{
|
|
12
|
+
only: (name: string, exec: () => void | Promise<void>, timeout?: number) => void;
|
|
13
|
+
skip: (name: string, exec: () => void | Promise<void>, timeout?: number) => void;
|
|
14
|
+
todo: (name: string, exec: () => void | Promise<void>, timeout?: number) => void;
|
|
15
|
+
}, never>;
|
|
16
|
+
};
|
package/env/suite.js
ADDED
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import { describe, it } from 'node:test';
|
|
2
|
+
import { enhanceObj } from '../util.js';
|
|
3
|
+
const MINUTE = 60 * 1000;
|
|
4
|
+
/**
|
|
5
|
+
* @internal
|
|
6
|
+
*
|
|
7
|
+
* Wraps either describe or it with relevant .only, .skip, .todo & .each helpers,
|
|
8
|
+
* shimming it into a Jest-compatible environment.
|
|
9
|
+
*
|
|
10
|
+
* @param {} fn
|
|
11
|
+
*/
|
|
12
|
+
function createWrapper(fn, defaultTimeout) {
|
|
13
|
+
const wrap = (opts) => (name, exec, timeout) => fn(name, { ...opts, timeout: (timeout || defaultTimeout) }, exec);
|
|
14
|
+
// Ensure that we have consistent helpers on the function. These are not consistently
|
|
15
|
+
// applied accross all node:test versions, latest has all, so always apply ours.
|
|
16
|
+
// Instead of node:test options for e.g. timeout, we provide a Jest-compatible signature
|
|
17
|
+
return enhanceObj(wrap({}), {
|
|
18
|
+
only: wrap({ only: true }),
|
|
19
|
+
skip: wrap({ skip: true }),
|
|
20
|
+
todo: wrap({ todo: true })
|
|
21
|
+
});
|
|
22
|
+
}
|
|
23
|
+
/**
|
|
24
|
+
* This ensures that the describe and it functions match our actual usages.
|
|
25
|
+
* This includes .only, .skip and .todo helpers (.each is not applied)
|
|
26
|
+
**/
|
|
27
|
+
export function suite() {
|
|
28
|
+
return {
|
|
29
|
+
describe: createWrapper(describe, 60 * MINUTE),
|
|
30
|
+
it: createWrapper(it, 2 * MINUTE)
|
|
31
|
+
};
|
|
32
|
+
}
|
package/globals.cjs
ADDED
package/globals.d.cts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
package/globals.d.ts
ADDED
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
// Copyright 2017-2026 @pezkuwi/dev-test authors & contributors
|
|
2
|
+
// SPDX-License-Identifier: Apache-2.0
|
|
3
|
+
|
|
4
|
+
/* eslint-disable no-var */
|
|
5
|
+
|
|
6
|
+
import type { expect } from './src/env/expect.js';
|
|
7
|
+
import type { jest } from './src/env/jest.js';
|
|
8
|
+
import type { lifecycle } from './src/env/lifecycle.js';
|
|
9
|
+
import type { Describe, It } from './src/env/suite.js';
|
|
10
|
+
|
|
11
|
+
type Expect = ReturnType<typeof expect>;
|
|
12
|
+
|
|
13
|
+
type Jest = ReturnType<typeof jest>;
|
|
14
|
+
|
|
15
|
+
type Lifecycle = ReturnType<typeof lifecycle>;
|
|
16
|
+
|
|
17
|
+
declare global {
|
|
18
|
+
var after: Lifecycle['after'];
|
|
19
|
+
var afterAll: Lifecycle['afterAll'];
|
|
20
|
+
var afterEach: Lifecycle['afterEach'];
|
|
21
|
+
var before: Lifecycle['before'];
|
|
22
|
+
var beforeAll: Lifecycle['beforeAll'];
|
|
23
|
+
var beforeEach: Lifecycle['beforeEach'];
|
|
24
|
+
var describe: Describe;
|
|
25
|
+
var expect: Expect['expect'];
|
|
26
|
+
var it: It;
|
|
27
|
+
var jest: Jest['jest'];
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
export {};
|
package/index.d.ts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
package/index.js
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
throw new Error('Use node --require @pezkuwi/dev-test/{node, browser} depending on the required environment');
|
package/node.d.ts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
package/node.js
ADDED
package/package.json
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
{
|
|
2
|
-
"author": "
|
|
2
|
+
"author": "Pezkuwi Team <team@pezkuwichain.app>",
|
|
3
3
|
"bugs": "https://github.com/pezkuwichain/pezkuwi-dev/issues",
|
|
4
4
|
"description": "A basic test-functions-as-global library on top of node:test",
|
|
5
5
|
"engines": {
|
|
@@ -15,16 +15,206 @@
|
|
|
15
15
|
},
|
|
16
16
|
"sideEffects": false,
|
|
17
17
|
"type": "module",
|
|
18
|
-
"
|
|
19
|
-
"
|
|
18
|
+
"types": "./index.d.ts",
|
|
19
|
+
"version": "0.85.4",
|
|
20
|
+
"main": "./cjs/index.js",
|
|
21
|
+
"module": "./index.js",
|
|
20
22
|
"exports": {
|
|
21
|
-
"
|
|
23
|
+
".": {
|
|
24
|
+
"module": {
|
|
25
|
+
"types": "./index.d.ts",
|
|
26
|
+
"default": "./index.js"
|
|
27
|
+
},
|
|
28
|
+
"require": {
|
|
29
|
+
"types": "./cjs/index.d.ts",
|
|
30
|
+
"default": "./cjs/index.js"
|
|
31
|
+
},
|
|
32
|
+
"default": {
|
|
33
|
+
"types": "./index.d.ts",
|
|
34
|
+
"default": "./index.js"
|
|
35
|
+
}
|
|
36
|
+
},
|
|
37
|
+
"./browser": {
|
|
38
|
+
"module": {
|
|
39
|
+
"types": "./browser.d.ts",
|
|
40
|
+
"default": "./browser.js"
|
|
41
|
+
},
|
|
42
|
+
"require": {
|
|
43
|
+
"types": "./cjs/browser.d.ts",
|
|
44
|
+
"default": "./cjs/browser.js"
|
|
45
|
+
},
|
|
46
|
+
"default": {
|
|
47
|
+
"types": "./browser.d.ts",
|
|
48
|
+
"default": "./browser.js"
|
|
49
|
+
}
|
|
50
|
+
},
|
|
51
|
+
"./cjs/*": "./cjs/*.js",
|
|
52
|
+
"./cjs/package.json": "./cjs/package.json",
|
|
53
|
+
"./env": {
|
|
54
|
+
"module": {
|
|
55
|
+
"types": "./env/index.d.ts",
|
|
56
|
+
"default": "./env/index.js"
|
|
57
|
+
},
|
|
58
|
+
"require": {
|
|
59
|
+
"types": "./cjs/env/index.d.ts",
|
|
60
|
+
"default": "./cjs/env/index.js"
|
|
61
|
+
},
|
|
62
|
+
"default": {
|
|
63
|
+
"types": "./env/index.d.ts",
|
|
64
|
+
"default": "./env/index.js"
|
|
65
|
+
}
|
|
66
|
+
},
|
|
67
|
+
"./env/browser": {
|
|
68
|
+
"module": {
|
|
69
|
+
"types": "./env/browser.d.ts",
|
|
70
|
+
"default": "./env/browser.js"
|
|
71
|
+
},
|
|
72
|
+
"require": {
|
|
73
|
+
"types": "./cjs/env/browser.d.ts",
|
|
74
|
+
"default": "./cjs/env/browser.js"
|
|
75
|
+
},
|
|
76
|
+
"default": {
|
|
77
|
+
"types": "./env/browser.d.ts",
|
|
78
|
+
"default": "./env/browser.js"
|
|
79
|
+
}
|
|
80
|
+
},
|
|
81
|
+
"./env/expect": {
|
|
82
|
+
"module": {
|
|
83
|
+
"types": "./env/expect.d.ts",
|
|
84
|
+
"default": "./env/expect.js"
|
|
85
|
+
},
|
|
86
|
+
"require": {
|
|
87
|
+
"types": "./cjs/env/expect.d.ts",
|
|
88
|
+
"default": "./cjs/env/expect.js"
|
|
89
|
+
},
|
|
90
|
+
"default": {
|
|
91
|
+
"types": "./env/expect.d.ts",
|
|
92
|
+
"default": "./env/expect.js"
|
|
93
|
+
}
|
|
94
|
+
},
|
|
95
|
+
"./env/jest": {
|
|
96
|
+
"module": {
|
|
97
|
+
"types": "./env/jest.d.ts",
|
|
98
|
+
"default": "./env/jest.js"
|
|
99
|
+
},
|
|
100
|
+
"require": {
|
|
101
|
+
"types": "./cjs/env/jest.d.ts",
|
|
102
|
+
"default": "./cjs/env/jest.js"
|
|
103
|
+
},
|
|
104
|
+
"default": {
|
|
105
|
+
"types": "./env/jest.d.ts",
|
|
106
|
+
"default": "./env/jest.js"
|
|
107
|
+
}
|
|
108
|
+
},
|
|
109
|
+
"./env/lifecycle": {
|
|
110
|
+
"module": {
|
|
111
|
+
"types": "./env/lifecycle.d.ts",
|
|
112
|
+
"default": "./env/lifecycle.js"
|
|
113
|
+
},
|
|
114
|
+
"require": {
|
|
115
|
+
"types": "./cjs/env/lifecycle.d.ts",
|
|
116
|
+
"default": "./cjs/env/lifecycle.js"
|
|
117
|
+
},
|
|
118
|
+
"default": {
|
|
119
|
+
"types": "./env/lifecycle.d.ts",
|
|
120
|
+
"default": "./env/lifecycle.js"
|
|
121
|
+
}
|
|
122
|
+
},
|
|
123
|
+
"./env/suite": {
|
|
124
|
+
"module": {
|
|
125
|
+
"types": "./env/suite.d.ts",
|
|
126
|
+
"default": "./env/suite.js"
|
|
127
|
+
},
|
|
128
|
+
"require": {
|
|
129
|
+
"types": "./cjs/env/suite.d.ts",
|
|
130
|
+
"default": "./cjs/env/suite.js"
|
|
131
|
+
},
|
|
132
|
+
"default": {
|
|
133
|
+
"types": "./env/suite.d.ts",
|
|
134
|
+
"default": "./env/suite.js"
|
|
135
|
+
}
|
|
136
|
+
},
|
|
137
|
+
"./globals": "./globals.cjs",
|
|
138
|
+
"./globals.cjs": "./globals.cjs",
|
|
139
|
+
"./globals.d.cts": "./globals.d.cts",
|
|
140
|
+
"./globals.d.ts": "./globals.d.ts",
|
|
141
|
+
"./node": {
|
|
142
|
+
"module": {
|
|
143
|
+
"types": "./node.d.ts",
|
|
144
|
+
"default": "./node.js"
|
|
145
|
+
},
|
|
146
|
+
"require": {
|
|
147
|
+
"types": "./cjs/node.d.ts",
|
|
148
|
+
"default": "./cjs/node.js"
|
|
149
|
+
},
|
|
150
|
+
"default": {
|
|
151
|
+
"types": "./node.d.ts",
|
|
152
|
+
"default": "./node.js"
|
|
153
|
+
}
|
|
154
|
+
},
|
|
155
|
+
"./package.json": {
|
|
156
|
+
"require": "./cjs/package.json",
|
|
157
|
+
"default": "./package.json"
|
|
158
|
+
},
|
|
159
|
+
"./packageInfo": {
|
|
160
|
+
"module": {
|
|
161
|
+
"types": "./packageInfo.d.ts",
|
|
162
|
+
"default": "./packageInfo.js"
|
|
163
|
+
},
|
|
164
|
+
"require": {
|
|
165
|
+
"types": "./cjs/packageInfo.d.ts",
|
|
166
|
+
"default": "./cjs/packageInfo.js"
|
|
167
|
+
},
|
|
168
|
+
"default": {
|
|
169
|
+
"types": "./packageInfo.d.ts",
|
|
170
|
+
"default": "./packageInfo.js"
|
|
171
|
+
}
|
|
172
|
+
},
|
|
173
|
+
"./packageInfo.js": {
|
|
174
|
+
"module": {
|
|
175
|
+
"types": "./packageInfo.d.ts",
|
|
176
|
+
"default": "./packageInfo.js"
|
|
177
|
+
},
|
|
178
|
+
"require": {
|
|
179
|
+
"types": "./cjs/packageInfo.d.ts",
|
|
180
|
+
"default": "./cjs/packageInfo.js"
|
|
181
|
+
},
|
|
182
|
+
"default": {
|
|
183
|
+
"types": "./packageInfo.d.ts",
|
|
184
|
+
"default": "./packageInfo.js"
|
|
185
|
+
}
|
|
186
|
+
},
|
|
187
|
+
"./types": {
|
|
188
|
+
"module": {
|
|
189
|
+
"types": "./types.d.ts",
|
|
190
|
+
"default": "./types.js"
|
|
191
|
+
},
|
|
192
|
+
"require": {
|
|
193
|
+
"types": "./cjs/types.d.ts",
|
|
194
|
+
"default": "./cjs/types.js"
|
|
195
|
+
},
|
|
196
|
+
"default": {
|
|
197
|
+
"types": "./types.d.ts",
|
|
198
|
+
"default": "./types.js"
|
|
199
|
+
}
|
|
200
|
+
},
|
|
201
|
+
"./util": {
|
|
202
|
+
"module": {
|
|
203
|
+
"types": "./util.d.ts",
|
|
204
|
+
"default": "./util.js"
|
|
205
|
+
},
|
|
206
|
+
"require": {
|
|
207
|
+
"types": "./cjs/util.d.ts",
|
|
208
|
+
"default": "./cjs/util.js"
|
|
209
|
+
},
|
|
210
|
+
"default": {
|
|
211
|
+
"types": "./util.d.ts",
|
|
212
|
+
"default": "./util.js"
|
|
213
|
+
}
|
|
214
|
+
}
|
|
22
215
|
},
|
|
23
216
|
"dependencies": {
|
|
24
217
|
"jsdom": "^24.0.0",
|
|
25
218
|
"tslib": "^2.7.0"
|
|
26
|
-
},
|
|
27
|
-
"devDependencies": {
|
|
28
|
-
"@types/jsdom": "^21.1.6"
|
|
29
219
|
}
|
|
30
220
|
}
|
package/packageInfo.d.ts
ADDED
package/packageInfo.js
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export const packageInfo = { name: '@pezkuwi/dev-test', path: (import.meta && import.meta.url) ? new URL(import.meta.url).pathname.substring(0, new URL(import.meta.url).pathname.lastIndexOf('/') + 1) : 'auto', type: 'esm', version: '0.85.4' };
|