From 75348c015893fcc2e214ba1055292d0b9cae1788 Mon Sep 17 00:00:00 2001 From: Lode Hoste Date: Thu, 9 Apr 2015 22:44:36 +0200 Subject: [PATCH] Fix compilation of -noupgrade builds --- cmd/syncthing/gui.go | 4 ++-- cmd/syncthing/main.go | 4 ++-- internal/upgrade/upgrade_supported.go | 19 ++++++++++++------- internal/upgrade/upgrade_test.go | 13 +++++++++++-- internal/upgrade/upgrade_unsupp.go | 2 +- 5 files changed, 28 insertions(+), 14 deletions(-) diff --git a/cmd/syncthing/gui.go b/cmd/syncthing/gui.go index 25cac92d..cda50d4a 100644 --- a/cmd/syncthing/gui.go +++ b/cmd/syncthing/gui.go @@ -681,7 +681,7 @@ func restGetSystemUpgrade(w http.ResponseWriter, r *http.Request) { http.Error(w, upgrade.ErrUpgradeUnsupported.Error(), 500) return } - rel, err := upgrade.LatestGithubRelease(Version) + rel, err := upgrade.LatestRelease(Version) if err != nil { http.Error(w, err.Error(), 500) return @@ -723,7 +723,7 @@ func restGetLang(w http.ResponseWriter, r *http.Request) { } func restPostSystemUpgrade(w http.ResponseWriter, r *http.Request) { - rel, err := upgrade.LatestGithubRelease(Version) + rel, err := upgrade.LatestRelease(Version) if err != nil { l.Warnln("getting latest release:", err) http.Error(w, err.Error(), 500) diff --git a/cmd/syncthing/main.go b/cmd/syncthing/main.go index c2ea0a08..21b42722 100644 --- a/cmd/syncthing/main.go +++ b/cmd/syncthing/main.go @@ -325,7 +325,7 @@ func main() { } if doUpgrade || doUpgradeCheck { - rel, err := upgrade.LatestGithubRelease(Version) + rel, err := upgrade.LatestRelease(Version) if err != nil { l.Fatalln("Upgrade:", err) // exits 1 } @@ -965,7 +965,7 @@ func autoUpgrade() { case <-timer.C: } - rel, err := upgrade.LatestGithubRelease(Version) + rel, err := upgrade.LatestRelease(Version) if err == upgrade.ErrUpgradeUnsupported { events.Default.Unsubscribe(sub) return diff --git a/internal/upgrade/upgrade_supported.go b/internal/upgrade/upgrade_supported.go index 9af3a6c7..c23d6367 100644 --- a/internal/upgrade/upgrade_supported.go +++ b/internal/upgrade/upgrade_supported.go @@ -27,21 +27,21 @@ import ( "strings" ) -// Returns the latest release, including prereleases or not depending on the argument -func LatestGithubRelease(version string) (Release, error) { - resp, err := http.Get("https://api.github.com/repos/syncthing/syncthing/releases?per_page=10") +// Returns the latest releases, including prereleases or not depending on the argument +func LatestGithubReleases(version string) ([]Release, error) { + resp, err := http.Get("https://api.github.com/repos/syncthing/syncthing/releases?per_page=30") if err != nil { - return Release{}, err + return nil, err } if resp.StatusCode > 299 { - return Release{}, fmt.Errorf("API call returned HTTP error: %s", resp.Status) + return nil, fmt.Errorf("API call returned HTTP error: %s", resp.Status) } var rels []Release json.NewDecoder(resp.Body).Decode(&rels) resp.Body.Close() - return LatestRelease(version, rels) + return rels, nil } type SortByRelease []Release @@ -56,7 +56,12 @@ func (s SortByRelease) Less(i, j int) bool { return CompareVersions(s[i].Tag, s[j].Tag) > 0 } -func LatestRelease(version string, rels []Release) (Release, error) { +func LatestRelease(version string) (Release, error) { + rels, _ := LatestGithubReleases(version) + return SelectLatestRelease(version, rels) +} + +func SelectLatestRelease(version string, rels []Release) (Release, error) { if len(rels) == 0 { return Release{}, ErrVersionUnknown } diff --git a/internal/upgrade/upgrade_test.go b/internal/upgrade/upgrade_test.go index df011040..be91afd8 100644 --- a/internal/upgrade/upgrade_test.go +++ b/internal/upgrade/upgrade_test.go @@ -4,6 +4,8 @@ // License, v. 2.0. If a copy of the MPL was not distributed with this file, // You can obtain one at http://mozilla.org/MPL/2.0/. +// +build !noupgrade + package upgrade import ( @@ -65,7 +67,7 @@ var upgrades = map[string]string{ "v0.11.0-beta0+40-g53cb66e-dirty": "v0.11.0-beta0", } -func TestRelease(t *testing.T) { +func TestGithubRelease(t *testing.T) { fd, err := os.Open("testdata/github-releases.json") if err != nil { t.Errorf("Missing github-release test data") @@ -76,7 +78,7 @@ func TestRelease(t *testing.T) { json.NewDecoder(fd).Decode(&rels) for old, target := range upgrades { - upgrade, err := LatestRelease(old, rels) + upgrade, err := SelectLatestRelease(old, rels) if err != nil { t.Error("Error retrieving latest version", err) } @@ -85,3 +87,10 @@ func TestRelease(t *testing.T) { } } } + +func TestErrorRelease(t *testing.T) { + _, err := SelectLatestRelease("v0.11.0-beta", nil) + if err == nil { + t.Error("Should return an error when no release were available") + } +} diff --git a/internal/upgrade/upgrade_unsupp.go b/internal/upgrade/upgrade_unsupp.go index bbb3d650..16b9447d 100644 --- a/internal/upgrade/upgrade_unsupp.go +++ b/internal/upgrade/upgrade_unsupp.go @@ -16,6 +16,6 @@ func upgradeToURL(binary, url string) error { return ErrUpgradeUnsupported } -func LatestRelease(prerelease bool) (Release, error) { +func LatestRelease(version string) (Release, error) { return Release{}, ErrUpgradeUnsupported }