Maybe the go generate is generating the imports,
or maybe there's some other good reason the code
is incomplete.
The help text already says:
Note that go generate does not parse the file, so lines that look
like directives in comments or multiline strings will be treated
as directives.
We'll still reject Go source files that don't begin with a package statement
or have a syntax error in the import block, but those are I think more
defensible rejections.
Fixes #16307.
Change-Id: I4f8496c02fdff993f038adfed2df4db7f067dc06
Reviewed-on: https://go-review.googlesource.com/31659
Run-TryBot: Russ Cox <rsc@golang.org>
TryBot-Result: Gobot Gobot <gobot@golang.org>
Reviewed-by: Rob Pike <r@golang.org>
}
func runGenerate(cmd *Command, args []string) {
+ ignoreImports = true
+
if generateRunFlag != "" {
var err error
generateRunRE, err = regexp.Compile(generateRunFlag)
}
}
+func TestGoGenerateBadImports(t *testing.T) {
+ if runtime.GOOS == "windows" {
+ t.Skip("skipping because windows has no echo command")
+ }
+
+ // This package has an invalid import causing an import cycle,
+ // but go generate is supposed to still run.
+ tg := testgo(t)
+ defer tg.cleanup()
+ tg.setenv("GOPATH", filepath.Join(tg.pwd(), "testdata"))
+ tg.run("generate", "gencycle")
+ tg.grepStdout("hello world", "go generate gencycle did not run generator")
+}
+
func TestGoGetCustomDomainWildcard(t *testing.T) {
testenv.MustHaveExternalNetwork(t)
"unicode"
)
+var ignoreImports bool // control whether we ignore imports in packages
+
// A Package describes a single package found in a directory.
type Package struct {
// Note: These fields are part of the go command's public API.
p.TestImports = pp.TestImports
p.XTestGoFiles = pp.XTestGoFiles
p.XTestImports = pp.XTestImports
+ if ignoreImports {
+ p.Imports = nil
+ p.TestImports = nil
+ p.XTestImports = nil
+ }
}
// isStandardImportPath reports whether $GOROOT/src/path should be considered
--- /dev/null
+//go:generate echo hello world
+
+package gencycle
+
+import _ "gencycle"