aboutsummaryrefslogtreecommitdiff
path: root/internal/imports/mod_test.go
diff options
context:
space:
mode:
Diffstat (limited to 'internal/imports/mod_test.go')
-rw-r--r--internal/imports/mod_test.go65
1 files changed, 33 insertions, 32 deletions
diff --git a/internal/imports/mod_test.go b/internal/imports/mod_test.go
index 5f71805fa..cb7fd4499 100644
--- a/internal/imports/mod_test.go
+++ b/internal/imports/mod_test.go
@@ -29,7 +29,7 @@ import (
// Tests that we can find packages in the stdlib.
func TestScanStdlib(t *testing.T) {
- mt := setup(t, `
+ mt := setup(t, nil, `
-- go.mod --
module x
`, "")
@@ -42,7 +42,7 @@ module x
// where the module is in scope -- here we have to figure out the import path
// without any help from go list.
func TestScanOutOfScopeNestedModule(t *testing.T) {
- mt := setup(t, `
+ mt := setup(t, nil, `
-- go.mod --
module x
@@ -68,7 +68,7 @@ package x`, "")
// Tests that we don't find a nested module contained in a local replace target.
// The code for this case is too annoying to write, so it's just ignored.
func TestScanNestedModuleInLocalReplace(t *testing.T) {
- mt := setup(t, `
+ mt := setup(t, nil, `
-- go.mod --
module x
@@ -107,7 +107,7 @@ package z
// Tests that path encoding is handled correctly. Adapted from mod_case.txt.
func TestModCase(t *testing.T) {
- mt := setup(t, `
+ mt := setup(t, nil, `
-- go.mod --
module x
@@ -124,7 +124,7 @@ import _ "rsc.io/QUOTE/QUOTE"
// Not obviously relevant to goimports. Adapted from mod_domain_root.txt anyway.
func TestModDomainRoot(t *testing.T) {
- mt := setup(t, `
+ mt := setup(t, nil, `
-- go.mod --
module x
@@ -140,7 +140,7 @@ import _ "example.com"
// Tests that scanning the module cache > 1 time is able to find the same module.
func TestModMultipleScans(t *testing.T) {
- mt := setup(t, `
+ mt := setup(t, nil, `
-- go.mod --
module x
@@ -159,7 +159,7 @@ import _ "example.com"
// Tests that scanning the module cache > 1 time is able to find the same module
// in the module cache.
func TestModMultipleScansWithSubdirs(t *testing.T) {
- mt := setup(t, `
+ mt := setup(t, nil, `
-- go.mod --
module x
@@ -178,7 +178,7 @@ import _ "rsc.io/quote"
// Tests that scanning the module cache > 1 after changing a package in module cache to make it unimportable
// is able to find the same module.
func TestModCacheEditModFile(t *testing.T) {
- mt := setup(t, `
+ mt := setup(t, nil, `
-- go.mod --
module x
@@ -219,7 +219,7 @@ import _ "rsc.io/quote"
// Tests that -mod=vendor works. Adapted from mod_vendor_build.txt.
func TestModVendorBuild(t *testing.T) {
- mt := setup(t, `
+ mt := setup(t, nil, `
-- go.mod --
module m
go 1.12
@@ -250,7 +250,7 @@ import _ "rsc.io/sampler"
// Tests that -mod=vendor is auto-enabled only for go1.14 and higher.
// Vaguely inspired by mod_vendor_auto.txt.
func TestModVendorAuto(t *testing.T) {
- mt := setup(t, `
+ mt := setup(t, nil, `
-- go.mod --
module m
go 1.14
@@ -276,7 +276,7 @@ import _ "rsc.io/sampler"
// Tests that a module replace works. Adapted from mod_list.txt. We start with
// go.mod2; the first part of the test is irrelevant.
func TestModList(t *testing.T) {
- mt := setup(t, `
+ mt := setup(t, nil, `
-- go.mod --
module x
require rsc.io/quote v1.5.1
@@ -293,7 +293,7 @@ import _ "rsc.io/quote"
// Tests that a local replace works. Adapted from mod_local_replace.txt.
func TestModLocalReplace(t *testing.T) {
- mt := setup(t, `
+ mt := setup(t, nil, `
-- x/y/go.mod --
module x/y
require zz v1.0.0
@@ -317,7 +317,7 @@ package z
// Tests that the package at the root of the main module can be found.
// Adapted from the first part of mod_multirepo.txt.
func TestModMultirepo1(t *testing.T) {
- mt := setup(t, `
+ mt := setup(t, nil, `
-- go.mod --
module rsc.io/quote
@@ -333,7 +333,7 @@ package quote
// of mod_multirepo.txt (We skip the case where it doesn't have a go.mod
// entry -- we just don't work in that case.)
func TestModMultirepo3(t *testing.T) {
- mt := setup(t, `
+ mt := setup(t, nil, `
-- go.mod --
module rsc.io/quote
@@ -352,7 +352,7 @@ import _ "rsc.io/quote/v2"
// Tests that a nested module is found in the module cache, even though
// it's checked out. Adapted from the fourth part of mod_multirepo.txt.
func TestModMultirepo4(t *testing.T) {
- mt := setup(t, `
+ mt := setup(t, nil, `
-- go.mod --
module rsc.io/quote
require rsc.io/quote/v2 v2.0.1
@@ -376,7 +376,7 @@ import _ "rsc.io/quote/v2"
// Tests a simple module dependency. Adapted from the first part of mod_replace.txt.
func TestModReplace1(t *testing.T) {
- mt := setup(t, `
+ mt := setup(t, nil, `
-- go.mod --
module quoter
@@ -392,7 +392,7 @@ package main
// Tests a local replace. Adapted from the second part of mod_replace.txt.
func TestModReplace2(t *testing.T) {
- mt := setup(t, `
+ mt := setup(t, nil, `
-- go.mod --
module quoter
@@ -418,7 +418,7 @@ import "rsc.io/sampler"
// Tests that a module can be replaced by a different module path. Adapted
// from the third part of mod_replace.txt.
func TestModReplace3(t *testing.T) {
- mt := setup(t, `
+ mt := setup(t, nil, `
-- go.mod --
module quoter
@@ -451,7 +451,7 @@ package quote
// mod_replace_import.txt, with example.com/v changed to /vv because Go 1.11
// thinks /v is an invalid major version.
func TestModReplaceImport(t *testing.T) {
- mt := setup(t, `
+ mt := setup(t, nil, `
-- go.mod --
module example.com/m
@@ -556,7 +556,7 @@ package v
func TestModWorkspace(t *testing.T) {
testenv.NeedsGo1Point(t, 18)
- mt := setup(t, `
+ mt := setup(t, nil, `
-- go.work --
go 1.18
@@ -592,7 +592,7 @@ package b
func TestModWorkspaceReplace(t *testing.T) {
testenv.NeedsGo1Point(t, 18)
- mt := setup(t, `
+ mt := setup(t, nil, `
-- go.work --
use m
@@ -651,7 +651,7 @@ func G() {
func TestModWorkspaceReplaceOverride(t *testing.T) {
testenv.NeedsGo1Point(t, 18)
- mt := setup(t, `-- go.work --
+ mt := setup(t, nil, `-- go.work --
use m
use n
replace example.com/dep => ./dep3
@@ -716,7 +716,7 @@ func G() {
func TestModWorkspacePrune(t *testing.T) {
testenv.NeedsGo1Point(t, 18)
- mt := setup(t, `
+ mt := setup(t, nil, `
-- go.work --
go 1.18
@@ -884,8 +884,7 @@ package z
// Tests that we handle GO111MODULE=on with no go.mod file. See #30855.
func TestNoMainModule(t *testing.T) {
- testenv.NeedsGo1Point(t, 12)
- mt := setup(t, `
+ mt := setup(t, map[string]string{"GO111MODULE": "on"}, `
-- x.go --
package x
`, "")
@@ -993,9 +992,10 @@ type modTest struct {
// setup builds a test environment from a txtar and supporting modules
// in testdata/mod, along the lines of TestScript in cmd/go.
-func setup(t *testing.T, main, wd string) *modTest {
+//
+// extraEnv is applied on top of the default test env.
+func setup(t *testing.T, extraEnv map[string]string, main, wd string) *modTest {
t.Helper()
- testenv.NeedsGo1Point(t, 11)
testenv.NeedsTool(t, "go")
proxyOnce.Do(func() {
@@ -1023,13 +1023,16 @@ func setup(t *testing.T, main, wd string) *modTest {
Env: map[string]string{
"GOPATH": filepath.Join(dir, "gopath"),
"GOMODCACHE": "",
- "GO111MODULE": "on",
+ "GO111MODULE": "auto",
"GOSUMDB": "off",
"GOPROXY": proxydir.ToURL(proxyDir),
},
WorkingDir: filepath.Join(mainDir, wd),
GocmdRunner: &gocommand.Runner{},
}
+ for k, v := range extraEnv {
+ env.Env[k] = v
+ }
if *testDebug {
env.Logf = log.Printf
}
@@ -1168,7 +1171,7 @@ func removeDir(dir string) {
// Tests that findModFile can find the mod files from a path in the module cache.
func TestFindModFileModCache(t *testing.T) {
- mt := setup(t, `
+ mt := setup(t, nil, `
-- go.mod --
module x
@@ -1189,7 +1192,6 @@ import _ "rsc.io/quote"
// Tests that crud in the module cache is ignored.
func TestInvalidModCache(t *testing.T) {
- testenv.NeedsGo1Point(t, 11)
dir, err := ioutil.TempDir("", t.Name())
if err != nil {
t.Fatal(err)
@@ -1220,7 +1222,7 @@ func TestInvalidModCache(t *testing.T) {
}
func TestGetCandidatesRanking(t *testing.T) {
- mt := setup(t, `
+ mt := setup(t, nil, `
-- go.mod --
module example.com
@@ -1286,7 +1288,6 @@ import (
}
func BenchmarkScanModCache(b *testing.B) {
- testenv.NeedsGo1Point(b, 11)
env := &ProcessEnv{
GocmdRunner: &gocommand.Runner{},
Logf: log.Printf,