-
-
Notifications
You must be signed in to change notification settings - Fork 4
Description
Is your feature request related to a problem? Please describe.
I had encounter an issue when trying to look intended test fail results of Impress. Way to reproduce:
- Open impress folder in terminal.
- Open editor with file test/procedure.js
- In the assertion at lines 137-140 of the test
metatests.testAsync('lib/procedure timeout'
await test.rejects(
async () => procedure.invoke({}, { waitTime: 150 }),
new Error('Timeout of 100ms reached'),
);change the value of waitTime to 50. So the assertion must failed due to test configuration.
4. Run npm t
5. Instead of failed test report there is an error from reporting logic of metatest package itself (more specifically from one of its dependency tap-mocha-reporter)
Node v20.9.0 (v8 11.3.244.8-node.16):
Certificate request self-signature ok
subject=CN = localhost
lib/application ..................................... 21/21
lib/deps .............................................. 8/8
lib/procedure ....................................... 24/24
lib/procedure validate ................................ 4/4
schemas/contracts ..................................... 1/1
lib/api load ........................................ 22/22
lib/place ........................................... 18/18
schemas/config ........................................ 4/4
lib/bus ............................................. 11/11
lib/cert .............................................. 4/4
lib/code ............................................ 11/11
lib/procedure timeout ../node_modules/tap-mocha-reporter/lib/runner.js:293
return stack.trim().split('\n').map(function (line) {
^
TypeError: stack.trim is not a function
at reviveStack (/node_modules/tap-mocha-reporter/lib/runner.js:293:18)
at getError (/node_modules/tap-mocha-reporter/lib/runner.js:332:87)
at emitTest (/node_modules/tap-mocha-reporter/lib/runner.js:280:17)
at Parser.<anonymous> (/node_modules/tap-mocha-reporter/lib/runner.js:219:5)
at Parser.emit (node:events:514:28)
at Parser.emit (node:domain:488:12)
at Parser.emit (/node_modules/minipass/index.js:483:23)
at Parser.emitAssert (/node_modules/tap-parser/index.js:864:10)
at Parser.emitResult (/node_modules/tap-parser/index.js:733:10)
at Parser.plan (/node_modules/tap-parser/index.js:417:10)- The error not only failing the report but breaking execution of subsequent test cases, e.g. 'lib/procedure validate async'.
Describe the solution you'd like
Introduce better reporters instead of tap-mocha-reporter as it was described in #265
Describe alternatives you've considered
Please propose temporary workaround. I had tried to investigate function reviveStack in /node_modules/tap-mocha-reporter/lib/runner.js:293 by adding console.debug({ stack, stackFile: stack.file }). It seems that contract of stack that the function receives has been changed and even not stable to rely on: two internal subsequent calls resulting in string and object
{
stack: 'async ImperativeTest.func (/test/procedure.js:137:3)\n',
stackFile: undefined
}
{
stack: { file: '/test/procedure.js' },
stackFile: '/test/procedure.js'
}Unfortunately still had not found the temporary solution.
Additional context
OS: macOS 14.1.2
Node: 20.9.0, 18.18.2
Impress: 3.0.13
Metatests: 0.8.2