Repository navigation
fix(mcp): test passes timeout_seconds and check_ignore to runners that reject them #1779
Description
Description
The MCP test tool builds a command line from its arguments without checking which runner will receive it. Two arguments are accepted by the tool schema but rejected by one of the two runners, so the call fails with exit 64 before any test runs.
| Tool arguments | Command built | Result |
|---|---|---|
dart: true, timeout_seconds: 180 |
very_good dart test --timeout 180 -- … |
Could not find an option named "--timeout". |
check_ignore: true on a Flutter package |
very_good test --coverage --min-coverage 100 --check-ignore … |
Could not find an option named "--check-ignore". |
The cause is visible on main (8c772f3):
_parseTestinlib/src/mcp/mcp_server.dartappends--check-ignoreand--timeoutunconditionally, whichever runnerdartselects.--timeoutis registered only onvery_good test(lib/src/commands/test/test.dart).--check-ignoreis registered only onvery_good dart test(lib/src/commands/dart/commands/dart_test_command.dart).- Neither the
timeout_secondsnor thecheck_ignoreschema description says it is runner-specific.
This bites agents twice: an agent told to "always set timeout_seconds" cannot test a pure Dart package, and an agent told to pass check_ignore cannot test a Flutter one. The plugin's green-gate skill currently instructs both (VeryGoodOpenSource/vgv-ai-flutter-plugin#178).
Steps To Reproduce
- Call the MCP
testtool on a pure Dart package with{"dart": true, "timeout_seconds": 60}. - Observe
partial_failure/validation:Could not find an option named "--timeout". - Call the MCP
testtool on a Flutter package with{"check_ignore": true}. - Observe
partial_failure/validation:Could not find an option named "--check-ignore".
Expected Behavior
One of the following, in order of preference:
- Each argument works on both runners:
very_good dart testgains--timeout(ideally the wall-clock kill from fix(mcp): test timeout_seconds does not kill a hung test run, which blocks every later tool call #1765 / fix(mcp): enforce wall-clock timeout for test runs #1766) andvery_good testgains--check-ignore. - Otherwise, the handler validates combinations before running and returns a
validationfailure that names the argument and the runner it applies to, and the schema descriptions say which runner each argument supports.
Additional Context
-
Seen in field use in 3 of 310 calls (sessions
2007f494on 2026-10-07 and493ade61on 2026-10-14). Transcript excerpts are available on request. -
very_good_cli 1.5.0, Dart 3.13.5, Flutter 3.47.6, macOS 26.5 arm64, Claude Code 2.1.302.
-
Related: fix(mcp): test timeout_seconds does not kill a hung test run, which blocks every later tool call #1765 (timeout does not kill a hung run), feat(mcp): expose show_uncovered on the test tool #1705 (MCP surface narrower than the CLI).
-
Tracking issue: fix: very-good-cli MCP field diagnostic (310 calls) — tracking issue vgv-ai-flutter-plugin#180
Metadata
Metadata
Assignees
Labels
Type
Projects
- StatusShow more project fieldsIn Progress
Activity
ananya-kaul commentedon Oct 30, 2026
# fix(mcp): validate check_ignore before running Flutter tests
## Problem
The MCP test tool forwards
check_ignore: trueto the Flutter test command, which does not support--check-ignore. The command exits with code 64 before running any tests.## Change
Reject this combination before invoking the command runner, with a structured validation error explaining that
check_ignorerequiresdart: true. Flutter callers can omit the option or set it to false. Valid Dart calls still forward the flag.Addresses the remaining
check_ignoreportion of #1779. The timeout portion is already handled upstream; this does not implement coverage-ignore support in Flutter.## Validation
dartanddart: false.unicoderbot commentedon Oct 30, 2026
I've opened a pull request: #1791