diff --git a/pkg/commands/artifact/run.go b/pkg/commands/artifact/run.go index 07addfc3ea1..539807884cd 100644 --- a/pkg/commands/artifact/run.go +++ b/pkg/commands/artifact/run.go @@ -3,6 +3,7 @@ package artifact import ( "context" "errors" + "fmt" "os" "github.com/hashicorp/go-multierror" @@ -564,7 +565,6 @@ func canonicalVersion(ver string) string { if v.IsPreRelease() || v.Metadata() != "" { return devVersion } - - // Add "v" prefix, "0.34.0" => "v0.34.0" for the url - return "v" + ver + // Add "v" prefix and cut a patch number, "0.34.0" => "v0.34" for the url + return fmt.Sprintf("v%d.%d", v.Major(), v.Minor()) } diff --git a/pkg/commands/artifact/run_test.go b/pkg/commands/artifact/run_test.go new file mode 100644 index 00000000000..02d35a53d44 --- /dev/null +++ b/pkg/commands/artifact/run_test.go @@ -0,0 +1,48 @@ +package artifact + +import ( + "testing" + + "github.com/stretchr/testify/require" +) + +func TestCanonicalVersion(t *testing.T) { + tests := []struct { + title string + input string + want string + }{ + { + title: "good way", + input: "0.34.0", + want: "v0.34", + }, + { + title: "version with v - isn't right semver version", + input: "v0.34.0", + want: devVersion, + }, + { + title: "dev version", + input: devVersion, + want: devVersion, + }, + { + title: "pre-release", + input: "v0.34.0-beta1+snapshot-1", + want: devVersion, + }, + { + title: "no version", + input: "", + want: devVersion, + }, + } + + for _, test := range tests { + t.Run(test.title, func(t *testing.T) { + got := canonicalVersion(test.input) + require.Equal(t, test.want, got) + }) + } +}