}
}
+func TestGoGenerateXTestPkgName(t *testing.T) {
+ if runtime.GOOS == "windows" {
+ t.Skip("skipping because windows has no echo command")
+ }
+
+ tg := testgo(t)
+ defer tg.cleanup()
+ tg.parallel()
+ tg.tempFile("env_test.go", "package main_test\n\n//go:generate echo $GOPACKAGE")
+ tg.run("generate", tg.path("env_test.go"))
+ want := "main_test"
+ if got := strings.TrimSpace(tg.getStdout()); got != want {
+ t.Errorf("go generate in XTest file got package name %q; want %q", got, want)
+ }
+}
+
func TestGoGenerateBadImports(t *testing.T) {
if runtime.GOOS == "windows" {
t.Skip("skipping because windows has no echo command")
}
// Even if the arguments are .go files, this loop suffices.
for _, pkg := range load.Packages(args) {
+ pkgName := pkg.Name
+
for _, file := range pkg.InternalGoFiles() {
- if !generate(pkg.Name, file) {
+ if !generate(pkgName, file) {
+ break
+ }
+ }
+
+ pkgName += "_test"
+
+ for _, file := range pkg.InternalXGoFiles() {
+ if !generate(pkgName, file) {
break
}
}
// InternalGoFiles returns the list of Go files being built for the package,
// using absolute paths.
func (p *Package) InternalGoFiles() []string {
- return p.mkAbs(str.StringList(p.GoFiles, p.CgoFiles, p.TestGoFiles, p.XTestGoFiles))
+ return p.mkAbs(str.StringList(p.GoFiles, p.CgoFiles, p.TestGoFiles))
+}
+
+// InternalXGoFiles returns the list of Go files being built for the XTest package,
+// using absolute paths.
+func (p *Package) InternalXGoFiles() []string {
+ return p.mkAbs(p.XTestGoFiles)
}
// InternalGoFiles returns the list of all Go files possibly relevant for the package,