mirror of
https://github.com/argoproj/argo-cd.git
synced 2026-02-20 01:28:45 +01:00
101 lines
2.7 KiB
Go
101 lines
2.7 KiB
Go
package main
|
|
|
|
import (
|
|
"testing"
|
|
|
|
"github.com/stretchr/testify/assert"
|
|
)
|
|
|
|
func TestFindPreviousTagRules(t *testing.T) {
|
|
t.Parallel()
|
|
// Sample pulled from git tag --sort=-v:refname output.
|
|
tags := []string{
|
|
"v2.13.0-rc3",
|
|
"v2.13.0-rc2",
|
|
"v2.13.0-rc1",
|
|
"v2.12.5",
|
|
"v2.12.4",
|
|
"v2.12.3",
|
|
"v2.12.2",
|
|
"v2.12.1",
|
|
"v2.12.0-rc5",
|
|
"v2.12.0-rc4",
|
|
"v2.12.0-rc3",
|
|
"v2.12.0-rc2",
|
|
"v2.12.0-rc1",
|
|
"v2.12.0",
|
|
"v2.11.11",
|
|
"v2.11.10",
|
|
"v2.11.9",
|
|
"v2.11.8",
|
|
"v2.11.7",
|
|
"v2.11.6",
|
|
"v2.11.5",
|
|
"v2.11.4",
|
|
"v2.11.3",
|
|
"v2.11.2",
|
|
"v2.11.1",
|
|
"v2.11.0-rc3",
|
|
"v2.11.0-rc2",
|
|
"v2.11.0-rc1",
|
|
"v2.11.0",
|
|
"v2.10.17",
|
|
"v2.10.16",
|
|
"v2.10.15",
|
|
"v2.10.14",
|
|
"v2.10.13",
|
|
"v2.10.12",
|
|
"v2.10.11",
|
|
"v2.10.10",
|
|
"v2.10.9",
|
|
"v2.10.8",
|
|
"v2.10.7",
|
|
"v2.10.6",
|
|
"v2.10.5",
|
|
"v2.10.4",
|
|
"v2.10.3",
|
|
"v2.10.2",
|
|
"v2.10.1",
|
|
"v2.10.0-rc5",
|
|
"v2.10.0-rc4",
|
|
"v2.10.0-rc3",
|
|
"v2.10.0-rc2",
|
|
"v2.10.0-rc1",
|
|
"v2.10.0",
|
|
}
|
|
|
|
tests := []struct {
|
|
name, proposedTag, expected string
|
|
expectError bool
|
|
}{
|
|
// Rule 1: If we're releasing a .0 patch release, get the most recent tag on the previous minor release series.
|
|
{"Rule 1: .0 patch release", "v2.13.0", "v2.12.5", false},
|
|
// Rule 2: If we're releasing a non-0 patch release, get the most recent tag within the same minor release series.
|
|
{"Rule 2: non-0 patch release", "v2.12.6", "v2.12.5", false},
|
|
// Rule 3: If we're releasing a 1 release candidate, get the most recent tag on the previous minor release series.
|
|
{"Rule 3: 1 release candidate", "v2.14.0-rc1", "v2.13.0-rc3", false},
|
|
// Rule 4: If we're releasing a non-1 release candidate, get the most recent rc tag on the current minor release series.
|
|
{"Rule 4: non-1 release candidate", "v2.13.0-rc4", "v2.13.0-rc3", false},
|
|
// Rule 5: If we're releasing a major version RC, get the most recent tag on the previous major release series.
|
|
{"Rule 5: major version RC", "v3.0.0-rc1", "v2.13.0-rc3", false},
|
|
// Rule 6: If we're releasing a major version, get the most recent tag on the previous major release series,
|
|
// even if it's an RC.
|
|
{"Rule 6: major version", "v3.0.0", "v2.13.0-rc3", false},
|
|
// Rule 7: If the proposed tag already exists, don't return it.
|
|
{"Rule 7: proposed tag already exists", "v2.12.5", "v2.12.4", false},
|
|
}
|
|
|
|
for _, test := range tests {
|
|
t.Run(test.name, func(t *testing.T) {
|
|
t.Parallel()
|
|
result, err := findPreviousTag(test.proposedTag, tags)
|
|
if test.expectError {
|
|
assert.Error(t, err)
|
|
} else {
|
|
assert.NoError(t, err)
|
|
assert.Equalf(t, test.expected, result, "for proposed tag %s expected %s but got %s", test.proposedTag, test.expected, result)
|
|
}
|
|
})
|
|
}
|
|
}
|