tg.grepStderr(`[\\/]link|gccgo`, "did not run linker")
}
+func TestIssue22588(t *testing.T) {
+ // Don't get confused by stderr coming from tools.
+ tg := testgo(t)
+ defer tg.cleanup()
+ tg.parallel()
+
+ if _, err := os.Stat("/usr/bin/time"); err != nil {
+ t.Skip(err)
+ }
+
+ tg.run("list", "-f={{.Stale}}", "runtime")
+ tg.run("list", "-toolexec=/usr/bin/time", "-f={{.Stale}}", "runtime")
+ tg.grepStdout("false", "incorrectly reported runtime as stale")
+}
+
func TestIssue22531(t *testing.T) {
if strings.Contains(os.Getenv("GODEBUG"), "gocacheverify") {
t.Skip("GODEBUG gocacheverify")
package work
import (
+ "bytes"
"fmt"
"os"
"os/exec"
cmdline := str.StringList(cfg.BuildToolexec, base.Tool(name), "-V=full")
cmd := exec.Command(cmdline[0], cmdline[1:]...)
cmd.Env = base.EnvForDir(cmd.Dir, os.Environ())
- out, err := cmd.CombinedOutput()
- if err != nil {
- base.Fatalf("go tool %s: %v\n%s", name, err, out)
+ var stdout, stderr bytes.Buffer
+ cmd.Stdout = &stdout
+ cmd.Stderr = &stderr
+ if err := cmd.Run(); err != nil {
+ base.Fatalf("go tool %s: %v\n%s%s", name, err, stdout.Bytes(), stderr.Bytes())
}
- line := string(out)
+ line := stdout.String()
f := strings.Fields(line)
if len(f) < 3 || f[0] != name || f[1] != "version" || f[2] == "devel" && !strings.HasPrefix(f[len(f)-1], "buildID=") {
base.Fatalf("go tool %s -V=full: unexpected output:\n\t%s", name, line)