feat: add release notes to version file

This commit is contained in:
James Houlahan
2020-12-15 16:28:15 +01:00
parent dfbf25a9f4
commit 4514d72d70
8 changed files with 74 additions and 64 deletions

View File

@ -118,7 +118,7 @@ func (u *Updater) IsUpdateApplicable(version VersionInfo) bool {
return false
}
if u.settings.GetFloat64(settings.RolloutKey) > version.Rollout {
if u.settings.GetFloat64(settings.RolloutKey) > version.RolloutProportion {
return false
}

View File

@ -46,10 +46,10 @@ func TestCheck(t *testing.T) {
versionMap := VersionMap{
"live": VersionInfo{
Version: semver.MustParse("1.5.0"),
MinAuto: semver.MustParse("1.4.0"),
Package: "https://protonmail.com/download/bridge/update_1.5.0_linux.tgz",
Rollout: 1.0,
Version: semver.MustParse("1.5.0"),
MinAuto: semver.MustParse("1.4.0"),
Package: "https://protonmail.com/download/bridge/update_1.5.0_linux.tgz",
RolloutProportion: 1.0,
},
}
@ -77,16 +77,16 @@ func TestCheckEarlyAccess(t *testing.T) {
versionMap := VersionMap{
"live": VersionInfo{
Version: semver.MustParse("1.5.0"),
MinAuto: semver.MustParse("1.0.0"),
Package: "https://protonmail.com/download/bridge/update_1.5.0_linux.tgz",
Rollout: 1.0,
Version: semver.MustParse("1.5.0"),
MinAuto: semver.MustParse("1.0.0"),
Package: "https://protonmail.com/download/bridge/update_1.5.0_linux.tgz",
RolloutProportion: 1.0,
},
"beta": VersionInfo{
Version: semver.MustParse("1.6.0"),
MinAuto: semver.MustParse("1.0.0"),
Package: "https://protonmail.com/download/bridge/update_1.6.0_linux.tgz",
Rollout: 1.0,
Version: semver.MustParse("1.6.0"),
MinAuto: semver.MustParse("1.0.0"),
Package: "https://protonmail.com/download/bridge/update_1.6.0_linux.tgz",
RolloutProportion: 1.0,
},
}
@ -134,28 +134,28 @@ func TestIsUpdateApplicable(t *testing.T) {
updater := newTestUpdater(client, "1.4.0", false)
versionOld := VersionInfo{
Version: semver.MustParse("1.3.0"),
MinAuto: semver.MustParse("1.3.0"),
Package: "https://protonmail.com/download/bridge/update_1.3.0_linux.tgz",
Rollout: 1.0,
Version: semver.MustParse("1.3.0"),
MinAuto: semver.MustParse("1.3.0"),
Package: "https://protonmail.com/download/bridge/update_1.3.0_linux.tgz",
RolloutProportion: 1.0,
}
assert.Equal(t, false, updater.IsUpdateApplicable(versionOld))
versionEqual := VersionInfo{
Version: semver.MustParse("1.4.0"),
MinAuto: semver.MustParse("1.3.0"),
Package: "https://protonmail.com/download/bridge/update_1.4.0_linux.tgz",
Rollout: 1.0,
Version: semver.MustParse("1.4.0"),
MinAuto: semver.MustParse("1.3.0"),
Package: "https://protonmail.com/download/bridge/update_1.4.0_linux.tgz",
RolloutProportion: 1.0,
}
assert.Equal(t, false, updater.IsUpdateApplicable(versionEqual))
versionNew := VersionInfo{
Version: semver.MustParse("1.5.0"),
MinAuto: semver.MustParse("1.3.0"),
Package: "https://protonmail.com/download/bridge/update_1.5.0_linux.tgz",
Rollout: 1.0,
Version: semver.MustParse("1.5.0"),
MinAuto: semver.MustParse("1.3.0"),
Package: "https://protonmail.com/download/bridge/update_1.5.0_linux.tgz",
RolloutProportion: 1.0,
}
assert.Equal(t, true, updater.IsUpdateApplicable(versionNew))
@ -170,19 +170,19 @@ func TestCanInstall(t *testing.T) {
updater := newTestUpdater(client, "1.4.0", false)
versionManual := VersionInfo{
Version: semver.MustParse("1.5.0"),
MinAuto: semver.MustParse("1.5.0"),
Package: "https://protonmail.com/download/bridge/update_1.5.0_linux.tgz",
Rollout: 1.0,
Version: semver.MustParse("1.5.0"),
MinAuto: semver.MustParse("1.5.0"),
Package: "https://protonmail.com/download/bridge/update_1.5.0_linux.tgz",
RolloutProportion: 1.0,
}
assert.Equal(t, false, updater.CanInstall(versionManual))
versionAuto := VersionInfo{
Version: semver.MustParse("1.5.0"),
MinAuto: semver.MustParse("1.3.0"),
Package: "https://protonmail.com/download/bridge/update_1.5.0_linux.tgz",
Rollout: 1.0,
Version: semver.MustParse("1.5.0"),
MinAuto: semver.MustParse("1.3.0"),
Package: "https://protonmail.com/download/bridge/update_1.5.0_linux.tgz",
RolloutProportion: 1.0,
}
assert.Equal(t, true, updater.CanInstall(versionAuto))
@ -197,10 +197,10 @@ func TestInstallUpdate(t *testing.T) {
updater := newTestUpdater(client, "1.4.0", false)
latestVersion := VersionInfo{
Version: semver.MustParse("1.5.0"),
MinAuto: semver.MustParse("1.4.0"),
Package: "https://protonmail.com/download/bridge/update_1.5.0_linux.tgz",
Rollout: 1.0,
Version: semver.MustParse("1.5.0"),
MinAuto: semver.MustParse("1.4.0"),
Package: "https://protonmail.com/download/bridge/update_1.5.0_linux.tgz",
RolloutProportion: 1.0,
}
client.EXPECT().DownloadAndVerify(
@ -225,10 +225,10 @@ func TestInstallUpdateBadSignature(t *testing.T) {
updater := newTestUpdater(client, "1.4.0", false)
latestVersion := VersionInfo{
Version: semver.MustParse("1.5.0"),
MinAuto: semver.MustParse("1.4.0"),
Package: "https://protonmail.com/download/bridge/update_1.5.0_linux.tgz",
Rollout: 1.0,
Version: semver.MustParse("1.5.0"),
MinAuto: semver.MustParse("1.4.0"),
Package: "https://protonmail.com/download/bridge/update_1.5.0_linux.tgz",
RolloutProportion: 1.0,
}
client.EXPECT().DownloadAndVerify(
@ -255,10 +255,10 @@ func TestInstallUpdateAlreadyOngoing(t *testing.T) {
updater.installer = &fakeInstaller{delay: 2 * time.Second}
latestVersion := VersionInfo{
Version: semver.MustParse("1.5.0"),
MinAuto: semver.MustParse("1.4.0"),
Package: "https://protonmail.com/download/bridge/update_1.5.0_linux.tgz",
Rollout: 1.0,
Version: semver.MustParse("1.5.0"),
MinAuto: semver.MustParse("1.4.0"),
Package: "https://protonmail.com/download/bridge/update_1.5.0_linux.tgz",
RolloutProportion: 1.0,
}
client.EXPECT().DownloadAndVerify(

View File

@ -38,11 +38,14 @@ type VersionInfo struct {
// Installers are the locations of installer files (for manual installation).
Installers []string
// Landing is the address of the app landing page on protonmail.com.
Landing string
// LandingPage is the address of the app landing page on protonmail.com.
LandingPage string
// Rollout is the current progress of the rollout of this release.
Rollout float64
// ReleaseNotesPage is the address of the page containing the release notes.
ReleaseNotesPage string
// RolloutProportion indicates the proportion (0,1] of users that should update to this version.
RolloutProportion float64
}
// VersionMap represents the structure of the version.json file.
@ -56,8 +59,9 @@ type VersionInfo struct {
// "https://protonmail.com/.../something.rpm",
// "https://protonmail.com/.../PKGBUILD"
// ],
// "Landing "https://protonmail.com/bridge",
// "Rollout": 0.5
// "LandingPage": "https://protonmail.com/bridge",
// "ReleaseNotesPage": "https://protonmail.com/.../release_notes.html",
// "RolloutProportion": 0.5
// },
// "beta": {
// "Version": "2.4.0-beta",
@ -67,8 +71,9 @@ type VersionInfo struct {
// "https://protonmail.com/.../something.rpm",
// "https://protonmail.com/.../PKGBUILD"
// ],
// "Landing "https://protonmail.com/bridge",
// "Rollout": 0.5
// "LandingPage": "https://protonmail.com/bridge",
// "ReleaseNotesPage": "https://protonmail.com/.../release_notes.html",
// "RolloutProportion": 0.5
// },
// "...": {
// ...