Skip to content

Commit 451218f

Browse files
adonovangopherbot
authored andcommitted
x/tools: address review of CL 564515 (CombinedOutput)
I fumbled with git and forked the CL, stranding some review comments from bcmills on the ill-fated fork. Updates golang/go#65729 Change-Id: I6d0bf431f841dacb94e9e13a90bf39f8e2ed2fbf Reviewed-on: https://go-review.googlesource.com/c/tools/+/564339 Reviewed-by: Bryan Mills <[email protected]> Auto-Submit: Alan Donovan <[email protected]> LUCI-TryBot-Result: Go LUCI <[email protected]>
1 parent 4bc74c3 commit 451218f

File tree

6 files changed

+32
-5
lines changed

6 files changed

+32
-5
lines changed

go/internal/cgo/cgo_pkgconfig.go

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,9 @@ func pkgConfig(mode string, pkgs []string) (flags []string, err error) {
2121
if len(out) > 0 {
2222
s = fmt.Sprintf("%s: %s", s, out)
2323
}
24+
if err, ok := err.(*exec.ExitError); ok && len(err.Stderr) > 0 {
25+
s = fmt.Sprintf("%s\nstderr:\n%s", s, err.Stderr)
26+
}
2427
return nil, errors.New(s)
2528
}
2629
if len(out) > 0 {

go/internal/gccgoimporter/importer_test.go

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -143,6 +143,9 @@ func TestObjImporter(t *testing.T) {
143143
verout, err := exec.Command(gpath, "--version").Output()
144144
if err != nil {
145145
t.Logf("%s", verout)
146+
if exit, ok := err.(*exec.ExitError); ok && len(exit.Stderr) > 0 {
147+
t.Logf("stderr:\n%s", exit.Stderr)
148+
}
146149
t.Fatal(err)
147150
}
148151
vers := regexp.MustCompile(`([0-9]+)\.([0-9]+)`).FindSubmatch(verout)

internal/diff/difftest/difftest_test.go

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -66,9 +66,15 @@ func getDiffOutput(a, b string) (string, error) {
6666
cmd.Env = append(cmd.Env, "LANG=en_US.UTF-8")
6767
out, err := cmd.Output()
6868
if err != nil {
69-
if _, ok := err.(*exec.ExitError); !ok {
70-
return "", fmt.Errorf("failed to run diff -u %v %v: %v\n%v", fileA.Name(), fileB.Name(), err, string(out))
69+
exit, ok := err.(*exec.ExitError)
70+
if !ok {
71+
return "", fmt.Errorf("can't exec %s: %v", cmd, err)
7172
}
73+
if len(out) == 0 {
74+
// Nonzero exit with no output: terminated by signal?
75+
return "", fmt.Errorf("%s failed: %v; stderr:\n%s", cmd, err, exit.Stderr)
76+
}
77+
// nonzero exit + output => files differ
7278
}
7379
diff := string(out)
7480
if len(diff) <= 0 {

internal/testenv/testenv.go

Lines changed: 12 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -85,6 +85,9 @@ func hasTool(tool string) error {
8585
// certainly not what the user intended.
8686
out, err := exec.Command(tool, "env", "GOROOT").Output()
8787
if err != nil {
88+
if exit, ok := err.(*exec.ExitError); ok && len(exit.Stderr) > 0 {
89+
err = fmt.Errorf("%w\nstderr:\n%s)", err, exit.Stderr)
90+
}
8891
checkGoBuild.err = err
8992
return
9093
}
@@ -143,6 +146,9 @@ func cgoEnabled(bypassEnvironment bool) (bool, error) {
143146
}
144147
out, err := cmd.Output()
145148
if err != nil {
149+
if exit, ok := err.(*exec.ExitError); ok && len(exit.Stderr) > 0 {
150+
err = fmt.Errorf("%w\nstderr:\n%s", err, exit.Stderr)
151+
}
146152
return false, err
147153
}
148154
enabled := strings.TrimSpace(string(out))
@@ -199,9 +205,12 @@ func NeedsTool(t testing.TB, tool string) {
199205

200206
t.Helper()
201207
if allowMissingTool(tool) {
202-
// TODO(adonovan): might silently skipping because of
203-
// (e.g.) mismatched go env GOROOT and runtime.GOROOT
204-
// risk some users not getting the coverage they expect?
208+
// TODO(adonovan): if we skip because of (e.g.)
209+
// mismatched go env GOROOT and runtime.GOROOT, don't
210+
// we risk some users not getting the coverage they expect?
211+
// bcmills notes: this shouldn't be a concern as of CL 404134 (Go 1.19).
212+
// We could probably safely get rid of that GOPATH consistency
213+
// check entirely at this point.
205214
t.Skipf("skipping because %s tool not available: %v", tool, err)
206215
} else {
207216
t.Fatalf("%s tool not available: %v", tool, err)

present/parse_test.go

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@ package present
66

77
import (
88
"bytes"
9+
"fmt"
910
"html/template"
1011
"os"
1112
"os/exec"
@@ -84,6 +85,8 @@ func diff(prefix string, name1 string, b1 []byte, name2 string, b2 []byte) ([]by
8485
// diff exits with a non-zero status when the files don't match.
8586
// Ignore that failure as long as we get output.
8687
err = nil
88+
} else if exit, ok := err.(*exec.ExitError); ok && len(exit.Stderr) > 0 {
89+
err = fmt.Errorf("%w\nstderr:\n%s)", err, exit.Stderr)
8790
}
8891

8992
data = bytes.Replace(data, []byte(f1), []byte(name1), -1)

refactor/rename/rename.go

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -596,6 +596,9 @@ func diff(filename string, content []byte) error {
596596
return nil
597597
}
598598
if err != nil {
599+
if exit, ok := err.(*exec.ExitError); ok && len(exit.Stderr) > 0 {
600+
err = fmt.Errorf("%w\nstderr:\n%s", err, exit.Stderr)
601+
}
599602
return fmt.Errorf("computing diff: %v", err)
600603
}
601604
return nil

0 commit comments

Comments
 (0)