-
-
Notifications
You must be signed in to change notification settings - Fork 3k
Open
Labels
status: accepting prsMocha can use your help with this one!Mocha can use your help with this one!type: buga defect, confirmed by a maintainera defect, confirmed by a maintainer
Description
Bug Report Checklist
- I have read and agree to Mocha's Code of Conduct and Contributing GuidelinesI have searched for related issues and issues with the
faq
label, but none matched my issue.I have 'smoke tested' the code to be tested by running it outside the real test suite to get a better sense of whether the problem is in the code under test, my usage of Mocha, or Mocha itself.I want to provide a PR to resolve thisTo pick up a draggable item, press the space bar. While dragging, use the arrow keys to move the item. Press space again to drop the item in its new position, or press escape to cancel.
Expected
Successfully run tests with mocha 10.2.0
Actual
$ ./node_modules/.bin/mocha -r ts-node/register tests/**/*.ts --reporter mocha-junit-reporter --reporter-options mochaFile=test_reports/mocha/test-results.xml --exit
(node:75854) ExperimentalWarning: `--experimental-loader` may be removed in the future; instead use `register()`:
--import 'data:text/javascript,import { register } from "node:module"; import { pathToFileURL } from "node:url"; register("ts-node/esm", pathToFileURL("./"));'
(Use `node --trace-warnings ...` to show where the warning was created)
mocha inspect [spec..]
Run tests with Mocha
Rules & Behavior
--allow-uncaught Allow uncaught errors to propagate [boolean]
-A, --async-only Require all tests to use a callback (async) or
return a Promise [boolean]
-b, --bail Abort ("bail") after first test failure [boolean]
--check-leaks Check for global variable leaks [boolean]
--delay Delay initial execution of root suite [boolean]
--dry-run Report tests without executing them [boolean]
--exit Force Mocha to quit after tests complete [boolean]
--fail-zero Fail test run if no test(s) encountered [boolean]
--forbid-only Fail if exclusive test(s) encountered [boolean]
--forbid-pending Fail if pending test(s) encountered [boolean]
--global, --globals List of allowed global variables [array]
-j, --jobs Number of concurrent jobs for --parallel; use 1 to
run in serial
[number] [default: (number of CPU cores - 1)]
-p, --parallel Run tests in parallel [boolean]
--retries Retry failed tests this many times [number]
-s, --slow Specify "slow" test threshold (in milliseconds)
[string] [default: 75]
-t, --timeout, --timeouts Specify test timeout threshold (in milliseconds)
[string] [default: 2000]
-u, --ui Specify user interface [string] [default: "bdd"]
Reporting & Output
-c, --color, --colors Force-enable color output [boolean]
--diff Show diff on failure
[boolean] [default: true]
--full-trace Display full stack traces [boolean]
--inline-diffs Display actual/expected differences
inline within each string [boolean]
-R, --reporter Specify reporter to use
[string] [default: "spec"]
-O, --reporter-option, Reporter-specific options
--reporter-options (<k=v,[k1=v1,..]>) [array]
Configuration
--config Path to config file [string] [default: (nearest rc file)]
-n, --node-option Node or V8 option (no leading "--") [array]
--package Path to package.json for config [string]
File Handling
--extension File extension(s) to load
[array] [default: ["js","cjs","mjs"]]
--file Specify file(s) to be loaded prior to root suite
execution [array] [default: (none)]
--ignore, --exclude Ignore file(s) or glob pattern(s)
[array] [default: (none)]
--recursive Look for tests in subdirectories [boolean]
-r, --require Require module [array] [default: (none)]
-S, --sort Sort test files [boolean]
-w, --watch Watch files in the current working directory for
changes [boolean]
--watch-files List of paths or globs to watch [array]
--watch-ignore List of paths or globs to exclude from watching
[array] [default: ["node_modules",".git"]]
Test Filters
-f, --fgrep Only run tests containing this string [string]
-g, --grep Only run tests matching this string or regexp [string]
-i, --invert Inverts --grep and --fgrep matches [boolean]
Positional Arguments
spec One or more files, directories, or globs to test
[array] [default: ["test"]]
Other Options
-h, --help Show usage information & exit [boolean]
-V, --version Show version number & exit [boolean]
--list-interfaces List built-in user interfaces & exit [boolean]
--list-reporters List built-in reporters & exit [boolean]
✖ ERROR: null
In fact, just executing ./node_modules/.bin/mocha
itself without any input params will hit the same console output error.
Minimal, Reproducible Example
https://github.com/khteh/Node.JSRestAPI
Versions
10.2.0
v21.5.0
Additional Info
No response
jwalton
Metadata
Metadata
Assignees
Labels
status: accepting prsMocha can use your help with this one!Mocha can use your help with this one!type: buga defect, confirmed by a maintainera defect, confirmed by a maintainer
Type
Projects
Status
No status
Activity
jwalton commentedon Jan 22, 2024
I ran into this problem too. I solved it by downgrading to node 18.16.1 (not sure exactly which node version you need, but node 18.19.0 is too recent), then running mocha, then I got an actual real error message. I fixed the problem, upgraded back to node 20, and all was well.
In my particular case, the problem was in my tsconfig.json file. With:
things would fail, where with:
everything was fine.
JoshuaKGoldberg commentedon Jan 24, 2024
Spooky. I played around a bit and couldn't figure out if this is a dup of #5085 or a separate root cause that happens to be throwing a null error.
[-]🐛 Bug: mocha 10.2.0 prints out command help text instead of running successfully[/-][+]🐛 Bug: mocha 10.2.0 prints out command help text and ERROR: null with ts-node and experimental-specifier-resolution[/+]stalet commentedon Feb 2, 2024
It looks like the same issue.
Rob--W commentedon Apr 27, 2025
I believe that #5074 fixed this issue,by printing the actual error from the handler instead of triggering a new one that ends up logging
ERROR: null
.There is still a potentially actionable task, but in the
yargs
repo, because thenull
inERROR: null
comes fromyargs
. If anyone is interested in trying that further, see #5048 (comment)Rob--W commentedon Apr 27, 2025
Well, a bugfix could also be made in mocha. Instead of printing
msg
, it could fall back to loggingerror
atmocha/lib/cli/cli.js
Lines 60 to 65 in abf3dd9
JoshuaKGoldberg commentedon May 1, 2025
I also think #5074 fixed this issue. Nice catch, thank you!
@Rob--W is there any situation where we'd want to add a log of the error (i.e. #5344)? As in: do you have a reproduction showing any still-buggy behavior?
JoshuaKGoldberg commentedon Jun 11, 2025
Oh, sorry @Rob--W - I'd missed #5344 (comment) 😬 till now. Copying here:
Agreed on that last point, I don't think we want to log the full raw error in all cases. Only when
msg
is falsy then it does make sense to expand the logging IMO.Proposal: let's...
console.error(error)
whenmsg
is falsy, and add some note about it being an unknown internal errorcc @mochajs/committers - WDYT?
[-]🐛 Bug: mocha 10.2.0 prints out command help text and ERROR: null with ts-node and experimental-specifier-resolution[/-][+]🐛 Bug: mocha 10.2.0 prints out command help text and ERROR: null when unexpected error in -r module occurs[/+]mark-wiemer commentedon Jul 12, 2025
@voxpelli FYI marking this as accepting PRs as I'm in agreement with Josh
[-]🐛 Bug: mocha 10.2.0 prints out command help text and ERROR: null when unexpected error in -r module occurs[/-][+]🐛 Bug: Mocha prints out command help text and ERROR: null when unexpected error in -r module occurs[/+]