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