Skip to content
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

fix(jasmine): unhanded promise rejection causes tests suit to pass #2707

Merged
merged 1 commit into from
May 27, 2021

Conversation

alan-agius4
Copy link
Contributor

@alan-agius4 alan-agius4 commented May 27, 2021

Currently unhandled promise rejection caused tests suit to pass.

Example:

yarn bazel test //packages/angular_devkit/core:core_test --test_summary=detailed --test_output=all
INFO: Analyzed target //packages/angular_devkit/core:core_test (2 packages loaded, 148 targets configured).
INFO: Found 1 test target...
Target //packages/angular_devkit/core:core_test up-to-date:
  dist/bin/packages/angular_devkit/core/core_test.sh
  dist/bin/packages/angular_devkit/core/core_test_loader.js
  dist/bin/packages/angular_devkit/core/core_test_require_patch.js
INFO: Elapsed time: 0.357s, Critical Path: 0.02s
INFO: 1 process: 1 internal.
INFO: Build completed successfully, 1 total action
PASSED: //packages/angular_devkit/core:core_test (see /private/var/tmp/_bazel_alanagius/5168427e57f204ca069c602aa7ed1931/execroot/angular_cli/bazel-out/darwin-fastbuild/testlogs/packages/angular_devkit/core/core_test/test.log)
INFO: From Testing //packages/angular_devkit/core:core_test
==================== Test output for //packages/angular_devkit/core:core_test:
(node:11987) UnhandledPromiseRejectionWarning: Error: Cannot find module '/private/var/tmp/_bazel_alanagius/5168427e57f204ca069c602aa7ed1931/execroot/angular_cli/node_modules/@angular-devkit/core/src/index.js'. Please verify that the package.json has a valid "main" entry
    at tryPackage (internal/modules/cjs/loader.js:303:19)
    at Function.Module._findPath (internal/modules/cjs/loader.js:516:18)
    at Function.Module._resolveFilename (internal/modules/cjs/loader.js:867:27)
    at Function.Module._load (internal/modules/cjs/loader.js:725:27)
    at Module.require (internal/modules/cjs/loader.js:952:19)
    at require (internal/modules/cjs/helpers.js:88:18)
    at Object.<anonymous> (packages/angular_devkit/core/src/virtual-fs/host/memory_spec.ts:10:1)
    at Module._compile (internal/modules/cjs/loader.js:1063:30)
    at Object.Module._extensions..js (internal/modules/cjs/loader.js:1092:10)
    at Module.load (internal/modules/cjs/loader.js:928:32)
    at Function.Module._load (internal/modules/cjs/loader.js:769:14)
    at Module.require (internal/modules/cjs/loader.js:952:19)
    at require (internal/modules/cjs/helpers.js:88:18)
    at Loader.requireShim [as require_] (node_modules/jasmine/lib/loader.js:35:3)
    at node_modules/jasmine/lib/loader.js:28:12
    at new Promise (<anonymous>)
    at Loader.load (node_modules/jasmine/lib/loader.js:27:12)
    at Jasmine.loadSpecs (node_modules/jasmine/lib/jasmine.js:91:23)
    at Jasmine.execute (node_modules/jasmine/lib/jasmine.js:267:3)
(Use `node --trace-warnings ...` to show where the warning was created)
(node:11987) UnhandledPromiseRejectionWarning: Unhandled promise rejection. This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch(). To terminate the node process on unhandled promise rejection, use the CLI flag `--unhandled-rejections=strict` (see https://nodejs.org/api/cli.html#cli_unhandled_rejections_mode). (rejection id: 2)
(node:11987) [DEP0018] DeprecationWarning: Unhandled promise rejections are deprecated. In the future, promise rejections that are not handled will terminate the Node.js process with a non-zero exit code.
================================================================================
Test cases: finished with 1 passing and 0 failing out of 1 test cases
Executed 0 out of 1 test: 1 test passes.

The reason for this is because Jasmine execute method returns a Promise, which was not handled properly. See: https://unpkg.com/browse/[email protected]/lib/jasmine.js#L267

Without this fix

yarn bazel test //packages/angular_devkit/core:core_test                                          
yarn run v1.22.10
INFO: Build options --action_env and --enable_runfiles have changed, discarding analysis cache.
INFO: Analyzed target //packages/angular_devkit/core:core_test (3 packages loaded, 6322 targets configured).
INFO: Found 1 test target...
Target //packages/angular_devkit/core:core_test up-to-date:
  dist/bin/packages/angular_devkit/core/core_test.sh
  dist/bin/packages/angular_devkit/core/core_test_loader.js
  dist/bin/packages/angular_devkit/core/core_test_require_patch.js
INFO: Elapsed time: 7.172s, Critical Path: 6.58s
INFO: 4 processes: 2 local, 2 worker.
INFO: Build completed successfully, 4 total actions
//packages/angular_devkit/core:core_test                                 PASSED in 0.5s

Executed 1 out of 1 test: 1 test passes.
INFO: Build completed successfully, 4 total actions

With this fix:

yarn bazel test //packages/angular_devkit/core:core_test 
yarn run v1.22.10
$ /Users/alanagius/git/angular-cli/node_modules/.bin/bazel test //packages/angular_devkit/core:core_test
INFO: Analyzed target //packages/angular_devkit/core:core_test (1 packages loaded, 10 targets configured).
INFO: Found 1 test target...
FAIL: //packages/angular_devkit/core:core_test (see /private/var/tmp/_bazel_alanagius/5168427e57f204ca069c602aa7ed1931/execroot/angular_cli/bazel-out/darwin-fastbuild/testlogs/packages/angular_devkit/core/core_test/test.log)
INFO: From Testing //packages/angular_devkit/core:core_test:
==================== Test output for //packages/angular_devkit/core:core_test:
[jasmine_runner.js] An error has been reported: Error: Cannot find module '/private/var/tmp/_bazel_alanagius/5168427e57f204ca069c602aa7ed1931/execroot/angular_cli/node_modules/@angular-devkit/core/src/index.js'. Please verify that the package.json has a valid "main" entry
    at tryPackage (internal/modules/cjs/loader.js:303:19)
    at Function.Module._findPath (internal/modules/cjs/loader.js:516:18)
    at Function.Module._resolveFilename (internal/modules/cjs/loader.js:867:27)
    at Function.Module._load (internal/modules/cjs/loader.js:725:27)
    at Module.require (internal/modules/cjs/loader.js:952:19)
    at require (internal/modules/cjs/helpers.js:88:18)
    at Object.<anonymous> (packages/angular_devkit/core/src/virtual-fs/host/memory_spec.ts:10:1)
    at Module._compile (internal/modules/cjs/loader.js:1063:30)
    at Object.Module._extensions..js (internal/modules/cjs/loader.js:1092:10)
    at Module.load (internal/modules/cjs/loader.js:928:32)
    at Function.Module._load (internal/modules/cjs/loader.js:769:14)
    at Module.require (internal/modules/cjs/loader.js:952:19)
    at require (internal/modules/cjs/helpers.js:88:18)
    at Loader.requireShim [as require_] (node_modules/jasmine/lib/loader.js:35:3)
    at node_modules/jasmine/lib/loader.js:28:12
    at new Promise (<anonymous>)
    at Loader.load (node_modules/jasmine/lib/loader.js:27:12)
    at Jasmine.loadSpecs (node_modules/jasmine/lib/jasmine.js:91:23)
    at Jasmine.execute (node_modules/jasmine/lib/jasmine.js:267:3)
    at main (node_modules/@bazel/jasmine/jasmine_runner.js:157:3)
    at node_modules/@bazel/jasmine/jasmine_runner.js:182:26 {
  code: 'MODULE_NOT_FOUND',
  path: '/private/var/tmp/_bazel_alanagius/5168427e57f204ca069c602aa7ed1931/execroot/angular_cli/node_modules/@angular-devkit/core/package.json',
  requestPath: '@angular-devkit/core'
}
================================================================================
Target //packages/angular_devkit/core:core_test up-to-date:
  dist/bin/packages/angular_devkit/core/core_test.sh
  dist/bin/packages/angular_devkit/core/core_test_loader.js
  dist/bin/packages/angular_devkit/core/core_test_require_patch.js
INFO: Elapsed time: 0.761s, Critical Path: 0.42s
INFO: 2 processes: 2 local.
INFO: Build completed, 1 test FAILED, 2 total actions
//packages/angular_devkit/core:core_test                                 FAILED in 0.4s
  /private/var/tmp/_bazel_alanagius/5168427e57f204ca069c602aa7ed1931/execroot/angular_cli/bazel-out/darwin-fastbuild/testlogs/packages/angular_devkit/core/core_test/test.log

Currently unhandled promise rejection caused tests suit to pass. Example:
```
yarn bazel test //packages/angular_devkit/core:core_test --test_summary=detailed --test_output=all
INFO: Analyzed target //packages/angular_devkit/core:core_test (2 packages loaded, 148 targets configured).
INFO: Found 1 test target...
Target //packages/angular_devkit/core:core_test up-to-date:
  dist/bin/packages/angular_devkit/core/core_test.sh
  dist/bin/packages/angular_devkit/core/core_test_loader.js
  dist/bin/packages/angular_devkit/core/core_test_require_patch.js
INFO: Elapsed time: 0.357s, Critical Path: 0.02s
INFO: 1 process: 1 internal.
INFO: Build completed successfully, 1 total action
PASSED: //packages/angular_devkit/core:core_test (see /private/var/tmp/_bazel_alanagius/5168427e57f204ca069c602aa7ed1931/execroot/angular_cli/bazel-out/darwin-fastbuild/testlogs/packages/angular_devkit/core/core_test/test.log)
INFO: From Testing //packages/angular_devkit/core:core_test
==================== Test output for //packages/angular_devkit/core:core_test:
(node:11987) UnhandledPromiseRejectionWarning: Error: Cannot find module '/private/var/tmp/_bazel_alanagius/5168427e57f204ca069c602aa7ed1931/execroot/angular_cli/node_modules/@angular-devkit/core/src/index.js'. Please verify that the package.json has a valid "main" entry
    at tryPackage (internal/modules/cjs/loader.js:303:19)
    at Function.Module._findPath (internal/modules/cjs/loader.js:516:18)
    at Function.Module._resolveFilename (internal/modules/cjs/loader.js:867:27)
    at Function.Module._load (internal/modules/cjs/loader.js:725:27)
    at Module.require (internal/modules/cjs/loader.js:952:19)
    at require (internal/modules/cjs/helpers.js:88:18)
    at Object.<anonymous> (packages/angular_devkit/core/src/virtual-fs/host/memory_spec.ts:10:1)
    at Module._compile (internal/modules/cjs/loader.js:1063:30)
    at Object.Module._extensions..js (internal/modules/cjs/loader.js:1092:10)
    at Module.load (internal/modules/cjs/loader.js:928:32)
    at Function.Module._load (internal/modules/cjs/loader.js:769:14)
    at Module.require (internal/modules/cjs/loader.js:952:19)
    at require (internal/modules/cjs/helpers.js:88:18)
    at Loader.requireShim [as require_] (node_modules/jasmine/lib/loader.js:35:3)
    at node_modules/jasmine/lib/loader.js:28:12
    at new Promise (<anonymous>)
    at Loader.load (node_modules/jasmine/lib/loader.js:27:12)
    at Jasmine.loadSpecs (node_modules/jasmine/lib/jasmine.js:91:23)
    at Jasmine.execute (node_modules/jasmine/lib/jasmine.js:267:3)
(Use `node --trace-warnings ...` to show where the warning was created)
(node:11987) UnhandledPromiseRejectionWarning: Unhandled promise rejection. This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch(). To terminate the node process on unhandled promise rejection, use the CLI flag `--unhandled-rejections=strict` (see https://nodejs.org/api/cli.html#cli_unhandled_rejections_mode). (rejection id: 2)
(node:11987) [DEP0018] DeprecationWarning: Unhandled promise rejections are deprecated. In the future, promise rejections that are not handled will terminate the Node.js process with a non-zero exit code.
================================================================================
Test cases: finished with 1 passing and 0 failing out of 1 test cases
Executed 0 out of 1 test: 1 test passes.
```

The reason for this is because Jasmine `execute` method returns a `Promise`, which was not handled properly. See: https://unpkg.com/browse/[email protected]/lib/jasmine.js#L267

Without this fix

```
yarn bazel test //packages/angular_devkit/core:core_test
yarn run v1.22.10
INFO: Build options --action_env and --enable_runfiles have changed, discarding analysis cache.
INFO: Analyzed target //packages/angular_devkit/core:core_test (3 packages loaded, 6322 targets configured).
INFO: Found 1 test target...
Target //packages/angular_devkit/core:core_test up-to-date:
  dist/bin/packages/angular_devkit/core/core_test.sh
  dist/bin/packages/angular_devkit/core/core_test_loader.js
  dist/bin/packages/angular_devkit/core/core_test_require_patch.js
INFO: Elapsed time: 7.172s, Critical Path: 6.58s
INFO: 4 processes: 2 local, 2 worker.
INFO: Build completed successfully, 4 total actions
//packages/angular_devkit/core:core_test                                 PASSED in 0.5s

Executed 1 out of 1 test: 1 test passes.
INFO: Build completed successfully, 4 total actions
```

With this fix:
```
yarn bazel test //packages/angular_devkit/core:core_test
yarn run v1.22.10
$ /Users/alanagius/git/angular-cli/node_modules/.bin/bazel test //packages/angular_devkit/core:core_test
INFO: Analyzed target //packages/angular_devkit/core:core_test (1 packages loaded, 10 targets configured).
INFO: Found 1 test target...
FAIL: //packages/angular_devkit/core:core_test (see /private/var/tmp/_bazel_alanagius/5168427e57f204ca069c602aa7ed1931/execroot/angular_cli/bazel-out/darwin-fastbuild/testlogs/packages/angular_devkit/core/core_test/test.log)
INFO: From Testing //packages/angular_devkit/core:core_test:
==================== Test output for //packages/angular_devkit/core:core_test:
[jasmine_runner.js] An error has been reported: Error: Cannot find module '/private/var/tmp/_bazel_alanagius/5168427e57f204ca069c602aa7ed1931/execroot/angular_cli/node_modules/@angular-devkit/core/src/index.js'. Please verify that the package.json has a valid "main" entry
    at tryPackage (internal/modules/cjs/loader.js:303:19)
    at Function.Module._findPath (internal/modules/cjs/loader.js:516:18)
    at Function.Module._resolveFilename (internal/modules/cjs/loader.js:867:27)
    at Function.Module._load (internal/modules/cjs/loader.js:725:27)
    at Module.require (internal/modules/cjs/loader.js:952:19)
    at require (internal/modules/cjs/helpers.js:88:18)
    at Object.<anonymous> (packages/angular_devkit/core/src/virtual-fs/host/memory_spec.ts:10:1)
    at Module._compile (internal/modules/cjs/loader.js:1063:30)
    at Object.Module._extensions..js (internal/modules/cjs/loader.js:1092:10)
    at Module.load (internal/modules/cjs/loader.js:928:32)
    at Function.Module._load (internal/modules/cjs/loader.js:769:14)
    at Module.require (internal/modules/cjs/loader.js:952:19)
    at require (internal/modules/cjs/helpers.js:88:18)
    at Loader.requireShim [as require_] (node_modules/jasmine/lib/loader.js:35:3)
    at node_modules/jasmine/lib/loader.js:28:12
    at new Promise (<anonymous>)
    at Loader.load (node_modules/jasmine/lib/loader.js:27:12)
    at Jasmine.loadSpecs (node_modules/jasmine/lib/jasmine.js:91:23)
    at Jasmine.execute (node_modules/jasmine/lib/jasmine.js:267:3)
    at main (node_modules/@bazel/jasmine/jasmine_runner.js:157:3)
    at node_modules/@bazel/jasmine/jasmine_runner.js:182:26 {
  code: 'MODULE_NOT_FOUND',
  path: '/private/var/tmp/_bazel_alanagius/5168427e57f204ca069c602aa7ed1931/execroot/angular_cli/node_modules/@angular-devkit/core/package.json',
  requestPath: '@angular-devkit/core'
}
================================================================================
Target //packages/angular_devkit/core:core_test up-to-date:
  dist/bin/packages/angular_devkit/core/core_test.sh
  dist/bin/packages/angular_devkit/core/core_test_loader.js
  dist/bin/packages/angular_devkit/core/core_test_require_patch.js
INFO: Elapsed time: 0.761s, Critical Path: 0.42s
INFO: 2 processes: 2 local.
INFO: Build completed, 1 test FAILED, 2 total actions
//packages/angular_devkit/core:core_test                                 FAILED in 0.4s
  /private/var/tmp/_bazel_alanagius/5168427e57f204ca069c602aa7ed1931/execroot/angular_cli/bazel-out/darwin-fastbuild/testlogs/packages/angular_devkit/core/core_test/test.log
```

Closes bazel-contrib#2688
@alan-agius4 alan-agius4 linked an issue May 27, 2021 that may be closed by this pull request
@alexeagle alexeagle merged commit 3c4ef58 into bazel-contrib:stable May 27, 2021
@alan-agius4 alan-agius4 deleted the jasmine-runner branch May 27, 2021 16:00
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

jasmine_node_test passes despite errors in test runner
2 participants