1
0
mirror of https://github.com/golang/go synced 2024-09-29 14:14:29 -06:00

cmd/go: convert TestImportMain to a script test

Updates #28387
Updates #30316

Change-Id: I6192cc02b9e4fce3015cc47da9ec63fbea79a935
Reviewed-on: https://go-review.googlesource.com/c/go/+/207698
Run-TryBot: Bryan C. Mills <bcmills@google.com>
TryBot-Result: Gobot Gobot <gobot@golang.org>
Reviewed-by: Ian Lance Taylor <iant@golang.org>
This commit is contained in:
Bryan C. Mills 2019-11-18 15:40:42 -05:00
parent a174a3aea9
commit 93d7034b15
2 changed files with 114 additions and 89 deletions

View File

@ -3201,95 +3201,6 @@ func TestGoGetDotSlashDownload(t *testing.T) {
tg.run("get", "./pprof_mac_fix")
}
// Test that you cannot import a main package.
// See golang.org/issue/4210 and golang.org/issue/17475.
func TestImportMain(t *testing.T) {
tooSlow(t)
tg := testgo(t)
tg.parallel()
defer tg.cleanup()
// Importing package main from that package main's test should work.
tg.tempFile("src/x/main.go", `package main
var X int
func main() {}`)
tg.tempFile("src/x/main_test.go", `package main_test
import xmain "x"
import "testing"
var _ = xmain.X
func TestFoo(t *testing.T) {}
`)
tg.setenv("GOPATH", tg.path("."))
tg.creatingTemp("x" + exeSuffix)
tg.run("build", "x")
tg.run("test", "x")
// Importing package main from another package should fail.
tg.tempFile("src/p1/p.go", `package p1
import xmain "x"
var _ = xmain.X
`)
tg.runFail("build", "p1")
tg.grepStderr("import \"x\" is a program, not an importable package", "did not diagnose package main")
// ... even in that package's test.
tg.tempFile("src/p2/p.go", `package p2
`)
tg.tempFile("src/p2/p_test.go", `package p2
import xmain "x"
import "testing"
var _ = xmain.X
func TestFoo(t *testing.T) {}
`)
tg.run("build", "p2")
tg.runFail("test", "p2")
tg.grepStderr("import \"x\" is a program, not an importable package", "did not diagnose package main")
// ... even if that package's test is an xtest.
tg.tempFile("src/p3/p.go", `package p
`)
tg.tempFile("src/p3/p_test.go", `package p_test
import xmain "x"
import "testing"
var _ = xmain.X
func TestFoo(t *testing.T) {}
`)
tg.run("build", "p3")
tg.runFail("test", "p3")
tg.grepStderr("import \"x\" is a program, not an importable package", "did not diagnose package main")
// ... even if that package is a package main
tg.tempFile("src/p4/p.go", `package main
func main() {}
`)
tg.tempFile("src/p4/p_test.go", `package main
import xmain "x"
import "testing"
var _ = xmain.X
func TestFoo(t *testing.T) {}
`)
tg.creatingTemp("p4" + exeSuffix)
tg.run("build", "p4")
tg.runFail("test", "p4")
tg.grepStderr("import \"x\" is a program, not an importable package", "did not diagnose package main")
// ... even if that package is a package main using an xtest.
tg.tempFile("src/p5/p.go", `package main
func main() {}
`)
tg.tempFile("src/p5/p_test.go", `package main_test
import xmain "x"
import "testing"
var _ = xmain.X
func TestFoo(t *testing.T) {}
`)
tg.creatingTemp("p5" + exeSuffix)
tg.run("build", "p5")
tg.runFail("test", "p5")
tg.grepStderr("import \"x\" is a program, not an importable package", "did not diagnose package main")
}
// Test that you cannot use a local import in a package
// accessed by a non-local import (found in a GOPATH/GOROOT).
// See golang.org/issue/17475.

View File

@ -0,0 +1,114 @@
env GO111MODULE=off
# Test that you cannot import a main package.
# See golang.org/issue/4210 and golang.org/issue/17475.
[short] skip
cd $WORK
# Importing package main from that package main's test should work.
go build x
go test -c x
# Importing package main from another package should fail.
! go build p1
stderr 'import "x" is a program, not an importable package'
# ... even in that package's test.
go build p2
! go test -c p2
stderr 'import "x" is a program, not an importable package'
# ... even if that package's test is an xtest.
go build p3
! go test p3
stderr 'import "x" is a program, not an importable package'
# ... even if that package is a package main
go build p4
! go test -c p4
stderr 'import "x" is a program, not an importable package'
# ... even if that package is a package main using an xtest.
go build p5
! go test -c p5
stderr 'import "x" is a program, not an importable package'
-- x/main.go --
package main
var X int
func main() {}
-- x/main_test.go --
package main_test
import (
"testing"
xmain "x"
)
var _ = xmain.X
func TestFoo(t *testing.T) {}
-- p1/p.go --
package p1
import xmain "x"
var _ = xmain.X
-- p2/p.go --
package p2
-- p2/p_test.go --
package p2
import (
"testing"
xmain "x"
)
var _ = xmain.X
func TestFoo(t *testing.T) {}
-- p3/p.go --
package p
-- p3/p_test.go --
package p_test
import (
"testing"
xmain "x"
)
var _ = xmain.X
func TestFoo(t *testing.T) {}
-- p4/p.go --
package main
func main() {}
-- p4/p_test.go --
package main
import (
"testing"
xmain "x"
)
var _ = xmain.X
func TestFoo(t *testing.T) {}
-- p5/p.go --
package main
func main() {}
-- p5/p_test.go --
package main_test
import (
"testing"
xmain "x"
)
var _ = xmain.X
func TestFoo(t *testing.T) {}