]> Cypherpunks repositories - gostls13.git/commitdiff
cmd/go: send output of build and install to stderr
authorJeff R. Allen <jra@nella.org>
Mon, 11 Mar 2013 00:31:14 +0000 (11:31 +1100)
committerAndrew Gerrand <adg@golang.org>
Mon, 11 Mar 2013 00:31:14 +0000 (11:31 +1100)
"go build" and "go install" were mixing stdout and stderr
from the toolchain, then putting it all on stdout. With this
change, it stays mixed, and is sent to stderr. Because
the toolchain does not create output in a clean compile/install,
sending all output to stderr makese more sense.

Also fix test.bash because of "mktemp: too few X's
in template `testgo'" on Linux.

Fixes #4917.

R=golang-dev, rsc, adg
CC=golang-dev
https://golang.org/cl/7393073

src/cmd/go/build.go
src/cmd/go/test.bash
src/cmd/go/testdata/errmsg/x.go [deleted file]
src/cmd/go/testdata/errmsg/x1_test.go [deleted file]
src/cmd/go/testdata/errmsg/x_test.go [deleted file]

index 38fc43ef18dce384d18866400da9064db0500d3b..83aeedaca9dd91119a483c2f177beb79b4d3e60c 100644 (file)
@@ -391,7 +391,9 @@ var (
 
 func (b *builder) init() {
        var err error
-       b.print = fmt.Print
+       b.print = func(a ...interface{}) (int, error) {
+               return fmt.Fprint(os.Stderr, a...)
+       }
        b.actionCache = make(map[cacheKey]*action)
        b.mkdirCache = make(map[string]bool)
 
@@ -1632,7 +1634,7 @@ func (b *builder) libgcc(p *Package) (string, error) {
                // print function to capture the command-line. This
                // let's us assign it to $LIBGCC and produce a valid
                // buildscript for cgo packages.
-               b.print = func(a ...interface{}) (n int, err error) {
+               b.print = func(a ...interface{}) (int, error) {
                        return fmt.Fprint(&buf, a...)
                }
        }
index 460061a11a3c140c1a00ea84950dfde9482e40a0..e2264a46e7000b8774cb5265de835512be2d797a 100755 (executable)
@@ -11,18 +11,19 @@ ok=true
 unset GOPATH
 unset GOBIN
 
-# Test that error messages have file:line information
-# at beginning of line.
-for i in testdata/errmsg/*.go
-do
-       # TODO: |cat should not be necessary here but is.
-       ./testgo test $i 2>&1 | cat >err.out || true
-       if ! grep -q "^$i:" err.out; then
-               echo "$i: missing file:line in error message"
-               cat err.out
-               ok=false
-       fi
-done
+# Test that error messages have file:line information at beginning of
+# the line. Also test issue 4917: that the error is on stderr.
+d=$(mktemp -d -t testgoXXX)
+fn=$d/err.go
+echo "package main" > $fn
+echo 'import "bar"' >> $fn
+./testgo run $fn 2>$d/err.out || true
+if ! grep -q "^$fn:" $d/err.out; then
+       echo "missing file:line in error message"
+       cat $d/err.out
+       ok=false
+fi
+rm -r $d
 
 # Test local (./) imports.
 testlocal() {
@@ -51,7 +52,7 @@ testlocal() {
                ok=false
        fi
        
-       rm -f err.out hello.out hello
+       rm -f hello.out hello
        
        # Test that go install x.go fails.
        if ./testgo install "testdata/$local/easy.go" >/dev/null 2>&1; then
@@ -183,7 +184,7 @@ fi
 
 # issue 4186. go get cannot be used to download packages to $GOROOT
 # Test that without GOPATH set, go get should fail
-d=$(mktemp -d -t testgo)
+d=$(mktemp -d -t testgoXXX)
 mkdir -p $d/src/pkg
 if GOPATH= GOROOT=$d ./testgo get -d code.google.com/p/go.codereview/cmd/hgpatch ; then 
        echo 'go get code.google.com/p/go.codereview/cmd/hgpatch should not succeed with $GOPATH unset'
@@ -191,7 +192,7 @@ if GOPATH= GOROOT=$d ./testgo get -d code.google.com/p/go.codereview/cmd/hgpatch
 fi     
 rm -rf $d
 # Test that with GOPATH=$GOROOT, go get should fail
-d=$(mktemp -d -t testgo)
+d=$(mktemp -d -t testgoXXX)
 mkdir -p $d/src/pkg
 if GOPATH=$d GOROOT=$d ./testgo get -d code.google.com/p/go.codereview/cmd/hgpatch ; then
         echo 'go get code.google.com/p/go.codereview/cmd/hgpatch should not succeed with GOPATH=$GOROOT'
@@ -200,7 +201,7 @@ fi
 rm -rf $d
 
 # issue 3941: args with spaces
-d=$(mktemp -d -t testgo)
+d=$(mktemp -d -t testgoXXX)
 cat >$d/main.go<<EOF
 package main
 var extern string
@@ -226,7 +227,7 @@ rm -f strings.prof strings.test
 
 # issue 4568. test that symlinks don't screw things up too badly.
 old=$(pwd)
-d=$(mktemp -d -t testgo)
+d=$(mktemp -d -t testgoXXX)
 mkdir -p $d/src
 (
        ln -s $d $d/src/dir1
@@ -247,7 +248,7 @@ fi
 rm -rf $d
 
 # issue 4515.
-d=$(mktemp -d -t testgo)
+d=$(mktemp -d -t testgoXXX)
 mkdir -p $d/src/example/a $d/src/example/b $d/bin
 cat >$d/src/example/a/main.go <<EOF
 package main
@@ -280,7 +281,7 @@ unset GOPATH
 rm -rf $d
 
 # issue 4773. case-insensitive collisions
-d=$(mktemp -d -t testgo)
+d=$(mktemp -d -t testgoXXX)
 export GOPATH=$d
 mkdir -p $d/src/example/a $d/src/example/b
 cat >$d/src/example/a/a.go <<EOF
diff --git a/src/cmd/go/testdata/errmsg/x.go b/src/cmd/go/testdata/errmsg/x.go
deleted file mode 100644 (file)
index 60f5b6e..0000000
+++ /dev/null
@@ -1,3 +0,0 @@
-package foo
-
-import "bar"
diff --git a/src/cmd/go/testdata/errmsg/x1_test.go b/src/cmd/go/testdata/errmsg/x1_test.go
deleted file mode 100644 (file)
index eb1a679..0000000
+++ /dev/null
@@ -1,3 +0,0 @@
-package foo_test
-
-import "bar"
diff --git a/src/cmd/go/testdata/errmsg/x_test.go b/src/cmd/go/testdata/errmsg/x_test.go
deleted file mode 100644 (file)
index 60f5b6e..0000000
+++ /dev/null
@@ -1,3 +0,0 @@
-package foo
-
-import "bar"