...
1
2
3
4
5 package packagestest
6
7 import (
8 "path"
9 "path/filepath"
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 var GOPATH = gopath{}
43
44 type gopath struct{}
45
46 func (gopath) Name() string {
47 return "GOPATH"
48 }
49
50 func (gopath) Filename(exported *Exported, module, fragment string) string {
51 return filepath.Join(gopathDir(exported, module), "src", module, fragment)
52 }
53
54 func (gopath) Finalize(exported *Exported) error {
55 exported.Config.Env = append(exported.Config.Env, "GO111MODULE=off")
56 gopath := ""
57 for module := range exported.written {
58 if gopath != "" {
59 gopath += string(filepath.ListSeparator)
60 }
61 dir := gopathDir(exported, module)
62 gopath += dir
63 if module == exported.primary {
64 exported.Config.Dir = filepath.Join(dir, "src")
65 }
66 }
67 exported.Config.Env = append(exported.Config.Env, "GOPATH="+gopath)
68 return nil
69 }
70
71 func gopathDir(exported *Exported, module string) string {
72 dir := path.Base(module)
73 if versionSuffixRE.MatchString(dir) {
74 dir = path.Base(path.Dir(module)) + "_" + dir
75 }
76 return filepath.Join(exported.temp, dir)
77 }
78
View as plain text