Skip to content
This repository was archived by the owner on Sep 9, 2020. It is now read-only.

Commit 1b5e697

Browse files
author
tro3
committed
Increasing coverage for lock and analyzer
1 parent 170ff1e commit 1b5e697

File tree

10 files changed

+166
-11
lines changed

10 files changed

+166
-11
lines changed

.gitignore

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,3 +5,5 @@
55
/dep
66
/testdep
77
/dep.exe
8+
debug
9+
debug.*

analyzer.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,7 @@ func (a analyzer) DeriveManifestAndLock(path string, n gps.ProjectRoot) (gps.Man
3737
return m, nil, nil
3838
}
3939

40-
func (a analyzer) Info() (name string, version *semver.Version) {
40+
func (a analyzer) Info() (string, *semver.Version) {
4141
v, _ := semver.NewVersion("v0.0.1")
4242
return "dep", v
4343
}

analyzer_test.go

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,9 +10,36 @@ import (
1010
"path/filepath"
1111
"testing"
1212

13+
"github.com/Masterminds/semver"
1314
"github.com/golang/dep/test"
1415
)
1516

17+
func TestAnalyzerInfo(t *testing.T) {
18+
a := analyzer{}
19+
n, v := a.Info()
20+
if n != "dep" {
21+
t.Errorf("analyzer.Info() returned an incorrect name: '%s' (expected 'dep')", n)
22+
}
23+
expV, err := semver.NewVersion("v0.0.1")
24+
if err != nil {
25+
t.Fatal(err)
26+
} else if v != expV {
27+
t.Fatalf("analyzer.Info() returned an incorrect version: %v (expected %v)", v, expV)
28+
}
29+
}
30+
31+
func TestAnalyzerErrors(t *testing.T) {
32+
h := test.NewHelper(t)
33+
defer h.Cleanup()
34+
h.TempDir("dep")
35+
36+
a := analyzer{}
37+
_, _, err := a.DeriveManifestAndLock(h.Path("dep"), "my/fake/project")
38+
if err == nil {
39+
t.Fatal("analyzer.DeriveManifestAndLock with manifest not present should have produced an error")
40+
}
41+
}
42+
1643
func TestDeriveManifestAndLock(t *testing.T) {
1744
h := test.NewHelper(t)
1845
defer h.Cleanup()

lock.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -64,7 +64,7 @@ func readLock(r io.Reader) (*Lock, error) {
6464
} else if ld.Branch != "" {
6565
v = gps.NewBranch(ld.Branch).Is(r)
6666
} else if r == "" {
67-
return nil, fmt.Errorf("lock file has entry for %s, but specifies no version", ld.Name)
67+
return nil, fmt.Errorf("lock file has entry for %s, but specifies no branch or version", ld.Name)
6868
}
6969

7070
id := gps.ProjectIdentifier{

lock_test.go

Lines changed: 98 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -18,14 +18,7 @@ func TestReadLock(t *testing.T) {
1818
h := test.NewHelper(t)
1919
defer h.Cleanup()
2020

21-
_, err := readLock(h.GetTestFile("lock/error.json"))
22-
if err == nil {
23-
t.Error("Reading lock with invalid props should have caused error, but did not")
24-
} else if !strings.Contains(err.Error(), "both a branch") {
25-
t.Errorf("Unexpected error %q; expected multiple version error", err)
26-
}
27-
28-
golden := "lock/golden.json"
21+
golden := "lock/golden0.json"
2922
l, err := readLock(h.GetTestFile(golden))
3023
if err != nil {
3124
t.Fatalf("Should have read Lock correctly, but got err %q", err)
@@ -45,15 +38,36 @@ func TestReadLock(t *testing.T) {
4538

4639
if !reflect.DeepEqual(l, l2) {
4740
t.Error("Valid lock did not parse as expected")
41+
}
42+
43+
golden = "lock/golden1.json"
44+
l, err = readLock(h.GetTestFile(golden))
45+
if err != nil {
46+
t.Fatalf("Should have read Lock correctly, but got err %q", err)
47+
}
48+
49+
b, _ = hex.DecodeString("2252a285ab27944a4d7adcba8dbd03980f59ba652f12db39fa93b927c345593e")
50+
l2 = &Lock{
51+
Memo: b,
52+
P: []gps.LockedProject{
53+
gps.NewLockedProject(
54+
gps.ProjectIdentifier{ProjectRoot: gps.ProjectRoot("github.com/sdboyer/gps")},
55+
gps.NewVersion("0.12.2").Is(gps.Revision("d05d5aca9f895d19e9265839bffeadd74a2d2ecb")),
56+
[]string{"."},
57+
),
58+
},
59+
}
4860

61+
if !reflect.DeepEqual(l, l2) {
62+
t.Error("Valid lock did not parse as expected")
4963
}
5064
}
5165

5266
func TestWriteLock(t *testing.T) {
5367
h := test.NewHelper(t)
5468
defer h.Cleanup()
5569

56-
golden := "lock/golden.json"
70+
golden := "lock/golden0.json"
5771
lg := h.GetTestFileString(golden)
5872
memo, _ := hex.DecodeString("2252a285ab27944a4d7adcba8dbd03980f59ba652f12db39fa93b927c345593e")
5973
l := &Lock{
@@ -81,4 +95,79 @@ func TestWriteLock(t *testing.T) {
8195
t.Errorf("Valid lock did not marshal to JSON as expected:\n\t(GOT): %s\n\t(WNT): %s", lg, string(b))
8296
}
8397
}
98+
99+
golden = "lock/golden1.json"
100+
lg = h.GetTestFileString(golden)
101+
memo, _ = hex.DecodeString("2252a285ab27944a4d7adcba8dbd03980f59ba652f12db39fa93b927c345593e")
102+
l = &Lock{
103+
Memo: memo,
104+
P: []gps.LockedProject{
105+
gps.NewLockedProject(
106+
gps.ProjectIdentifier{ProjectRoot: gps.ProjectRoot("github.com/sdboyer/gps")},
107+
gps.NewVersion("0.12.2").Is(gps.Revision("d05d5aca9f895d19e9265839bffeadd74a2d2ecb")),
108+
[]string{"."},
109+
),
110+
},
111+
}
112+
113+
b, err = l.MarshalJSON()
114+
if err != nil {
115+
t.Fatalf("Error while marshaling valid lock to JSON: %q", err)
116+
}
117+
118+
if string(b) != lg {
119+
if *test.UpdateGolden {
120+
if err = h.WriteTestFile(golden, string(b)); err != nil {
121+
t.Fatal(err)
122+
}
123+
} else {
124+
t.Errorf("Valid lock did not marshal to JSON as expected:\n\t(GOT): %s\n\t(WNT): %s", lg, string(b))
125+
}
126+
}
127+
}
128+
129+
func TestReadLockErrors(t *testing.T) {
130+
h := test.NewHelper(t)
131+
defer h.Cleanup()
132+
var err error
133+
134+
tests := []struct {
135+
name string
136+
file string
137+
}{
138+
{"specified both", "lock/error0.json"},
139+
{"invalid hash", "lock/error1.json"},
140+
{"no branch or version", "lock/error2.json"},
141+
}
142+
143+
for _, tst := range tests {
144+
_, err = readLock(h.GetTestFile(tst.file))
145+
if err == nil {
146+
t.Errorf("Reading lock with %s should have caused error, but did not", tst.name)
147+
} else if !strings.Contains(err.Error(), tst.name) {
148+
t.Errorf("Unexpected error %q; expected %s error", err, tst.name)
149+
}
150+
}
151+
152+
// _, err = readLock(h.GetTestFile("lock/error0.json"))
153+
// if err == nil {
154+
// t.Error("Reading lock with invalid props should have caused error, but did not")
155+
// } else if !strings.Contains(err.Error(), "both a branch") {
156+
// t.Errorf("Unexpected error %q; expected multiple version error", err)
157+
// }
158+
//
159+
// _, err = readLock(h.GetTestFile("lock/error1.json"))
160+
// if err == nil {
161+
// t.Error("Reading lock with invalid hash should have caused error, but did not")
162+
// } else if !strings.Contains(err.Error(), "invalid hash") {
163+
// t.Errorf("Unexpected error %q; expected invalid hash error", err)
164+
// }
165+
//
166+
// _, err = readLock(h.GetTestFile("lock/error2.json"))
167+
// if err == nil {
168+
// t.Error("Reading lock with invalid props should have caused error, but did not")
169+
// } else if !strings.Contains(err.Error(), "no version") {
170+
// t.Errorf("Unexpected error %q; expected no version error", err)
171+
// }
172+
84173
}
File renamed without changes.

testdata/lock/error1.json

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
{
2+
"memo": "000aaa2a285ab27944a4d7adcba8dbd03980f59ba652f12db39fa93b927c345593e",
3+
"projects": [
4+
{
5+
"name": "github.com/sdboyer/gps",
6+
"branch": "master",
7+
"revision": "d05d5aca9f895d19e9265839bffeadd74a2d2ecb",
8+
"packages": [
9+
"."
10+
]
11+
}
12+
]
13+
}

testdata/lock/error2.json

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
{
2+
"memo": "2252a285ab27944a4d7adcba8dbd03980f59ba652f12db39fa93b927c345593e",
3+
"projects": [
4+
{
5+
"name": "github.com/sdboyer/gps",
6+
"packages": [
7+
"."
8+
]
9+
}
10+
]
11+
}
File renamed without changes.

testdata/lock/golden1.json

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
{
2+
"memo": "2252a285ab27944a4d7adcba8dbd03980f59ba652f12db39fa93b927c345593e",
3+
"projects": [
4+
{
5+
"name": "github.com/sdboyer/gps",
6+
"version": "0.12.2",
7+
"revision": "d05d5aca9f895d19e9265839bffeadd74a2d2ecb",
8+
"packages": [
9+
"."
10+
]
11+
}
12+
]
13+
}

0 commit comments

Comments
 (0)