summaryrefslogtreecommitdiff
path: root/libgo/go/cmd/go/testdata/script/mod_replace_import.txt
blob: 0da753a1a763cb4375b19208b0517be4369086c6 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
env GO111MODULE=on

# 'go list -mod=readonly' should not add requirements even if they can be
# resolved locally.
cp go.mod go.mod.orig
! go list -mod=readonly all
cmp go.mod go.mod.orig

# 'go list' should resolve imports using replacements.
go list all
stdout 'example.com/a/b$'
stdout 'example.com/x/v3$'
stdout 'example.com/y/z/w$'
stdout 'example.com/v'

# The selected modules should prefer longer paths,
# but should try shorter paths if needed.
# Modules with a major-version suffix should have a corresponding pseudo-version.
# Replacements that specify a version should use the latest such version.
go list -m all
stdout 'example.com/a/b v0.0.0-00010101000000-000000000000 => ./b'
stdout 'example.com/y v0.0.0-00010101000000-000000000000 => ./y'
stdout 'example.com/x/v3 v3.0.0-00010101000000-000000000000 => ./v3'
stdout 'example.com/v v1.12.0 => ./v12'

-- go.mod --
module example.com/m

replace (
	example.com/a => ./a
	example.com/a/b => ./b
)

replace (
	example.com/x => ./x
	example.com/x/v3 => ./v3
)

replace (
	example.com/y/z/w => ./w
	example.com/y => ./y
)

replace (
	example.com/v v1.11.0 => ./v11
	example.com/v v1.12.0 => ./v12
	example.com/v => ./v
)

-- m.go --
package main
import (
	_ "example.com/a/b"
	_ "example.com/x/v3"
	_ "example.com/y/z/w"
	_ "example.com/v"
)
func main() {}

-- a/go.mod --
module a.localhost
-- a/a.go --
package a
-- a/b/b.go--
package b

-- b/go.mod --
module a.localhost/b
-- b/b.go --
package b

-- x/go.mod --
module x.localhost
-- x/x.go --
package x
-- x/v3.go --
package v3
import _ "x.localhost/v3"

-- v3/go.mod --
module x.localhost/v3
-- v3/x.go --
package x

-- w/go.mod --
module w.localhost
-- w/skip/skip.go --
// Package skip is nested below nonexistent package w.
package skip

-- y/go.mod --
module y.localhost
-- y/z/w/w.go --
package w

-- v12/go.mod --
module v.localhost
-- v12/v.go --
package v

-- v11/go.mod --
module v.localhost
-- v11/v.go --
package v

-- v/go.mod --
module v.localhost
-- v/v.go --
package v