Skip to content

Commit

Permalink
Fix a bug where compiled releases were uploaded but source was not up…
Browse files Browse the repository at this point in the history
…loaded.

Signed-off-by: Joseph Palermo <[email protected]>
Signed-off-by: Konstantin Kiess <[email protected]>
  • Loading branch information
lnguyen authored and jpalermo committed Feb 9, 2022
1 parent 6d5e8a5 commit d3004f2
Show file tree
Hide file tree
Showing 2 changed files with 60 additions and 4 deletions.
30 changes: 27 additions & 3 deletions director/releases.go
Original file line number Diff line number Diff line change
Expand Up @@ -188,9 +188,14 @@ func (d DirectorImpl) HasRelease(name, version string, stemcell OSVersionSlug) (
if err != nil {
return false, err
}
if stemcell.IsProvided() && found {
found, err := d.ReleaseHasCompiledPackage(NewReleaseSlug(name, version), stemcell)
return found, err
if found {
if stemcell.IsProvided() {
found, err := d.ReleaseHasCompiledPackage(NewReleaseSlug(name, version), stemcell)
return found, err
} else {
found, err := d.ReleaseHasSource(NewReleaseSlug(name, version))
return found, err
}
}
return found, err
}
Expand Down Expand Up @@ -219,6 +224,25 @@ func (d DirectorImpl) ReleaseHasCompiledPackage(releaseSlug ReleaseSlug, osVersi
return false, nil
}

func (d DirectorImpl) ReleaseHasSource(releaseSlug ReleaseSlug) (bool, error) {
release, err := d.FindRelease(releaseSlug)
if err != nil {
return false, err
}

pkgs, err := release.Packages()
if err != nil {
return false, err
}

for _, pkg := range pkgs {
if pkg.BlobstoreID != "" {
return true, nil
}
}
return false, nil
}

func (d DirectorImpl) UploadReleaseURL(url, sha1 string, rebase, fix bool) error {
return d.client.UploadReleaseURL(url, sha1, rebase, fix)
}
Expand Down
34 changes: 33 additions & 1 deletion director/releases_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -149,20 +149,52 @@ var _ = Describe("Director", func() {
stemcell = OSVersionSlug{}
})

It("returns true if name and version matches", func() {
It("returns true if name and version matches and it has source", func() {
server.AppendHandlers(
ghttp.CombineHandlers(
ghttp.VerifyRequest("GET", "/releases"),
ghttp.VerifyBasicAuth("username", "password"),
ghttp.RespondWith(http.StatusOK, `[{"name":"name","release_versions":[{"version":"ver"}]}]`),
),
ghttp.CombineHandlers(
ghttp.VerifyRequest("GET", "/releases/name", "version=ver"),
ghttp.VerifyBasicAuth("username", "password"),
ghttp.RespondWith(http.StatusOK, `{
"packages": [{
"blobstore_id": "123"
}]
}`),
),
)

found, err := act()
Expect(err).ToNot(HaveOccurred())
Expect(found).To(BeTrue())
})

It("returns false if name and version matches but no source", func() {
server.AppendHandlers(
ghttp.CombineHandlers(
ghttp.VerifyRequest("GET", "/releases"),
ghttp.VerifyBasicAuth("username", "password"),
ghttp.RespondWith(http.StatusOK, `[{"name":"name","release_versions":[{"version":"ver"}]}]`),
),
ghttp.CombineHandlers(
ghttp.VerifyRequest("GET", "/releases/name", "version=ver"),
ghttp.VerifyBasicAuth("username", "password"),
ghttp.RespondWith(http.StatusOK, `{
"packages": [{
"blobstore_id": ""
}]
}`),
),
)

found, err := act()
Expect(err).ToNot(HaveOccurred())
Expect(found).To(BeFalse())
})

It("returns false if name and version does not match", func() {
server.AppendHandlers(
ghttp.CombineHandlers(
Expand Down

0 comments on commit d3004f2

Please sign in to comment.