github.com/golang/dep@v0.5.4/gps/source_manager_test.go (about) 1 // Copyright 2017 The Go Authors. All rights reserved. 2 // Use of this source code is governed by a BSD-style 3 // license that can be found in the LICENSE file. 4 5 package gps 6 7 import ( 8 "log" 9 "reflect" 10 "testing" 11 12 "github.com/golang/dep/internal/test" 13 ) 14 15 func TestSourceManager_InferConstraint(t *testing.T) { 16 if testing.Short() { 17 t.Skip("Skipping slow test in short mode") 18 } 19 20 t.Parallel() 21 22 // Used in git subtests: 23 v081, err := NewSemverConstraintIC("v0.8.1") 24 if err != nil { 25 t.Fatal(err) 26 } 27 v012, err := NewSemverConstraintIC("v0.12.0-12-de4dcafe0") 28 if err != nil { 29 t.Fatal(err) 30 } 31 32 // Used in hg and bzr subtests: 33 v1, err := NewSemverConstraintIC("v1.0.0") 34 if err != nil { 35 t.Fatal(err) 36 } 37 38 var ( 39 gitProj = ProjectIdentifier{ProjectRoot: "github.com/carolynvs/deptest"} 40 bzrProj = ProjectIdentifier{ProjectRoot: "launchpad.net/govcstestbzrrepo"} 41 hgProj = ProjectIdentifier{ProjectRoot: "bitbucket.org/golang-dep/dep-test"} 42 43 testcases = []struct { 44 project ProjectIdentifier 45 name string 46 str string 47 want Constraint 48 }{ 49 {gitProj, "empty", "", Any()}, 50 {gitProj, "semver-short", "v0.8.1", v081}, 51 {gitProj, "long semver constraint", "v0.12.0-12-de4dcafe0", v012}, 52 {gitProj, "branch v2", "v2", NewBranch("v2")}, 53 {gitProj, "branch master", "master", NewBranch("master")}, 54 {gitProj, "long revision", "3f4c3bea144e112a69bbe5d8d01c1b09a544253f", 55 Revision("3f4c3bea144e112a69bbe5d8d01c1b09a544253f")}, 56 {gitProj, "short revision", "3f4c3bea", 57 Revision("3f4c3bea144e112a69bbe5d8d01c1b09a544253f")}, 58 59 {bzrProj, "empty", "", Any()}, 60 {bzrProj, "semver", "v1.0.0", v1}, 61 {bzrProj, "revision", "matt@mattfarina.com-20150731135137-pbphasfppmygpl68", 62 Revision("matt@mattfarina.com-20150731135137-pbphasfppmygpl68")}, 63 64 {hgProj, "empty", "", Any()}, 65 {hgProj, "semver", "v1.0.0", v1}, 66 {hgProj, "default branch", "default", NewBranch("default")}, 67 {hgProj, "revision", "6f55e1f03d91f8a7cce35d1968eb60a2352e4d59", 68 Revision("6f55e1f03d91f8a7cce35d1968eb60a2352e4d59")}, 69 {hgProj, "short revision", "6f55e1f03d91", 70 Revision("6f55e1f03d91f8a7cce35d1968eb60a2352e4d59")}, 71 } 72 ) 73 74 for _, tc := range testcases { 75 var subtestName string 76 switch tc.project { 77 case gitProj: 78 subtestName = "git-" + tc.name 79 case bzrProj: 80 subtestName = "bzr-" + tc.name 81 case hgProj: 82 subtestName = "hg-" + tc.name 83 default: 84 subtestName = tc.name 85 } 86 87 t.Run(subtestName, func(t *testing.T) { 88 t.Parallel() 89 h := test.NewHelper(t) 90 defer h.Cleanup() 91 92 cacheDir := "gps-repocache" 93 h.TempDir(cacheDir) 94 95 sm, err := NewSourceManager(SourceManagerConfig{ 96 Cachedir: h.Path(cacheDir), 97 Logger: log.New(test.Writer{TB: t}, "", 0), 98 }) 99 h.Must(err) 100 101 got, err := sm.InferConstraint(tc.str, tc.project) 102 h.Must(err) 103 104 wantT := reflect.TypeOf(tc.want) 105 gotT := reflect.TypeOf(got) 106 if wantT != gotT { 107 t.Errorf("expected type: %s, got %s, for input %s", wantT, gotT, tc.str) 108 } 109 if got.String() != tc.want.String() { 110 t.Errorf("expected value: %s, got %s for input %s", tc.want, got, tc.str) 111 } 112 }) 113 } 114 }