1 package load
2
3 import (
4 "cmd/go/internal/cfg"
5 "testing"
6 )
7
8 func TestPkgDefaultExecName(t *testing.T) {
9 oldModulesEnabled := cfg.ModulesEnabled
10 defer func() { cfg.ModulesEnabled = oldModulesEnabled }()
11 for _, tt := range []struct {
12 in string
13 files []string
14 wantMod string
15 wantGopath string
16 }{
17 {"example.com/mycmd", []string{}, "mycmd", "mycmd"},
18 {"example.com/mycmd/v0", []string{}, "v0", "v0"},
19 {"example.com/mycmd/v1", []string{}, "v1", "v1"},
20 {"example.com/mycmd/v2", []string{}, "mycmd", "v2"},
21 {"example.com/mycmd/v3", []string{}, "mycmd", "v3"},
22 {"mycmd", []string{}, "mycmd", "mycmd"},
23 {"mycmd/v0", []string{}, "v0", "v0"},
24 {"mycmd/v1", []string{}, "v1", "v1"},
25 {"mycmd/v2", []string{}, "mycmd", "v2"},
26 {"v0", []string{}, "v0", "v0"},
27 {"v1", []string{}, "v1", "v1"},
28 {"v2", []string{}, "v2", "v2"},
29 {"command-line-arguments", []string{"output.go", "foo.go"}, "output", "output"},
30 } {
31 {
32 cfg.ModulesEnabled = true
33 pkg := new(Package)
34 pkg.ImportPath = tt.in
35 pkg.GoFiles = tt.files
36 pkg.Internal.CmdlineFiles = len(tt.files) > 0
37 gotMod := pkg.DefaultExecName()
38 if gotMod != tt.wantMod {
39 t.Errorf("pkg.DefaultExecName with ImportPath = %q in module mode = %v; want %v", tt.in, gotMod, tt.wantMod)
40 }
41 }
42 {
43 cfg.ModulesEnabled = false
44 pkg := new(Package)
45 pkg.ImportPath = tt.in
46 pkg.GoFiles = tt.files
47 pkg.Internal.CmdlineFiles = len(tt.files) > 0
48 gotGopath := pkg.DefaultExecName()
49 if gotGopath != tt.wantGopath {
50 t.Errorf("pkg.DefaultExecName with ImportPath = %q in gopath mode = %v; want %v", tt.in, gotGopath, tt.wantGopath)
51 }
52 }
53 }
54 }
55
56 func TestIsVersionElement(t *testing.T) {
57 t.Parallel()
58 for _, tt := range []struct {
59 in string
60 want bool
61 }{
62 {"v0", false},
63 {"v05", false},
64 {"v1", false},
65 {"v2", true},
66 {"v3", true},
67 {"v9", true},
68 {"v10", true},
69 {"v11", true},
70 {"v", false},
71 {"vx", false},
72 } {
73 got := isVersionElement(tt.in)
74 if got != tt.want {
75 t.Errorf("isVersionElement(%q) = %v; want %v", tt.in, got, tt.want)
76 }
77 }
78 }
79
View as plain text