-
Notifications
You must be signed in to change notification settings - Fork 309
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
[DI] Handle async errors in mocha tests #4991
Conversation
If an async error is thrown in mocha tests, mocha doesn't see it. Best case, the test will just time out, worst case, it will pass.
This stack of pull requests is managed by Graphite. Learn more about stacking. |
Overall package sizeSelf size: 8.23 MB Dependency sizes| name | version | self size | total size | |------|---------|-----------|------------| | @datadog/libdatadog | 0.2.2 | 29.27 MB | 29.27 MB | | @datadog/native-appsec | 8.3.0 | 19.37 MB | 19.38 MB | | @datadog/native-iast-taint-tracking | 3.2.0 | 13.9 MB | 13.91 MB | | @datadog/pprof | 5.4.1 | 9.76 MB | 10.13 MB | | protobufjs | 7.2.5 | 2.77 MB | 5.16 MB | | @datadog/native-iast-rewriter | 2.6.0 | 2.58 MB | 2.72 MB | | @opentelemetry/core | 1.14.0 | 872.87 kB | 1.47 MB | | @datadog/native-metrics | 3.0.1 | 1.06 MB | 1.46 MB | | @opentelemetry/api | 1.8.0 | 1.21 MB | 1.21 MB | | import-in-the-middle | 1.11.2 | 112.74 kB | 826.22 kB | | msgpack-lite | 0.1.26 | 201.16 kB | 281.59 kB | | source-map | 0.7.4 | 226 kB | 226 kB | | opentracing | 0.14.7 | 194.81 kB | 194.81 kB | | lru-cache | 7.18.3 | 133.92 kB | 133.92 kB | | pprof-format | 2.1.0 | 111.69 kB | 111.69 kB | | @datadog/sketches-js | 2.1.0 | 109.9 kB | 109.9 kB | | semver | 7.6.3 | 95.82 kB | 95.82 kB | | lodash.sortby | 4.7.0 | 75.76 kB | 75.76 kB | | ignore | 5.3.1 | 51.46 kB | 51.46 kB | | int64-buffer | 0.1.10 | 49.18 kB | 49.18 kB | | shell-quote | 1.8.1 | 44.96 kB | 44.96 kB | | istanbul-lib-coverage | 3.2.0 | 29.34 kB | 29.34 kB | | rfdc | 1.3.1 | 25.21 kB | 25.21 kB | | @isaacs/ttlcache | 1.4.1 | 25.2 kB | 25.2 kB | | tlhunter-sorted-set | 0.1.0 | 24.94 kB | 24.94 kB | | limiter | 1.1.5 | 23.17 kB | 23.17 kB | | dc-polyfill | 0.1.4 | 23.1 kB | 23.1 kB | | retry | 0.13.1 | 18.85 kB | 18.85 kB | | jest-docblock | 29.7.0 | 8.99 kB | 12.76 kB | | crypto-randomuuid | 1.0.0 | 11.18 kB | 11.18 kB | | path-to-regexp | 0.1.12 | 6.6 kB | 6.6 kB | | koalas | 1.0.2 | 6.47 kB | 6.47 kB | | module-details-from-path | 1.0.3 | 4.47 kB | 4.47 kB |🤖 This report was automatically generated by heaviest-objects-in-the-universe |
BenchmarksBenchmark execution time: 2024-12-11 09:31:52 Comparing candidate commit 56ee3fe in PR branch Found 0 performance improvements and 0 performance regressions! Performance is the same for 262 metrics, 4 unstable metrics. |
If an async error is thrown in mocha tests, mocha doesn't see it. Best case, the test will just time out, worst case, it will pass.
If an async error is thrown in mocha tests, mocha doesn't see it. Best case, the test will just time out, worst case, it will pass.
If an async error is thrown in mocha tests, mocha doesn't see it. Best case, the test will just time out, worst case, it will pass.
If an async error is thrown in mocha tests, mocha doesn't see it. Best case, the test will just time out, worst case, it will pass.
If an async error is thrown in mocha tests, mocha doesn't see it. Best case, the test will just time out, worst case, it will pass.
In our case, there actually was an error in one of the integration tests, which has gone unnoticed (see 2nd commit).
Example
The following Mocha will never fail even if
result
isn't42
:The reason is that
assert.equal
throws asynchronously because it's inside thedoSomething
callback, and hence mocha doesn't catch it. I'm aware that in this case, Mocha will instead time out becausedone
isn't called, but there's situations where your test-code contains multiple calls todone
and so, the next call todone
will end the test and it will not time out (as is evident with the 2nd commit in this PR).In any case, the normal way to "fix" this is:
However, this quickly becomes tedious, if your Mocha tests has a lot of these callbacks. With the addition of the
failOnException
helper function in this PR, the above code can instead be written like so: