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

Commit b00a7c3

Browse files
committed
Attempt to fetch version for no comment imports
- Fetches versions list of project and looks for version corresponding to the given revision. - Adds test TestGodepConvertBadInput_EmptyPackageName.
1 parent c637683 commit b00a7c3

File tree

2 files changed

+103
-10
lines changed

2 files changed

+103
-10
lines changed

cmd/dep/godep_config.go

Lines changed: 29 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -68,6 +68,32 @@ func (g *godepFile) convert(projectName string, sm gps.SourceManager) (*dep.Mani
6868
return nil, nil, err
6969
}
7070

71+
// Rev must not be empty
72+
if pkg.Rev == "" {
73+
err := errors.New("godep: Invalid godep configuration, Rev is required")
74+
return nil, nil, err
75+
}
76+
77+
if pkg.Comment == "" {
78+
// When there's no comment, try to get corresponding version for the Rev
79+
// and fill Comment.
80+
// Get all the versions
81+
pi := gps.ProjectIdentifier{ProjectRoot: gps.ProjectRoot(pkg.ImportPath)}
82+
versions, err := sm.ListVersions(pi)
83+
if err != nil {
84+
return nil, nil, err
85+
}
86+
// Sort the versions in descending order, newer versions first
87+
gps.SortPairedForUpgrade(versions)
88+
// Match Rev with versions' underlying revision
89+
for _, v := range versions {
90+
if string(v.Underlying()) == pkg.Rev {
91+
pkg.Comment = v.String()
92+
break
93+
}
94+
}
95+
}
96+
7197
if pkg.Comment != "" {
7298
// If there's a comment, use it to create project constraint
7399
pc, err := g.buildProjectConstraint(pkg, sm)
@@ -77,11 +103,9 @@ func (g *godepFile) convert(projectName string, sm gps.SourceManager) (*dep.Mani
77103
manifest.Dependencies[pc.Ident.ProjectRoot] = gps.ProjectProperties{Source: pc.Ident.Source, Constraint: pc.Constraint}
78104
}
79105

80-
if pkg.Rev != "" {
81-
// Use the revision to create lock project
82-
lp := g.buildLockedProject(pkg, manifest)
83-
lock.P = append(lock.P, lp)
84-
}
106+
// Use the revision and comment to create lock project
107+
lp := g.buildLockedProject(pkg, manifest)
108+
lock.P = append(lock.P, lp)
85109
}
86110

87111
return manifest, lock, nil

cmd/dep/godep_config_test.go

Lines changed: 74 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -76,8 +76,9 @@ func TestGodepConvertProject(t *testing.T) {
7676
Imports: []godepPackage{
7777
{
7878
ImportPath: "github.com/sdboyer/deptest",
79-
Rev: "6a741be0cc55ecbe4f45690ebfd606a956d5f14a",
80-
Comment: "v1.0.0",
79+
// This revision has 2 versions attached to it, v1.0.0 & v0.8.0.
80+
Rev: "ff2948a2ac8f538c4ecd55962e919d1e13e74baf",
81+
Comment: "v0.8.0",
8182
},
8283
},
8384
},
@@ -93,9 +94,77 @@ func TestGodepConvertProject(t *testing.T) {
9394
t.Fatal("Expected the manifest to have a dependency for 'github.com/sdboyer/deptest' but got none")
9495
}
9596

97+
v := d.Constraint.String()
98+
if v != "v0.8.0" {
99+
t.Fatalf("Expected manifest constraint to be v0.8.0, got %s", v)
100+
}
101+
102+
p := lock.P[0]
103+
if p.Ident().ProjectRoot != "github.com/sdboyer/deptest" {
104+
t.Fatalf("Expected the lock to have a project for 'github.com/sdboyer/deptest' but got '%s'", p.Ident().ProjectRoot)
105+
}
106+
107+
lv := p.Version()
108+
lpv, ok := lv.(gps.PairedVersion)
109+
if !ok {
110+
t.Fatalf("Expected locked version to be PairedVersion but got %T", lv)
111+
}
112+
113+
rev := lpv.Underlying()
114+
if rev != "ff2948a2ac8f538c4ecd55962e919d1e13e74baf" {
115+
t.Fatalf("Expected locked revision to be 'ff2948a2ac8f538c4ecd55962e919d1e13e74baf', got %s", rev)
116+
}
117+
118+
ver := lpv.String()
119+
if ver != "v0.8.0" {
120+
t.Fatalf("Expected locked version to be 'v0.8.0', got %s", ver)
121+
}
122+
}
123+
124+
func TestGodepConvertProject_EmptyComment(t *testing.T) {
125+
loggers := &dep.Loggers{
126+
Out: log.New(os.Stdout, "", 0),
127+
Err: log.New(os.Stdout, "", 0),
128+
Verbose: true,
129+
}
130+
131+
h := test.NewHelper(t)
132+
defer h.Cleanup()
133+
h.TempDir("src")
134+
135+
f := godepFile{
136+
loggers: loggers,
137+
json: godepJson{
138+
Name: "github.com/foo/bar",
139+
Imports: []godepPackage{
140+
{
141+
ImportPath: "github.com/sdboyer/deptest",
142+
// This revision has 2 versions attached to it, v1.0.0 & v0.8.0.
143+
Rev: "ff2948a2ac8f538c4ecd55962e919d1e13e74baf",
144+
},
145+
},
146+
},
147+
}
148+
149+
sm, err := gps.NewSourceManager(h.Path("."))
150+
if err != nil {
151+
t.Fatal(err)
152+
}
153+
defer sm.Release()
154+
155+
manifest, lock, err := f.convert("", sm)
156+
if err != nil {
157+
t.Fatal(err)
158+
}
159+
160+
d, ok := manifest.Dependencies["github.com/sdboyer/deptest"]
161+
if !ok {
162+
t.Fatal("Expected the manifest to have a dependency for 'github.com/sdboyer/deptest' but got none")
163+
}
164+
96165
v := d.Constraint.String()
97166
if v != "v1.0.0" {
98-
t.Fatalf("Expected manifest constraint to be master, got %s", v)
167+
t.Fatalf("Expected manifest constraint to be v1.0.0, got %s", v)
99168
}
100169

101170
p := lock.P[0]
@@ -110,8 +179,8 @@ func TestGodepConvertProject(t *testing.T) {
110179
}
111180

112181
rev := lpv.Underlying()
113-
if rev != "6a741be0cc55ecbe4f45690ebfd606a956d5f14a" {
114-
t.Fatalf("Expected locked revision to be '6a741be0cc55ecbe4f45690ebfd606a956d5f14a', got %s", rev)
182+
if rev != "ff2948a2ac8f538c4ecd55962e919d1e13e74baf" {
183+
t.Fatalf("Expected locked revision to be 'ff2948a2ac8f538c4ecd55962e919d1e13e74baf', got %s", rev)
115184
}
116185

117186
ver := lpv.String()

0 commit comments

Comments
 (0)