test_runner: `node --test` silently drops options or args in certain cases
Nobody has claimed this yet.
- Dominant language
- JavaScript
- Stars
- 122k
- Forks
- 37.3k
- Avg merge
- 4d 2h
- Merged PRs (30d)
- 283
Description
Version
v26.3.0
Subsystem
test_runner
What steps will reproduce the bug?
Either of the following:
node --test no-tests-here "spec/*.test.js"
node --test "spec/*.test.js" --test-reporter tap
What is the expected behavior? Why is that the expected behavior?
In the first case, since positional args are taken as a path or glob for tests to be run, each arg should result in at least one test found and successfully run, else a warning or error should be printed, e.g.:
No tests were found at "no-tests-here".
In the second case, ideally the CLI parsing is changed to allow options to come after positional args (see also #51384 and nodejs/test-runner#13), and --test-reporter tap results in the TAP test reporter being used. If that is not possible, then warnings or errors like the first case:
No tests were found at "--test-reporter".
No tests were found at "tap".
The reason for the warnings or errors is that when a positional arg does not resolve to a single test file, it is most likely a user mistake/typo, or as in the second case, the natural but incorrect assumption that options can be specified at the end.
What do you see instead?
"no-tests-here" in the first case and "--test-reporter tap" in the second are dropped without warning or error.
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Research direction
Start by reproducing both cases with the node --test commands in the issue and trace the test_runner CLI argument handling. Done means positional paths are not silently dropped: unmatched paths produce a warning or error, and the reporter option is either accepted after positional arguments or reported clearly as invalid.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- javascript, node.js
- Domain
- cli, testing-qa
- Issue type
- Bug
- Difficulty
- 3/5
- Estimated time
- 1-2 days
- Activity status
- Quiet
- Clarity
- Mostly clear
- Newbie friendliness
- 58/100