This repository has been archived by the owner on Sep 9, 2020. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 1k
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Merge pull request #1027 from spenczar/infer_git_abbreviated_shas
internal/gps: Parse abbreviated git revisions
- Loading branch information
Showing
4 changed files
with
130 additions
and
82 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -13,71 +13,94 @@ import ( | |
|
||
func TestSourceManager_InferConstraint(t *testing.T) { | ||
t.Parallel() | ||
h := test.NewHelper(t) | ||
cacheDir := "gps-repocache" | ||
h.TempDir(cacheDir) | ||
sm, err := NewSourceManager(h.Path(cacheDir)) | ||
h.Must(err) | ||
|
||
sv, err := NewSemverConstraintIC("v0.8.1") | ||
// Used in git subtests: | ||
v081, err := NewSemverConstraintIC("v0.8.1") | ||
if err != nil { | ||
t.Fatal(err) | ||
} | ||
|
||
svs, err := NewSemverConstraintIC("v0.12.0-12-de4dcafe0") | ||
v012, err := NewSemverConstraintIC("v0.12.0-12-de4dcafe0") | ||
if err != nil { | ||
t.Fatal(err) | ||
} | ||
|
||
constraints := map[string]Constraint{ | ||
"": Any(), | ||
"v0.8.1": sv, | ||
"v2": NewBranch("v2"), | ||
"v0.12.0-12-de4dcafe0": svs, | ||
"master": NewBranch("master"), | ||
"5b3352dc16517996fb951394bcbbe913a2a616e3": Revision("5b3352dc16517996fb951394bcbbe913a2a616e3"), | ||
|
||
// valid bzr rev | ||
"[email protected]": Revision("[email protected]"), | ||
// invalid bzr rev | ||
"[email protected]": NewVersion("[email protected]"), | ||
// Used in hg and bzr subtests: | ||
v1, err := NewSemverConstraintIC("v1.0.0") | ||
if err != nil { | ||
t.Fatal(err) | ||
} | ||
|
||
pi := ProjectIdentifier{ProjectRoot: "github.com/carolynvs/deptest"} | ||
for str, want := range constraints { | ||
got, err := sm.InferConstraint(str, pi) | ||
h.Must(err) | ||
var ( | ||
gitProj = ProjectIdentifier{ProjectRoot: "github.com/carolynvs/deptest"} | ||
bzrProj = ProjectIdentifier{ProjectRoot: "launchpad.net/govcstestbzrrepo"} | ||
hgProj = ProjectIdentifier{ProjectRoot: "bitbucket.org/golang-dep/dep-test"} | ||
|
||
wantT := reflect.TypeOf(want) | ||
gotT := reflect.TypeOf(got) | ||
if wantT != gotT { | ||
t.Errorf("expected type: %s, got %s, for input %s", wantT, gotT, str) | ||
testcases = []struct { | ||
project ProjectIdentifier | ||
name string | ||
str string | ||
want Constraint | ||
}{ | ||
{gitProj, "empty", "", Any()}, | ||
{gitProj, "semver-short", "v0.8.1", v081}, | ||
{gitProj, "long semver constraint", "v0.12.0-12-de4dcafe0", v012}, | ||
{gitProj, "branch v2", "v2", NewBranch("v2")}, | ||
{gitProj, "branch master", "master", NewBranch("master")}, | ||
{gitProj, "long revision", "3f4c3bea144e112a69bbe5d8d01c1b09a544253f", | ||
Revision("3f4c3bea144e112a69bbe5d8d01c1b09a544253f")}, | ||
{gitProj, "short revision", "3f4c3bea", | ||
Revision("3f4c3bea144e112a69bbe5d8d01c1b09a544253f")}, | ||
|
||
{bzrProj, "empty", "", Any()}, | ||
{bzrProj, "semver", "v1.0.0", v1}, | ||
{bzrProj, "revision", "[email protected]", | ||
Revision("[email protected]")}, | ||
|
||
{hgProj, "empty", "", Any()}, | ||
{hgProj, "semver", "v1.0.0", v1}, | ||
{hgProj, "default branch", "default", NewBranch("default")}, | ||
{hgProj, "revision", "6f55e1f03d91f8a7cce35d1968eb60a2352e4d59", | ||
Revision("6f55e1f03d91f8a7cce35d1968eb60a2352e4d59")}, | ||
{hgProj, "short revision", "6f55e1f03d91", | ||
Revision("6f55e1f03d91f8a7cce35d1968eb60a2352e4d59")}, | ||
} | ||
if got.String() != want.String() { | ||
t.Errorf("expected value: %s, got %s for input %s", want, got, str) | ||
) | ||
|
||
for _, tc := range testcases { | ||
var subtestName string | ||
switch tc.project { | ||
case gitProj: | ||
subtestName = "git-" + tc.name | ||
case bzrProj: | ||
subtestName = "bzr-" + tc.name | ||
case hgProj: | ||
subtestName = "hg-" + tc.name | ||
default: | ||
subtestName = tc.name | ||
} | ||
} | ||
} | ||
|
||
func TestSourceManager_InferConstraint_InvalidInput(t *testing.T) { | ||
h := test.NewHelper(t) | ||
t.Run(subtestName, func(t *testing.T) { | ||
t.Parallel() | ||
h := test.NewHelper(t) | ||
defer h.Cleanup() | ||
|
||
cacheDir := "gps-repocache" | ||
h.TempDir(cacheDir) | ||
sm, err := NewSourceManager(h.Path(cacheDir)) | ||
h.Must(err) | ||
cacheDir := "gps-repocache" | ||
h.TempDir(cacheDir) | ||
|
||
constraints := []string{ | ||
// invalid bzr revs | ||
"[email protected]", | ||
"20120425195858-psty8c35ve2oej8t", | ||
} | ||
sm, err := NewSourceManager(h.Path(cacheDir)) | ||
h.Must(err) | ||
|
||
pi := ProjectIdentifier{ProjectRoot: "github.com/sdboyer/deptest"} | ||
for _, str := range constraints { | ||
_, err := sm.InferConstraint(str, pi) | ||
if err == nil { | ||
t.Errorf("expected %s to produce an error", str) | ||
} | ||
got, err := sm.InferConstraint(tc.str, tc.project) | ||
h.Must(err) | ||
|
||
wantT := reflect.TypeOf(tc.want) | ||
gotT := reflect.TypeOf(got) | ||
if wantT != gotT { | ||
t.Errorf("expected type: %s, got %s, for input %s", wantT, gotT, tc.str) | ||
} | ||
if got.String() != tc.want.String() { | ||
t.Errorf("expected value: %s, got %s for input %s", tc.want, got, tc.str) | ||
} | ||
}) | ||
} | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters