poku 2.4.0 → 2.4.2

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/lib/bin/index.js CHANGED
@@ -62,22 +62,24 @@ const options_js_1 = require("../parsers/options.js");
62
62
  }
63
63
  if ((0, get_arg_js_1.hasArg)('list-files')) {
64
64
  const { listFiles } = require('../modules/helpers/list-files.js');
65
- let total = 0;
65
+ const files = [];
66
66
  write_js_1.Write.hr();
67
67
  for (const dir of dirs) {
68
- const files = await listFiles(dir, {
68
+ files.push(...(await listFiles(dir, {
69
69
  filter: typeof filter === 'string'
70
70
  ? new RegExp((0, list_files_js_1.escapeRegExp)(filter))
71
71
  : filter,
72
72
  exclude: typeof exclude === 'string'
73
73
  ? new RegExp((0, list_files_js_1.escapeRegExp)(exclude))
74
74
  : exclude,
75
- });
76
- total += files.length;
77
- write_js_1.Write.log(files.map((file) => `${(0, format_js_1.format)('-').dim()} ${file}`).join('\n'));
75
+ })));
78
76
  }
77
+ write_js_1.Write.log(files
78
+ .sort()
79
+ .map((file) => `${(0, format_js_1.format)('-').dim()} ${file}`)
80
+ .join('\n'));
79
81
  write_js_1.Write.hr();
80
- write_js_1.Write.log(`Total test files: ${(0, format_js_1.format)(String(total)).bold()}`);
82
+ write_js_1.Write.log(`Total test files: ${(0, format_js_1.format)(String(files.length)).bold()}`);
81
83
  write_js_1.Write.hr();
82
84
  return;
83
85
  }
