github.com/gagliardetto/golang-go@v0.0.0-20201020153340-53909ea70814/cmd/go/not-internal/load/pkg_test.go (about) 1 package load 2 3 import ( 4 "github.com/gagliardetto/golang-go/cmd/go/not-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"}, // Semantic import versioning, use second last element in module mode. 21 {"example.com/mycmd/v3", []string{}, "mycmd", "v3"}, // Semantic import versioning, use second last element in module mode. 22 {"mycmd", []string{}, "mycmd", "mycmd"}, 23 {"mycmd/v0", []string{}, "v0", "v0"}, 24 {"mycmd/v1", []string{}, "v1", "v1"}, 25 {"mycmd/v2", []string{}, "mycmd", "v2"}, // Semantic import versioning, use second last element in module mode. 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 }