Files
kubevela/version/version_test.go
Jerrin Francis 3d86ace196 fix(cli): pin scaffolded go.mod to running vela binary's version (#7097)
`vela def init-module` hardcoded `require github.com/oam-dev/kubevela
  v1.9.0` in the generated go.mod. Scaffolded modules pinned the wrong
  SDK whenever the installed vela tool drifted from v1.9.0, forcing users
  to hand-edit go.mod after scaffolding.

  Add version.ModuleRequireVersion() which returns the build-time
  VelaVersion when it is a valid semver and falls back to a pinned
  default for dev builds where VelaVersion is "UNKNOWN" (plain `go
  build`) or "master" (Makefile default) — both invalid semver that
  would otherwise break `go mod tidy` in the scaffolded module.

Signed-off-by: Jerrin Francis <jerrinfrancis7@gmail.com>
2026-04-19 08:51:17 -07:00

96 lines
2.4 KiB
Go

/*
Copyright 2022 The KubeVela Authors.
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/
package version
import (
"testing"
"github.com/hashicorp/go-version"
"github.com/stretchr/testify/assert"
)
func TestIsOfficialKubeVelaVersion(t *testing.T) {
assert.Equal(t, true, IsOfficialKubeVelaVersion("v1.2.3"))
assert.Equal(t, true, IsOfficialKubeVelaVersion("1.2.3"))
assert.Equal(t, true, IsOfficialKubeVelaVersion("v1.2"))
assert.Equal(t, true, IsOfficialKubeVelaVersion("v1.2+myvela"))
assert.Equal(t, false, IsOfficialKubeVelaVersion("v1.-"))
}
func TestGetVersion(t *testing.T) {
version, err := GetOfficialKubeVelaVersion("v1.2.90")
assert.Nil(t, err)
assert.Equal(t, "1.2.90", version)
version, err = GetOfficialKubeVelaVersion("1.2.90")
assert.Nil(t, err)
assert.Equal(t, "1.2.90", version)
version, err = GetOfficialKubeVelaVersion("v1.2+myvela")
assert.Nil(t, err)
assert.Equal(t, "1.2.0", version)
}
func TestModuleRequireVersion(t *testing.T) {
origVersion := VelaVersion
t.Cleanup(func() { VelaVersion = origVersion })
tests := []struct {
name string
set string
want string
}{
{"release build", "v1.10.0", "v1.10.0"},
{"dev build default", "UNKNOWN", defaultModuleRequireVersion},
{"makefile default", "master", defaultModuleRequireVersion},
}
for _, tt := range tests {
t.Run(tt.name, func(t *testing.T) {
VelaVersion = tt.set
assert.Equal(t, tt.want, ModuleRequireVersion())
})
}
}
func TestShouldUseLegacyHelmRepo(t *testing.T) {
tests := []struct {
ver string
want bool
}{
{
ver: "v1.2.0",
want: true,
},
{
ver: "v1.9.0-beta.1",
want: true,
},
{
ver: "v1.9.0-beta.1.post1",
want: false,
},
{
ver: "v1.9.1",
want: false,
},
}
for _, tt := range tests {
t.Run(tt.ver, func(t *testing.T) {
ver := version.Must(version.NewVersion(tt.ver))
assert.Equalf(t, tt.want, ShouldUseLegacyHelmRepo(ver), "ShouldUseLegacyHelmRepo(%v)", tt.ver)
})
}
}