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  }