Skip to content

Commit

Permalink
cmd/go: better error for install of 'test-only' package
Browse files Browse the repository at this point in the history
Fixes #7915.

LGTM=bradfitz
R=golang-codereviews, bradfitz
CC=golang-codereviews
https://golang.org/cl/96210044
  • Loading branch information
rsc committed May 12, 2014
1 parent ee7bb07 commit f409681
Show file tree
Hide file tree
Showing 3 changed files with 26 additions and 12 deletions.
26 changes: 14 additions & 12 deletions src/cmd/go/build.go
Expand Up @@ -882,6 +882,10 @@ func (b *builder) build(a *action) (err error) {
gofiles = append(gofiles, outGo...)
}

if len(gofiles) == 0 {
return &build.NoGoError{a.p.Dir}
}

// If we're doing coverage, preprocess the .go files and put them in the work directory
if a.p.coverMode != "" {
for i, file := range gofiles {
Expand Down Expand Up @@ -915,21 +919,19 @@ func (b *builder) build(a *action) (err error) {
inc := b.includeArgs("-I", a.deps)

// Compile Go.
if len(gofiles) > 0 {
ofile, out, err := buildToolchain.gc(b, a.p, a.objpkg, obj, inc, gofiles)
if len(out) > 0 {
b.showOutput(a.p.Dir, a.p.ImportPath, b.processOutput(out))
if err != nil {
return errPrintedOutput
}
}
ofile, out, err := buildToolchain.gc(b, a.p, a.objpkg, obj, inc, gofiles)
if len(out) > 0 {
b.showOutput(a.p.Dir, a.p.ImportPath, b.processOutput(out))
if err != nil {
return err
}
if ofile != a.objpkg {
objects = append(objects, ofile)
return errPrintedOutput
}
}
if err != nil {
return err
}
if ofile != a.objpkg {
objects = append(objects, ofile)
}

// Copy .h files named for goos or goarch or goos_goarch
// to names using GOOS and GOARCH.
Expand Down
11 changes: 11 additions & 0 deletions src/cmd/go/test.bash
Expand Up @@ -759,6 +759,17 @@ fi
rm -rf $d
unset GOPATH

TEST 'go build in test-only directory fails with a good error'
if ./testgo build ./testdata/testonly 2>testdata/err.out; then
echo "go build ./testdata/testonly succeeded, should have failed"
ok=false
elif ! grep 'no buildable Go' testdata/err.out >/dev/null; then
echo "go build ./testdata/testonly produced unexpected error:"
cat testdata/err.out
ok=false
fi
rm -f testdata/err.out

# clean up
if $started; then stop; fi
rm -rf testdata/bin testdata/bin1
Expand Down
1 change: 1 addition & 0 deletions src/cmd/go/testdata/testonly/p_test.go
@@ -0,0 +1 @@
package p

0 comments on commit f409681

Please sign in to comment.