From b709a54c2db72e6deb8f8d5860a136a122b2b290 Mon Sep 17 00:00:00 2001 From: rhysd Date: Wed, 27 Dec 2017 12:16:26 +0900 Subject: [PATCH] add document URL and description to Release struct --- selfupdate/detect.go | 7 ++++++- selfupdate/detect_test.go | 30 ++++++++++++++++++++++++++++-- selfupdate/release.go | 6 ++++-- 3 files changed, 38 insertions(+), 5 deletions(-) diff --git a/selfupdate/detect.go b/selfupdate/detect.go index b006b9a..8b9a764 100644 --- a/selfupdate/detect.go +++ b/selfupdate/detect.go @@ -112,7 +112,12 @@ func (d *ReleaseDetector) DetectLatest(slug string) (release *Release, found boo tag = tag[indices[0]:] } - release = &Release{AssetURL: url} + release = &Release{ + AssetURL: url, + DocumentURL: rel.GetHTMLURL(), + Description: rel.GetBody(), + } + release.Version, err = semver.Make(tag) return } diff --git a/selfupdate/detect_test.go b/selfupdate/detect_test.go index a2947f6..4d6b02d 100644 --- a/selfupdate/detect_test.go +++ b/selfupdate/detect_test.go @@ -27,10 +27,36 @@ func TestDetectReleaseWithVersionPrefix(t *testing.T) { t.Fatal("Release detected but nil returned for it") } if r.Version.LE(semver.MustParse("2.0.0")) { - t.Fatal("Incorrect version:", r.Version) + t.Error("Incorrect version:", r.Version) } if !strings.HasSuffix(r.AssetURL, ".zip") && !strings.HasSuffix(r.AssetURL, ".tar.gz") { - t.Fatal("Incorrect URL for asset:", r.AssetURL) + t.Error("Incorrect URL for asset:", r.AssetURL) + } + if r.DocumentURL == "" { + t.Error("Document URL should not be empty") + } + if r.Description == "" { + t.Error("Description should not be empty for this repo") + } +} + +func TestDetectReleaseButNoAsset(t *testing.T) { + _, ok, err := DetectLatest("rhysd/clever-f.vim") + if err != nil { + t.Fatal("Fetch failed:", err) + } + if ok { + t.Fatal("When no asset found, result should be marked as 'not found'") + } +} + +func TestDetectNoRelease(t *testing.T) { + _, ok, err := DetectLatest("rhysd/clever-f.vim") + if err != nil { + t.Fatal("Fetch failed:", err) + } + if ok { + t.Fatal("When no release found, result should be marked as 'not found'") } } diff --git a/selfupdate/release.go b/selfupdate/release.go index 96801fc..0bff0f3 100644 --- a/selfupdate/release.go +++ b/selfupdate/release.go @@ -6,6 +6,8 @@ import ( // Release represents a release asset for current OS and arch. type Release struct { - Version semver.Version - AssetURL string + Version semver.Version + AssetURL string + DocumentURL string + Description string }