Compare commits

...

5 Commits

Author SHA1 Message Date
Joffrey F
c8b17e86de Bump version to 0.12.1
Signed-off-by: Joffrey F <joffrey@docker.com>
2017-06-30 15:17:05 -07:00
French Ben
d8dd3880ec Merge pull request #4162 from seemethere/add_comparison_function_tests
Adds tests for versioncmp functions
2017-06-30 19:23:39 +02:00
Eli Uriegas
1c27288680 Adds tests for versioncmp functions
Relates to issues raised in #4156

Signed-off-by: Eli Uriegas <eli.uriegas@docker.com>
2017-06-30 10:00:19 -07:00
French Ben
255980cfc2 Merge pull request #4128 from StefanScherer/fix-versioncmp
Fix versioncmp for CE edition
2017-06-30 18:37:07 +02:00
Stefan Scherer
efe0ca5273 Fix versioncmp for ce edition
Signed-off-by: Stefan Scherer <scherer_stefan@icloud.com>
2017-06-09 12:45:28 +02:00
3 changed files with 197 additions and 3 deletions

View File

@@ -29,10 +29,10 @@ func compare(v1, v2 string) int {
// presence of the "ce" string in the version string) are "less than"
// any community edition release (first occuring in March 2017).
if strings.Contains(v1, ceEdition) && !strings.Contains(v2, ceEdition) {
return -1
return 1
}
if !strings.Contains(v1, ceEdition) && strings.Contains(v2, ceEdition) {
return 1
return -1
}
// Without this tag, both are pre-CE versions.

View File

@@ -33,6 +33,8 @@ func TestCompare(t *testing.T) {
{"17.03.0-ce", "17.06.0-ce", -1},
{"17.03.0-ce-rc2", "17.03.0-ce-rc1", 1},
{"17.03.0-ce-rc1", "18.03.0-ce-rc1", -1},
{"17.06.0-ce-rc2", "1.12.0", 1},
{"1.12.0", "17.06.0-ce-rc2", -1},
}
for _, tc := range cases {
@@ -41,3 +43,195 @@ func TestCompare(t *testing.T) {
}
}
}
func TestLessThan(t *testing.T) {
cases := []struct {
v1, v2 string
want bool
}{
{"1.12", "1.12", false},
{"1.0.0", "1", false},
{"1", "1.0.0", false},
{"1.05.00.0156", "1.0.221.9289", false},
{"1", "1.0.1", true},
{"1.0.1", "1", false},
{"1.0.1", "1.0.2", true},
{"1.0.2", "1.0.3", true},
{"1.0.3", "1.1", true},
{"1.1", "1.1.1", true},
{"1.a", "1.b", false},
{"1.a", "2.b", true},
{"1.1", "1.1.0", false},
{"1.1.1", "1.1.2", true},
{"1.1.2", "1.2", true},
{"1.12.1", "1.13.0-rc1", true},
{"1.13.0-rc1", "1.13.0-rc2", true},
{"1.13.0-rc1", "1.13.1-rc1", true},
{"17.03.0-ce", "17.03.0-ce", false},
{"17.03.1-ce", "17.03.2-ce", true},
{"17.06.6-ce", "17.09.2-ce", true},
{"17.03.0-ce", "17.06.0-ce", true},
{"17.03.0-ce-rc2", "17.03.0-ce-rc1", false},
{"17.03.0-ce-rc1", "18.03.0-ce-rc1", true},
{"17.06.0-ce", "1.12.0", false},
}
for _, tc := range cases {
if got := LessThan(tc.v1, tc.v2); got != tc.want {
t.Errorf("LessThan(%q, %q) == %v, want %v", tc.v1, tc.v2, got, tc.want)
}
}
}
func TestLessThanOrEqualTo(t *testing.T) {
cases := []struct {
v1, v2 string
want bool
}{
{"1.12", "1.12", true},
{"1.0.0", "1", true},
{"1", "1.0.0", true},
{"1.05.00.0156", "1.0.221.9289", false},
{"1", "1.0.1", true},
{"1.0.1", "1", false},
{"1.0.1", "1.0.2", true},
{"1.0.2", "1.0.3", true},
{"1.0.3", "1.1", true},
{"1.1", "1.1.1", true},
{"1.a", "1.b", true},
{"1.a", "2.b", true},
{"1.1", "1.1.0", true},
{"1.1.1", "1.1.2", true},
{"1.1.2", "1.2", true},
{"1.12.1", "1.13.0-rc1", true},
{"1.13.0-rc1", "1.13.0-rc2", true},
{"1.13.0-rc1", "1.13.1-rc1", true},
{"17.03.0-ce", "17.03.0-ce", true},
{"17.03.1-ce", "17.03.2-ce", true},
{"17.06.6-ce", "17.09.2-ce", true},
{"17.03.0-ce", "17.06.0-ce", true},
{"17.03.0-ce-rc2", "17.03.0-ce-rc1", false},
{"17.03.0-ce-rc1", "18.03.0-ce-rc1", true},
{"17.06.0-ce", "1.12.0", false},
}
for _, tc := range cases {
if got := LessThanOrEqualTo(tc.v1, tc.v2); got != tc.want {
t.Errorf("LessThanOrEqualTo(%q, %q) == %v, want %v", tc.v1, tc.v2, got, tc.want)
}
}
}
func TestGreaterThan(t *testing.T) {
cases := []struct {
v1, v2 string
want bool
}{
{"1.12", "1.12", false},
{"1.0.0", "1", false},
{"1", "1.0.0", false},
{"1.05.00.0156", "1.0.221.9289", true},
{"1", "1.0.1", false},
{"1.0.1", "1", true},
{"1.0.1", "1.0.2", false},
{"1.0.2", "1.0.3", false},
{"1.0.3", "1.1", false},
{"1.1", "1.1.1", false},
{"1.a", "1.b", false},
{"1.a", "2.b", false},
{"1.1", "1.1.0", false},
{"1.1.1", "1.1.2", false},
{"1.1.2", "1.2", false},
{"1.12.1", "1.13.0-rc1", false},
{"1.13.0-rc1", "1.13.0-rc2", false},
{"1.13.0-rc1", "1.13.1-rc1", false},
{"17.03.0-ce", "17.03.0-ce", false},
{"17.03.1-ce", "17.03.2-ce", false},
{"17.06.6-ce", "17.09.2-ce", false},
{"17.03.0-ce", "17.06.0-ce", false},
{"17.03.0-ce-rc2", "17.03.0-ce-rc1", true},
{"17.03.0-ce-rc1", "18.03.0-ce-rc1", false},
{"17.06.0-ce", "1.12.0", true},
}
for _, tc := range cases {
if got := GreaterThan(tc.v1, tc.v2); got != tc.want {
t.Errorf("GreaterThan(%q, %q) == %v, want %v", tc.v1, tc.v2, got, tc.want)
}
}
}
func TestGreaterThanOrEqualTo(t *testing.T) {
cases := []struct {
v1, v2 string
want bool
}{
{"1.12", "1.12", true},
{"1.0.0", "1", true},
{"1", "1.0.0", true},
{"1.05.00.0156", "1.0.221.9289", true},
{"1", "1.0.1", false},
{"1.0.1", "1", true},
{"1.0.1", "1.0.2", false},
{"1.0.2", "1.0.3", false},
{"1.0.3", "1.1", false},
{"1.1", "1.1.1", false},
{"1.a", "1.b", true},
{"1.a", "2.b", false},
{"1.1", "1.1.0", true},
{"1.1.1", "1.1.2", false},
{"1.1.2", "1.2", false},
{"1.12.1", "1.13.0-rc1", false},
{"1.13.0-rc1", "1.13.0-rc2", false},
{"1.13.0-rc1", "1.13.1-rc1", false},
{"17.03.0-ce", "17.03.0-ce", true},
{"17.03.1-ce", "17.03.2-ce", false},
{"17.06.6-ce", "17.09.2-ce", false},
{"17.03.0-ce", "17.06.0-ce", false},
{"17.03.0-ce-rc2", "17.03.0-ce-rc1", true},
{"17.03.0-ce-rc1", "18.03.0-ce-rc1", false},
{"17.06.0-ce", "1.12.0", true},
}
for _, tc := range cases {
if got := GreaterThanOrEqualTo(tc.v1, tc.v2); got != tc.want {
t.Errorf("GreaterThanOrEqualTo(%q, %q) == %v, want %v", tc.v1, tc.v2, got, tc.want)
}
}
}
func TestEqual(t *testing.T) {
cases := []struct {
v1, v2 string
want bool
}{
{"1.12", "1.12", true},
{"1.0.0", "1", true},
{"1", "1.0.0", true},
{"1.05.00.0156", "1.0.221.9289", false},
{"1", "1.0.1", false},
{"1.0.1", "1", false},
{"1.0.1", "1.0.2", false},
{"1.0.2", "1.0.3", false},
{"1.0.3", "1.1", false},
{"1.1", "1.1.1", false},
{"1.a", "1.b", true},
{"1.a", "2.b", false},
{"1.1", "1.1.0", true},
{"1.1.1", "1.1.2", false},
{"1.1.2", "1.2", false},
{"1.12.1", "1.13.0-rc1", false},
{"1.13.0-rc1", "1.13.0-rc2", false},
{"1.13.0-rc1", "1.13.1-rc1", false},
{"17.03.0-ce", "17.03.0-ce", true},
{"17.03.1-ce", "17.03.2-ce", false},
{"17.06.6-ce", "17.09.2-ce", false},
{"17.03.0-ce", "17.06.0-ce", false},
{"17.03.0-ce-rc2", "17.03.0-ce-rc1", false},
{"17.03.0-ce-rc1", "18.03.0-ce-rc1", false},
{"17.06.0-ce-rc2", "1.12.0", false},
{"1.12.0", "17.06.0-ce-rc2", false},
{"17.06.0-ce", "1.12.0", false},
}
for _, tc := range cases {
if got := Equal(tc.v1, tc.v2); got != tc.want {
t.Errorf("Equal(%q, %q) == %v, want %v", tc.v1, tc.v2, got, tc.want)
}
}
}

View File

@@ -6,7 +6,7 @@ import (
)
var (
Version = "dev"
Version = "0.12.1"
// GitCommit will be overwritten automatically by the build system
GitCommit = "HEAD"