]> Cypherpunks repositories - gostls13.git/commitdiff
cmd/go: note when some Go files were ignored on no-Go-files errors
authorJaana Burcu Dogan <jbd@google.com>
Tue, 13 Sep 2016 20:21:23 +0000 (13:21 -0700)
committerBrad Fitzpatrick <bradfitz@golang.org>
Thu, 6 Oct 2016 00:28:04 +0000 (00:28 +0000)
It is pretty confusing when there are Go files ignored for mismatching
build tags and similar and we output "no buildable Go files" without
giving any other information about some Go files have been ignored.

Fixes #17008.

Change-Id: I1766ee86a9a7a72f6694deae3f73b47bfc9d0be5
Reviewed-on: https://go-review.googlesource.com/29113
Run-TryBot: Jaana Burcu Dogan <jbd@google.com>
TryBot-Result: Gobot Gobot <gobot@golang.org>
Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>
src/go/build/build.go
src/go/build/build_test.go
src/go/build/testdata/ignored/ignored.go [new file with mode: 0644]

index 5a14d1ac33cec60ba8ac7c99df99324ab485311b..5d87d9fb9e02b952c08b960bddce9a7570be2158 100644 (file)
@@ -410,11 +410,16 @@ func (ctxt *Context) ImportDir(dir string, mode ImportMode) (*Package, error) {
 // containing no buildable Go source files. (It may still contain
 // test files, files hidden by build tags, and so on.)
 type NoGoError struct {
-       Dir string
+       Dir     string
+       Ignored bool // whether any Go files were ignored due to build tags
 }
 
 func (e *NoGoError) Error() string {
-       return "no buildable Go source files in " + e.Dir
+       msg := "no buildable Go source files in " + e.Dir
+       if e.Ignored {
+               msg += " (.go files ignored due to build tags)"
+       }
+       return msg
 }
 
 // MultiplePackageError describes a directory containing
@@ -846,7 +851,7 @@ Found:
                return p, badGoError
        }
        if len(p.GoFiles)+len(p.CgoFiles)+len(p.TestGoFiles)+len(p.XTestGoFiles) == 0 {
-               return p, &NoGoError{p.Dir}
+               return p, &NoGoError{Dir: p.Dir, Ignored: len(p.IgnoredGoFiles) > 0}
        }
 
        for tag := range allTags {
index 198a649b15041771c67a4b6ca945f18f91e8e227..0a20af01bd7fed33d649461bacf89fe43bcf5b1d 100644 (file)
@@ -93,6 +93,17 @@ func TestEmptyFolderImport(t *testing.T) {
        }
 }
 
+func TestIgnoredGoFilesImport(t *testing.T) {
+       _, err := Import(".", "testdata/ignored", 0)
+       e, ok := err.(*NoGoError)
+       if !ok {
+               t.Fatal(`Import("testdata/ignored") did not return NoGoError.`)
+       }
+       if !e.Ignored {
+               t.Fatal(`Import("testdata/ignored") should have ignored Go files.`)
+       }
+}
+
 func TestMultiplePackageImport(t *testing.T) {
        _, err := Import(".", "testdata/multi", 0)
        mpe, ok := err.(*MultiplePackageError)
diff --git a/src/go/build/testdata/ignored/ignored.go b/src/go/build/testdata/ignored/ignored.go
new file mode 100644 (file)
index 0000000..48a2ae8
--- /dev/null
@@ -0,0 +1,3 @@
+// +build alwaysignore
+
+package ignored