nodejs / nodejs/node

test_runner: `node --test` silently drops options or args in certain cases

Open
#64,109 1 comment 0 reactions 0 assignees View on GitHub

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

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. 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

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.