@@ -0,0 +1,34 @@
1
+ import type { ProcessAssertionOptions } from '../@types/assert.js';
2
+ import type assert from 'node:assert';
3
+ import type { AssertPredicate } from 'node:assert';
4
+ export declare const createAssert: (nodeAssert: typeof assert) => ((value: unknown, message?: ProcessAssertionOptions["message"]) => void) & {
5
+ ok: (value: unknown, message?: ProcessAssertionOptions["message"]) => void;
6
+ equal: (actual: unknown, expected: unknown, message?: ProcessAssertionOptions["message"]) => void;
7
+ deepEqual: (actual: unknown, expected: unknown, message?: ProcessAssertionOptions["message"]) => void;
8
+ strictEqual: (actual: unknown, expected: unknown, message?: ProcessAssertionOptions["message"]) => void;
9
+ deepStrictEqual: (actual: unknown, expected: unknown, message?: ProcessAssertionOptions["message"]) => void;
10
+ doesNotMatch: (value: string, regExp: RegExp, message?: ProcessAssertionOptions["message"]) => void;
11
+ doesNotReject: {
12
+ (block: (() => Promise<unknown>) | Promise<unknown>, message?: ProcessAssertionOptions["message"]): Promise<void>;
13
+ (block: (() => Promise<unknown>) | Promise<unknown>, error: AssertPredicate, message?: ProcessAssertionOptions["message"]): Promise<void>;
14
+ };
15
+ throws: {
16
+ (block: () => unknown, message?: ProcessAssertionOptions["message"]): void;
17
+ (block: () => unknown, error: AssertPredicate, message?: ProcessAssertionOptions["message"]): void;
18
+ };
19
+ doesNotThrow: {
20
+ (block: () => unknown, message?: string | ProcessAssertionOptions["message"]): void;
21
+ (block: () => unknown, error: AssertPredicate, message?: ProcessAssertionOptions["message"]): void;
22
+ };
23
+ notEqual: (actual: unknown, expected: unknown, message?: ProcessAssertionOptions["message"]) => void;
24
+ notDeepEqual: (actual: unknown, expected: unknown, message?: ProcessAssertionOptions["message"]) => void;
25
+ notStrictEqual: (actual: unknown, expected: unknown, message?: ProcessAssertionOptions["message"]) => void;
26
+ notDeepStrictEqual: (actual: unknown, expected: unknown, message?: ProcessAssertionOptions["message"]) => void;
27
+ match: (value: string, regExp: RegExp, message?: ProcessAssertionOptions["message"]) => void;
28
+ ifError: (value: unknown, message?: ProcessAssertionOptions["message"]) => void;
29
+ fail: (message?: ProcessAssertionOptions["message"]) => never;
30
+ rejects: {
31
+ (block: (() => Promise<unknown>) | Promise<unknown>, message?: ProcessAssertionOptions["message"]): Promise<void>;
32
+ (block: (() => Promise<unknown>) | Promise<unknown>, error: AssertPredicate, message?: ProcessAssertionOptions["message"]): Promise<void>;
33
+ };
34
+ };
@@ -0,0 +1,183 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.createAssert = void 0;
4
+ const get_runtime_js_1 = require("../parsers/get-runtime.js");
5
+ const assert_js_1 = require("../services/assert.js");
6
+ const createAssert = (nodeAssert) => {
7
+ const ok = (value, message) => {
8
+ (0, assert_js_1.processAssert)(() => {
9
+ nodeAssert.ok(value);
10
+ }, { message });
11
+ };
12
+ const equal = (actual, expected, message) => {
13
+ (0, assert_js_1.processAssert)(() => {
14
+ nodeAssert.equal(actual, expected);
15
+ }, { message });
16
+ };
17
+ const deepEqual = (actual, expected, message) => {
18
+ (0, assert_js_1.processAssert)(() => nodeAssert.deepEqual(actual, expected), { message });
19
+ };
20
+ const strictEqual = (actual, expected, message) => {
21
+ (0, assert_js_1.processAssert)(() => nodeAssert.strictEqual(actual, expected), { message });
22
+ };
23
+ const deepStrictEqual = (actual, expected, message) => {
24
+ (0, assert_js_1.processAssert)(() => nodeAssert.deepStrictEqual(actual, expected), {
25
+ message,
26
+ });
27
+ };
28
+ const notEqual = (actual, expected, message) => {
29
+ (0, assert_js_1.processAssert)(() => nodeAssert.notEqual(actual, expected), {
30
+ message,
31
+ });
32
+ };
33
+ const notDeepEqual = (actual, expected, message) => {
34
+ (0, assert_js_1.processAssert)(() => nodeAssert.notDeepEqual(actual, expected), { message });
35
+ };
36
+ const notStrictEqual = (actual, expected, message) => {
37
+ (0, assert_js_1.processAssert)(() => nodeAssert.notStrictEqual(actual, expected), {
38
+ message,
39
+ });
40
+ };
41
+ const notDeepStrictEqual = (actual, expected, message) => {
42
+ (0, assert_js_1.processAssert)(() => nodeAssert.notDeepStrictEqual(actual, expected), {
43
+ message,
44
+ });
45
+ };
46
+ const ifError = (value, message) => {
47
+ (0, assert_js_1.processAssert)(() => {
48
+ nodeAssert.ifError(value);
49
+ }, {
50
+ message,
51
+ defaultMessage: 'Expected no error, but received an error',
52
+ hideDiff: true,
53
+ throw: true,
54
+ });
55
+ };
56
+ const fail = (message) => {
57
+ (0, assert_js_1.processAssert)(() => {
58
+ nodeAssert.fail(message);
59
+ }, {
60
+ message,
61
+ defaultMessage: 'Test failed intentionally',
62
+ hideDiff: true,
63
+ });
64
+ process.exit(1);
65
+ };
66
+ function doesNotThrow(block, errorOrMessage, message) {
67
+ (0, assert_js_1.processAssert)(() => {
68
+ if (typeof errorOrMessage === 'function' ||
69
+ errorOrMessage instanceof RegExp ||
70
+ typeof errorOrMessage === 'object') {
71
+ nodeAssert.doesNotThrow(block, errorOrMessage, message);
72
+ }
73
+ else {
74
+ const msg = typeof errorOrMessage === 'string' ? errorOrMessage : message;
75
+ nodeAssert.doesNotThrow(block, msg);
76
+ }
77
+ }, {
78
+ message: typeof errorOrMessage === 'string' ? errorOrMessage : message,
79
+ defaultMessage: 'Expected function not to throw',
80
+ hideDiff: true,
81
+ throw: true,
82
+ });
83
+ }
84
+ function throws(block, errorOrMessage, message) {
85
+ if (typeof errorOrMessage === 'function' ||
86
+ errorOrMessage instanceof RegExp ||
87
+ typeof errorOrMessage === 'object') {
88
+ (0, assert_js_1.processAssert)(() => nodeAssert.throws(block, errorOrMessage), {
89
+ message,
90
+ defaultMessage: 'Expected function to throw',
91
+ hideDiff: true,
92
+ });
93
+ }
94
+ else {
95
+ const msg = typeof errorOrMessage !== 'undefined' ? errorOrMessage : message;
96
+ (0, assert_js_1.processAssert)(() => nodeAssert.throws(block, message), {
97
+ message: msg,
98
+ defaultMessage: 'Expected function to throw',
99
+ hideDiff: true,
100
+ });
101
+ }
102
+ }
103
+ async function rejects(block, errorOrMessage, message) {
104
+ await (0, assert_js_1.processAsyncAssert)(async () => {
105
+ if (typeof errorOrMessage === 'function' ||
106
+ errorOrMessage instanceof RegExp ||
107
+ typeof errorOrMessage === 'object') {
108
+ await nodeAssert.rejects(block, errorOrMessage, message);
109
+ }
110
+ else {
111
+ const msg = typeof errorOrMessage === 'string' ? errorOrMessage : message;
112
+ await nodeAssert.rejects(block, msg);
113
+ }
114
+ }, {
115
+ message: typeof errorOrMessage === 'string' ? errorOrMessage : message,
116
+ defaultMessage: 'Expected promise to be rejected with specified error',
117
+ hideDiff: true,
118
+ throw: true,
119
+ });
120
+ }
121
+ async function doesNotReject(block, errorOrMessage, message) {
122
+ await (0, assert_js_1.processAsyncAssert)(async () => {
123
+ if (typeof errorOrMessage === 'function' ||
124
+ errorOrMessage instanceof RegExp ||
125
+ typeof errorOrMessage === 'object') {
126
+ await nodeAssert.doesNotReject(block, errorOrMessage, message);
127
+ }
128
+ else {
129
+ await nodeAssert.doesNotReject(block, message);
130
+ }
131
+ }, {
132
+ message: typeof errorOrMessage === 'string' ? errorOrMessage : message,
133
+ defaultMessage: 'Got unwanted rejection',
134
+ hideDiff: true,
135
+ throw: true,
136
+ });
137
+ }
138
+ const match = (value, regExp, message) => {
139
+
140
+ if (typeof get_runtime_js_1.nodeVersion === 'number' && get_runtime_js_1.nodeVersion < 12) {
141
+ throw new Error('match is available from Node.js 12 or higher');
142
+ }
143
+ (0, assert_js_1.processAssert)(() => nodeAssert === null || nodeAssert === void 0 ? void 0 : nodeAssert.match(value, regExp), {
144
+ message,
145
+ actual: 'Value',
146
+ expected: 'RegExp',
147
+ defaultMessage: 'Value should match regExp',
148
+ });
149
+ };
150
+ const doesNotMatch = (value, regExp, message) => {
151
+
152
+ if (typeof get_runtime_js_1.nodeVersion === 'number' && get_runtime_js_1.nodeVersion < 12) {
153
+ throw new Error('doesNotMatch is available from Node.js 12 or higher');
154
+ }
155
+ (0, assert_js_1.processAssert)(() => nodeAssert.doesNotMatch(value, regExp), {
156
+ message,
157
+ actual: 'Value',
158
+ expected: 'RegExp',
159
+ defaultMessage: 'Value should not match regExp',
160
+ });
161
+ };
162
+ const assert = Object.assign((value, message) => ok(value, message), {
163
+ ok,
164
+ equal,
165
+ deepEqual,
166
+ strictEqual,
167
+ deepStrictEqual,
168
+ doesNotMatch,
169
+ doesNotReject,
170
+ throws,
171
+ doesNotThrow,
172
+ notEqual,
173
+ notDeepEqual,
174
+ notStrictEqual,
175
+ notDeepStrictEqual,
176
+ match,
177
+ ifError,
178
+ fail,
179
+ rejects,
180
+ });
181
+ return assert;
182
+ };
183
+ exports.createAssert = createAssert;
@@ -7,4 +7,4 @@ exports.results = {
7
7
  skip: 0,
8
8
  todo: 0,
9
9
  };
