cli: restrict ExitCodeError unwrap to the CLI's own type
main.go previously unwrapped *any* error implementing `ExitCode() int` into the process exit status, which matched *exec.ExitError too. So whenever a CLI command ran a subprocess (mkfs.ext4, debugfs, ssh to a daemon preflight, etc.) and that subprocess failed, the CLI would silently exit with the subprocess's code — no error message printed. Surfaced while bringing up `banger internal make-bundle`: mkfs.ext4 was failing on an undersized ext4 and the user saw only `EXIT=1`. Fix: export the type as `cli.ExitCodeError` and unwrap against the concrete type in main.go. The `ExitCode()` method is gone — only the explicit wrap at the `vm run` command-mode call site produces this error now. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
parent
bb95a0a273
commit
a7d1a49aca
3 changed files with 12 additions and 13 deletions
|
|
@ -1675,9 +1675,9 @@ func TestRunVMRunCommandModePropagatesExitCode(t *testing.T) {
|
|||
nil,
|
||||
[]string{"false"},
|
||||
)
|
||||
var exitErr exitCodeError
|
||||
var exitErr ExitCodeError
|
||||
if !errors.As(err, &exitErr) || exitErr.Code != 7 {
|
||||
t.Fatalf("runVMRun error = %v, want exitCodeError{7}", err)
|
||||
t.Fatalf("runVMRun error = %v, want ExitCodeError{7}", err)
|
||||
}
|
||||
if len(sshArgsSeen) == 0 || sshArgsSeen[len(sshArgsSeen)-1] != "false" {
|
||||
t.Fatalf("sshArgsSeen = %v, want trailing command 'false'", sshArgsSeen)
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue