fix: version path issue (#1344)
Signed-off-by: yxxhero <aiopsclub@163.com>
This commit is contained in:
parent
5da9bc2c1e
commit
43fec2d599
|
|
@ -3568,7 +3568,7 @@ func (st *HelmState) getOCIChart(release *ReleaseSpec, tempDir string, helm helm
|
|||
pathElems = append(pathElems, release.KubeContext)
|
||||
}
|
||||
|
||||
pathElems = append(pathElems, release.Name, chartName, chartVersion)
|
||||
pathElems = append(pathElems, release.Name, chartName, safeVersionPath(chartVersion))
|
||||
|
||||
chartPath := filepath.Join(pathElems...)
|
||||
|
||||
|
|
|
|||
|
|
@ -4,6 +4,7 @@ import (
|
|||
"fmt"
|
||||
"os"
|
||||
"path/filepath"
|
||||
"regexp"
|
||||
"strings"
|
||||
)
|
||||
|
||||
|
|
@ -71,3 +72,10 @@ func getBuildDepsFlags(cpr *chartPrepareResult) []string {
|
|||
|
||||
return flags
|
||||
}
|
||||
|
||||
// safePath returns a clean path
|
||||
func safeVersionPath(version string) string {
|
||||
c := regexp.MustCompile(`=|>|<|!|\||~|\^| |,|\*`)
|
||||
sp := c.ReplaceAll([]byte(version), []byte("_"))
|
||||
return string(sp)
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,6 +1,8 @@
|
|||
package state
|
||||
|
||||
import "testing"
|
||||
import (
|
||||
"testing"
|
||||
)
|
||||
|
||||
func TestIsLocalChart(t *testing.T) {
|
||||
testcases := []struct {
|
||||
|
|
@ -151,3 +153,64 @@ func TestNormalizeChart(t *testing.T) {
|
|||
}
|
||||
}
|
||||
}
|
||||
func TestSafeVersionPath(t *testing.T) {
|
||||
testcases := []struct {
|
||||
input string
|
||||
expected string
|
||||
}{
|
||||
{
|
||||
input: "=1.2.3",
|
||||
expected: "_1.2.3",
|
||||
},
|
||||
{
|
||||
input: ">1.0.0",
|
||||
expected: "_1.0.0",
|
||||
},
|
||||
{
|
||||
input: "<=2.3.4",
|
||||
expected: "__2.3.4",
|
||||
},
|
||||
{
|
||||
input: "!3.4.5",
|
||||
expected: "_3.4.5",
|
||||
},
|
||||
{
|
||||
input: "|4.5.6",
|
||||
expected: "_4.5.6",
|
||||
},
|
||||
{
|
||||
input: "~5.6.7",
|
||||
expected: "_5.6.7",
|
||||
},
|
||||
{
|
||||
input: "^6.7.8",
|
||||
expected: "_6.7.8",
|
||||
},
|
||||
{
|
||||
input: " 7.8.9",
|
||||
expected: "_7.8.9",
|
||||
},
|
||||
{
|
||||
input: ",9.10.11",
|
||||
expected: "_9.10.11",
|
||||
},
|
||||
{
|
||||
input: "<= 1.2.3, >= 1.4",
|
||||
expected: "___1.2.3_____1.4",
|
||||
},
|
||||
{
|
||||
input: "*",
|
||||
expected: "_",
|
||||
},
|
||||
}
|
||||
|
||||
for i := range testcases {
|
||||
testcase := testcases[i]
|
||||
|
||||
actual := safeVersionPath(testcase.input)
|
||||
|
||||
if testcase.expected != actual {
|
||||
t.Errorf("unexpected result: safeVersionPath(\"%s\"): expected=%v, got=%v", testcase.input, testcase.expected, actual)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in New Issue