10
- exports.VERSION = '2.4.0';
10
+ exports.VERSION = '2.4.2';
@@ -5,5 +5,5 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
6
  exports.assert = void 0;
7
7
  const node_assert_1 = __importDefault(require("assert"));
8
- const assert_js_1 = require("../../services/assert.js");
8
+ const assert_js_1 = require("../../builders/assert.js");
9
9
  exports.assert = (0, assert_js_1.createAssert)(node_assert_1.default);
@@ -43,6 +43,7 @@ async function poku(targetPaths, configs) {
43
43
  files_js_1.finalResults.time = total;
44
44
  showLogs && (0, format_js_1.showTestResults)();
45
45
  (0, exit_js_1.exit)(code, configs === null || configs === void 0 ? void 0 : configs.quiet);
46
+ return;
46
47
  }
47
48
 
48
49
  if (showLogs) {
@@ -5,5 +5,5 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
6
  exports.strict = void 0;
7
7
  const strict_1 = __importDefault(require("assert/strict"));
8
- const assert_js_1 = require("../../services/assert.js");
8
+ const assert_js_1 = require("../../builders/assert.js");
9
9
  exports.strict = (0, assert_js_1.createAssert)(strict_1.default);
@@ -1,2 +1,2 @@
1
1
  import type { Code } from '../../@types/code.js';
2
- export declare const exit: (code: Code, quiet?: boolean) => never;
2
+ export declare const exit: (code: Code, quiet?: boolean) => void;
@@ -10,6 +10,7 @@ const format_js_1 = require("../../services/format.js");
10
10
  const write_js_1 = require("../../services/write.js");
11
11
  const files_js_1 = require("../../configs/files.js");
12
12
  const time_js_1 = require("../../parsers/time.js");
13
+ const node_assert_1 = require("assert");
13
14
  const exit = (code, quiet) => {
14
15
  const isPoku = poku_js_1.results.success > 0 || poku_js_1.results.fail > 0;
15
16
  const success = ` PASS › ${poku_js_1.results.success - poku_js_1.results.skip || 0} `;
@@ -49,16 +50,20 @@ const exit = (code, quiet) => {
49
50
  }
50
51
  write_js_1.Write.log(`${(0, format_js_1.format)('Exited with code').dim()} ${(0, format_js_1.format)(String(code)).bold()[code === 0 ? 'success' : 'fail']()}\n`);
51
52
  });
