← Back to issue list

fix(validator): use stdout for command output

View original Github issue

Metadata

Project
craft-parts
Number
#1691
Type
pull request
State
open
Author
gcomneno
Labels
—
Created
Updated
Closed
—

Current evaluation

One-line fix so PluginEnvironmentValidator._execute() returns stdout instead of stderr, fixing Go plugin validation when Go emits 'downloading toolchain' on stderr. Adds a regression test; CI partly pending, unrelated jlink/docs-lint flakes reported.

Suggested action: needs review

Reason: The change replaces `return proc.stderr if proc.stderr else proc.stdout` in craft_parts/plugins/validator.py:152 with `return proc.stdout`, which directly fixes the Go validator failure described in canonical/craft-parts#1447 (go_plugin.py:83-93 requires the output to start with 'go version', which stdout satisfies when Go prints 'downloading go1.25.6' to stderr). It is a 1-line behavior change plus a docstring and a regression test with a reported failing-before/passing-after result, and all completed CI jobs pass; the two red statuses the author cites are pre-existing on main (jlink s390x SIGSEGV, reproduced in main run 32527752312) and a docs-lint external link timeout. It still has 0 maintainer reviews, 1 flagged unresolved Copilot comment (which the author says was addressed in d874e282), and many QA jobs still pending, so it is ready for re-review rather than merge.

Evaluated by: mr-cal-bot

Impact: 45 Quick Win: 20 Complexity: 25 Confidence: 76 Actionability: 60

Issue body

## Summary Fix plugin environment validation when a dependency writes informational messages to stderr while its semantic version is written to stdout. This affects the Go plugin when Go automatically downloads a toolchain during `go version`. In that case Go can emit: `go: downloading go1.25.6 (linux/amd64)` to stderr, and the previous validator implementation incorrectly treated stderr as the command output. This PR makes `_execute()` return stdout as the command output. Closes #1447. ## Validation - TDD regression test initially failed with the previous implementation: `stdout-value` expected, `stderr-value` returned. - Regression test passes after the fix. - `tests/unit/plugins/test_validator.py`: 6 passed - `tests/unit/plugins/test_go_plugin.py`: 19 passed - Ruff check: passed - Ruff format check: passed - `git diff --check`: passed ## AI Disclosure AI assistance was used during analysis and implementation of this contribution. - Tool: ChatGPT - Scope: codebase analysis, debugging/reasoning, regression-test draft, implementation draft, and commit/PR wording - Human review: completed; the resulting code and tests were reviewed and validated locally by the contributor

Evaluation history

Date Model Scores Action Summary
stealth/space-bunny-alpha
Impact: 45
Quick Win: 20
Complexity: 25
Confidence: 76
Actionability: 60
needs review One-line fix so PluginEnvironmentValidator._execute() returns stdout instead of stderr, fixing Go plugin validation when Go emits 'downloading toolchain' on stderr. Adds a regression test; CI partly pending, unrelated jlink/docs-lint flakes reported.
stealth/space-bunny-alpha
Impact: 40
Quick Win: 25
Complexity: 20
Confidence: 91
Actionability: 78
needs review Validator._execute() now returns stdout instead of stderr, with a regression test and updated docstring. Local tests and lint pass; 12 CI jobs remain pending and maintainer review is outstanding.
qwen3.6-35b-a3b-mtp-q6
Impact: 45
Quick Win: 38
Staleness: 35
Complexity: 15
Confidence: 75
needs review Fixes Go plugin env validation by returning stdout instead of stderr from _execute(). Closes #1447. Has passing CI and regression tests; awaiting maintainer review.
qwen/qwen3.6-35b-a3b
Staleness: 5
Complexity: 15
Confidence: 85
needs review Fixes validator to capture command output from stdout instead of stderr, resolving Go plugin version detection issues. Currently awaiting maintainer review with minor unrelated CI noise.
qwen/qwen3.6-35b-a3b
Staleness: 5
Complexity: 15
Confidence: 85
needs review Fixes validator to capture stdout instead of stderr for command output, resolving Go plugin toolchain download message interference. Currently pending maintainer review with one unresolved comment and CI mostly passing.
qwen/qwen3.6-35b-a3b
Staleness: 5
Complexity: 15
Confidence: 90
needs review Fixes validator to capture stdout instead of stderr for command output, resolving issue #1447. Currently pending maintainer review with one unresolved comment. CI passes except for a pre-existing, unrelated Java plugin failure on s390x.
qwen/qwen3.6-35b-a3b
Staleness: 5
Complexity: 15
Confidence: 90
needs review Fixes validator to capture stdout instead of stderr for command output, resolving Go plugin toolchain download message interference. Currently awaiting maintainer review with CI passing except for a pre-existing, unrelated s390x Java plugin crash.
qwen/qwen3.6-35b-a3b
Staleness: 5
Complexity: 15
Confidence: 90
needs review Changes validator to capture command output from stdout instead of stderr, fixing Go toolchain download interference. Currently awaiting maintainer review with passing CI and no open comments.

Update history

Date Change
updated
updated
updated
updated
updated
updated
created

Related work

  • Related To: canonical/craft-parts#1447 (confidence 92%)

    The PR body says 'Closes #1447' ('snap build fails if go must download the version'); the issue is still open and untriaged, so it should be closed on merge.

Related issues

No related issues found above the similarity threshold.