From 70d8903d3c509f306b6c1796cd5b17d3e92d0c40 Mon Sep 17 00:00:00 2001 From: Jakob Borg Date: Mon, 17 Nov 2014 18:49:51 +0400 Subject: [PATCH] Initial 'v' in versions should not be compared on (fixes #980) --- internal/upgrade/upgrade_common.go | 4 ++++ internal/upgrade/upgrade_test.go | 4 ++++ 2 files changed, 8 insertions(+) diff --git a/internal/upgrade/upgrade_common.go b/internal/upgrade/upgrade_common.go index 6dffe160..bcbe283c 100644 --- a/internal/upgrade/upgrade_common.go +++ b/internal/upgrade/upgrade_common.go @@ -153,6 +153,10 @@ func CompareVersions(a, b string) int { // Split a version into parts. // "1.2.3-beta.2" -> []int{1, 2, 3}, []interface{}{"beta", 2} func versionParts(v string) ([]int, []interface{}) { + if strings.HasPrefix(v, "v") || strings.HasPrefix(v, "V") { + // Strip initial 'v' or 'V' prefix if present. + v = v[1:] + } parts := strings.SplitN(v, "+", 2) parts = strings.SplitN(parts[0], "-", 2) fields := strings.Split(parts[0], ".") diff --git a/internal/upgrade/upgrade_test.go b/internal/upgrade/upgrade_test.go index b625d466..d15133e0 100644 --- a/internal/upgrade/upgrade_test.go +++ b/internal/upgrade/upgrade_test.go @@ -42,6 +42,10 @@ var testcases = []struct { {"1.0.0+45", "1.0.0+23-dev-foo", 0}, {"1.0.0-beta.23+45", "1.0.0-beta.23+23-dev-foo", 0}, {"1.0.0-beta.3+99", "1.0.0-beta.24+0", -1}, + + {"v1.1.2", "1.1.2", 0}, + {"v1.1.2", "V1.1.2", 0}, + {"1.1.2", "V1.1.2", 0}, } func TestCompareVersions(t *testing.T) {