52
- node_process_1.default.exit(code === 0 ? 0 : 1);
53
+ node_process_1.default.exitCode = code === 0 ? 0 : 1;
53
54
  };
54
55
  exports.exit = exit;
55
56
 
56
- node_process_1.default.on('unhandledRejection', (reason) => {
57
- console.error('unhandledRejection', reason);
58
- node_process_1.default.exit(1);
57
+ node_process_1.default.on('unhandledRejection', (err) => {
58
+ if (!(err instanceof node_assert_1.AssertionError)) {
59
+ console.error('unhandledRejection', err);
60
+ }
61
+ node_process_1.default.exitCode = 1;
59
62
  });
60
-
61
63
  node_process_1.default.on('uncaughtException', (err) => {
62
- console.error('uncaughtException', err);
63
- node_process_1.default.exit(1);
64
+ if (!(err instanceof node_assert_1.AssertionError)) {
65
+ console.error('uncaughtException', err);
66
+ }
67
+ node_process_1.default.exitCode = 1;
64
68
  });
69
+
@@ -1,35 +1,2 @@
1
1
  import type { ProcessAssertionOptions } from '../@types/assert.js';
2
- import type assert from 'node:assert';
3
- import type { AssertPredicate } from 'node:assert';
4
- export declare const processAssert: (cb: () => void | Promise<void>, options: ProcessAssertionOptions) => Promise<void>;
5
- export declare const createAssert: (nodeAssert: typeof assert) => ((value: unknown, message?: ProcessAssertionOptions["message"]) => void) & {
6
- ok: (value: unknown, message?: ProcessAssertionOptions["message"]) => void;
7
- equal: (actual: unknown, expected: unknown, message?: ProcessAssertionOptions["message"]) => void;
8
- deepEqual: (actual: unknown, expected: unknown, message?: ProcessAssertionOptions["message"]) => void;
9
- strictEqual: (actual: unknown, expected: unknown, message?: ProcessAssertionOptions["message"]) => void;
10
- deepStrictEqual: (actual: unknown, expected: unknown, message?: ProcessAssertionOptions["message"]) => void;
11
- doesNotMatch: (value: string, regExp: RegExp, message?: ProcessAssertionOptions["message"]) => void;
12
- doesNotReject: {
13
- (block: (() => Promise<unknown>) | Promise<unknown>, message?: ProcessAssertionOptions["message"]): Promise<void>;
14
- (block: (() => Promise<unknown>) | Promise<unknown>, error: AssertPredicate, message?: ProcessAssertionOptions["message"]): Promise<void>;
15
- };
16
- throws: {
17
- (block: () => unknown, message?: ProcessAssertionOptions["message"]): void;
18
- (block: () => unknown, error: AssertPredicate, message?: ProcessAssertionOptions["message"]): void;
19
- };
20
- doesNotThrow: {
21
- (block: () => unknown, message?: string | ProcessAssertionOptions["message"]): void;
22
- (block: () => unknown, error: AssertPredicate, message?: ProcessAssertionOptions["message"]): void;
23
- };
24
- notEqual: (actual: unknown, expected: unknown, message?: ProcessAssertionOptions["message"]) => void;
25
- notDeepEqual: (actual: unknown, expected: unknown, message?: ProcessAssertionOptions["message"]) => void;
26
- notStrictEqual: (actual: unknown, expected: unknown, message?: ProcessAssertionOptions["message"]) => void;
27
- notDeepStrictEqual: (actual: unknown, expected: unknown, message?: ProcessAssertionOptions["message"]) => void;
28
- match: (value: string, regExp: RegExp, message?: ProcessAssertionOptions["message"]) => void;
29
- ifError: (value: unknown, message?: ProcessAssertionOptions["message"]) => void;
30
- fail: (message?: ProcessAssertionOptions["message"]) => never;
31
- rejects: {
32
- (block: (() => Promise<unknown>) | Promise<unknown>, message?: ProcessAssertionOptions["message"]): Promise<void>;
33
- (block: (() => Promise<unknown>) | Promise<unknown>, error: AssertPredicate, message?: ProcessAssertionOptions["message"]): Promise<void>;
34
- };
35
- };
2
+ export declare const processAssert: (cb: () => void, options: ProcessAssertionOptions) => void, processAsyncAssert: (cb: () => Promise<void>, options: ProcessAssertionOptions) => Promise<void>;
@@ -1,47 +1,74 @@
1
1
  "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || function (mod) {
19
+ if (mod && mod.__esModule) return mod;
20
+ var result = {};
21
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
22
+ __setModuleDefault(result, mod);
23
+ return result;
24
+ };
2
25
  var __importDefault = (this && this.__importDefault) || function (mod) {
3
26
  return (mod && mod.__esModule) ? mod : { "default": mod };
4
27
  };
28
+ var _a;
5
29
  Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.createAssert = exports.processAssert = void 0;
30
+ exports.processAsyncAssert = exports.processAssert = void 0;
7
31
  const node_assert_1 = require("assert");
8
- const node_process_1 = require("process");
32
+ const node_process_1 = __importStar(require("process"));
9
33
  const node_path_1 = __importDefault(require("path"));
10
34
  const find_file_from_stack_js_1 = require("../parsers/find-file-from-stack.js");
11
35
  const assert_js_1 = require("../parsers/assert.js");
12
- const get_runtime_js_1 = require("../parsers/get-runtime.js");
13
36
  const indentation_js_1 = require("../configs/indentation.js");
14
37
  const format_js_1 = require("./format.js");
15
38
  const write_js_1 = require("./write.js");
16
39
  const cwd = (0, node_process_1.cwd)();
17
40
  const regexFile = /file:(\/\/)?/;
18
- const processAssert = async (cb, options) => {
41
+ const assertProcessor = () => {
19
42
  const isPoku = typeof (node_process_1.env === null || node_process_1.env === void 0 ? void 0 : node_process_1.env.FILE) === 'string' && (node_process_1.env === null || node_process_1.env === void 0 ? void 0 : node_process_1.env.FILE.length) > 0;
20
43
  const FILE = node_process_1.env.FILE;
21
44
  let preIdentation = '';
22
- if (indentation_js_1.indentation.hasDescribe) {
23
- preIdentation += ' ';
24
- }
25
- if (indentation_js_1.indentation.hasItOrTest) {
26
- preIdentation += ' ';
27
- }
28
- try {
29
- const cbResult = cb();
30
- if (cbResult instanceof Promise) {
31
- await cbResult;
32
- }
45
+ const handleSuccess = (options) => {
33
46
  if (typeof options.message === 'string') {
47
+ if (indentation_js_1.indentation.hasDescribe) {
48
+ preIdentation += ' ';
49
+ }
50
+ if (indentation_js_1.indentation.hasItOrTest) {
51
+ preIdentation += ' ';
52
+ }
34
53
  const message = isPoku && !indentation_js_1.indentation.hasDescribe && !indentation_js_1.indentation.hasItOrTest
35
54
  ? `${preIdentation}${(0, format_js_1.format)(`${(0, format_js_1.format)(`✔ ${options.message}`).bold()} ${(0, format_js_1.format)(`› ${FILE}`).success().dim()}`).success()}`
36
55
  : `${preIdentation}${(0, format_js_1.format)(`✔ ${options.message}`).success().bold()}`;
37
56
  write_js_1.Write.log(message);
38
57
  }
39
- }
40
- catch (error) {
58
+ preIdentation = '';
59
+ };
60
+ const handleError = (error, options) => {
61
+ node_process_1.default.exitCode = 1;
41
62
  if (error instanceof node_assert_1.AssertionError) {
42
63
  const { code, actual, expected, operator } = error;
43
64
  const absolutePath = (0, find_file_from_stack_js_1.findFile)(error).replace(regexFile, '');
44
65
  const file = node_path_1.default.relative(node_path_1.default.resolve(cwd), absolutePath);
66
+ if (indentation_js_1.indentation.hasDescribe) {
67
+ preIdentation += ' ';
68
+ }
69
+ if (indentation_js_1.indentation.hasItOrTest) {
70
+ preIdentation += ' ';
71
+ }
45
72
  let message = '';
46
73
  if (typeof options.message === 'string') {
47
74
  message = options.message;
@@ -73,193 +100,37 @@ const processAssert = async (cb, options) => {
73
100
  for (const line of splitExpected) {
74
101
  write_js_1.Write.log(`${preIdentation} ${(0, format_js_1.format)(line).success().bold()}`);
75
102
  }
103
+ preIdentation = '';
76
104
  }
77
105
  if (options.throw) {
78
106
  console.error(error);
79
107
  write_js_1.Write.hr();
80
108
  }
81
- (0, node_process_1.exit)(1);
109
+ if (isPoku) {
110
+ throw error;
111
+ }
82
112
  }
83
113
 
84
114
  throw error;
85
- }
86
- };
87
- exports.processAssert = processAssert;
88
- const createAssert = (nodeAssert) => {
89
- const ok = (value, message) => {
90
- (0, exports.processAssert)(() => {
91
- nodeAssert.ok(value);
92
- }, { message });
93
- };
94
- const equal = (actual, expected, message) => {
95
- (0, exports.processAssert)(() => {
96
- nodeAssert.equal(actual, expected);
97
- }, { message });
98
- };
99
- const deepEqual = (actual, expected, message) => {
100
- (0, exports.processAssert)(() => nodeAssert.deepEqual(actual, expected), { message });
101
- };
102
- const strictEqual = (actual, expected, message) => {
103
- (0, exports.processAssert)(() => nodeAssert.strictEqual(actual, expected), { message });
104
- };
105
- const deepStrictEqual = (actual, expected, message) => {
106
- (0, exports.processAssert)(() => nodeAssert.deepStrictEqual(actual, expected), {
107
- message,
108
- });
109
- };
110
- const notEqual = (actual, expected, message) => {
111
- (0, exports.processAssert)(() => nodeAssert.notEqual(actual, expected), {
112
- message,
113
- });
114
115
  };
115
- const notDeepEqual = (actual, expected, message) => {
116
- (0, exports.processAssert)(() => nodeAssert.notDeepEqual(actual, expected), { message });
117
- };
118
- const notStrictEqual = (actual, expected, message) => {
119
- (0, exports.processAssert)(() => nodeAssert.notStrictEqual(actual, expected), {
120
- message,
121
- });
122
- };
123
- const notDeepStrictEqual = (actual, expected, message) => {
124
- (0, exports.processAssert)(() => nodeAssert.notDeepStrictEqual(actual, expected), {
125
- message,
126
- });
127
- };
128
- const ifError = (value, message) => {
129
- (0, exports.processAssert)(() => {
130
- nodeAssert.ifError(value);
131
- }, {
132
- message,
133
- defaultMessage: 'Expected no error, but received an error',
134
- hideDiff: true,
135
- throw: true,
136
- });
137
- };
138
- const fail = (message) => {
139
- (0, exports.processAssert)(() => {
140
- nodeAssert.fail(message);
141
- }, {
142
- message,
143
- defaultMessage: 'Test failed intentionally',
144
- hideDiff: true,
145
- });
146
- process.exit(1);
147
- };
148
- function doesNotThrow(block, errorOrMessage, message) {
149
- (0, exports.processAssert)(() => {
150
- if (typeof errorOrMessage === 'function' ||
151
- errorOrMessage instanceof RegExp ||
152
- typeof errorOrMessage === 'object') {
153
- nodeAssert.doesNotThrow(block, errorOrMessage, message);
154
- }
155
- else {
156
- const msg = typeof errorOrMessage === 'string' ? errorOrMessage : message;
157
- nodeAssert.doesNotThrow(block, msg);
158
- }
159
- }, {
160
- message: typeof errorOrMessage === 'string' ? errorOrMessage : message,
161
- defaultMessage: 'Expected function not to throw',
162
- hideDiff: true,
163
- throw: true,
164
- });
165
- }
166
- function throws(block, errorOrMessage, message) {
167
- if (typeof errorOrMessage === 'function' ||
168
- errorOrMessage instanceof RegExp ||
169
- typeof errorOrMessage === 'object') {
170
- (0, exports.processAssert)(() => nodeAssert.throws(block, errorOrMessage), {
171
- message,
172
- defaultMessage: 'Expected function to throw',
173
- hideDiff: true,
174
- });
116
+ const processAssert = (cb, options) => {
117
+ try {
118
+ cb();
119
+ handleSuccess(options);
175
120
  }
176
- else {
177
- const msg = typeof errorOrMessage !== 'undefined' ? errorOrMessage : message;
178
- (0, exports.processAssert)(() => nodeAssert.throws(block, message), {
179
- message: msg,
180
- defaultMessage: 'Expected function to throw',
181
- hideDiff: true,
182
- });
121
+ catch (error) {
122
+ handleError(error, options);
183
123
  }
184
- }
185
- async function rejects(block, errorOrMessage, message) {
186
- await (0, exports.processAssert)(async () => {
187
- if (typeof errorOrMessage === 'function' ||
188
- errorOrMessage instanceof RegExp ||
189
- typeof errorOrMessage === 'object') {
190
- await nodeAssert.rejects(block, errorOrMessage, message);
191
- }
192
- else {
193
- const msg = typeof errorOrMessage === 'string' ? errorOrMessage : message;
194
- await nodeAssert.rejects(block, msg);
195
- }
196
- }, {
197
- message: typeof errorOrMessage === 'string' ? errorOrMessage : message,
198
- defaultMessage: 'Expected promise to be rejected with specified error',
199
- hideDiff: true,
200
- throw: true,
201
- });
202
- }
203
- async function doesNotReject(block, errorOrMessage, message) {
204
- await (0, exports.processAssert)(async () => {
205
- if (typeof errorOrMessage === 'function' ||
206
- errorOrMessage instanceof RegExp ||
207
- typeof errorOrMessage === 'object') {
208
- await nodeAssert.doesNotReject(block, errorOrMessage, message);
209
- }
210
- else {
211
- await nodeAssert.doesNotReject(block, message);
212
- }
213
- }, {
214
- message: typeof errorOrMessage === 'string' ? errorOrMessage : message,
215
- defaultMessage: 'Got unwanted rejection',
216
- hideDiff: true,
217
- throw: true,
218
- });
219
- }
220
- const match = (value, regExp, message) => {
221
-
222
- if (typeof get_runtime_js_1.nodeVersion === 'number' && get_runtime_js_1.nodeVersion < 12) {
223
- throw new Error('match is available from Node.js 12 or higher');
224
- }
225
- (0, exports.processAssert)(() => nodeAssert === null || nodeAssert === void 0 ? void 0 : nodeAssert.match(value, regExp), {
226
- message,
227
- actual: 'Value',
228
- expected: 'RegExp',
229
- defaultMessage: 'Value should match regExp',
230
- });
231
124
  };
232
- const doesNotMatch = (value, regExp, message) => {
233
-
234
- if (typeof get_runtime_js_1.nodeVersion === 'number' && get_runtime_js_1.nodeVersion < 12) {
235
- throw new Error('doesNotMatch is available from Node.js 12 or higher');
125
+ const processAsyncAssert = async (cb, options) => {
126
+ try {
127
+ await cb();
128
+ handleSuccess(options);
129
+ }
130
+ catch (error) {
131
+ handleError(error, options);
236
132
  }
237
- (0, exports.processAssert)(() => nodeAssert.doesNotMatch(value, regExp), {
238
- message,
239
- actual: 'Value',
240
- expected: 'RegExp',
241
- defaultMessage: 'Value should not match regExp',
242
- });
243
133
  };
244
- const assert = Object.assign((value, message) => ok(value, message), {
245
- ok,
246
- equal,
247
- deepEqual,
248
- strictEqual,
249
- deepStrictEqual,
250
- doesNotMatch,
251
- doesNotReject,
252
- throws,
253
- doesNotThrow,
254
- notEqual,
255
- notDeepEqual,
256
- notStrictEqual,
257
- notDeepStrictEqual,
258
- match,
259
- ifError,
260
- fail,
261
- rejects,
262
- });
263
- return assert;
134
+ return { processAssert, processAsyncAssert };
264
135
  };
265
- exports.createAssert = createAssert;
136
+ _a = assertProcessor(), exports.processAssert = _a.processAssert, exports.processAsyncAssert = _a.processAsyncAssert;
@@ -7,7 +7,7 @@ exports.Write = {
7
7
  node_process_1.stdout.write(`${String(data)}\n`);
8
8
  },
9
9
  hr: () => {
10
- const line = ''.repeat(node_process_1.stdout.columns - 10 || 40);
10
+ const line = ''.repeat(node_process_1.stdout.columns - 10 || 40);
11
11
  exports.Write.log(`\n\x1b[2m\x1b[90m${line}\x1b[0m\n`);
12
12
  },
13
13
  };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "poku",
3
- "version": "2.4.0",
3
+ "version": "2.4.2",
4
4
  "description": "🐷 Poku makes testing easy for Node.js, Bun, Deno, and you at the same time.",
5
5
  "main": "./lib/modules/index.js",
6
6
  "license": "MIT",
@@ -62,10 +62,10 @@
62
62
  },
63
63
  "devDependencies": {
64
64
  "@biomejs/biome": "1.8.3",
65
- "@types/node": "^22.0.2",
65
+ "@types/node": "^22.1.0",
66
66
  "c8": "^10.1.2",
67
67
  "jsonc.min": "^1.0.0",
68
- "monocart-coverage-reports": "^2.10.0",
68
+ "monocart-coverage-reports": "^2.10.1",
69
69
  "packages-update": "^2.0.0",
70
70
  "prettier": "^3.3.3",
71
71
  "tsx": "4.16.5",