fixbug: ChartAndVersion did not handle chart version correct in some case (#98)

* fixbug: ChartAndVersion did not handle chart version correct in some case

https://github.com/komodorio/helm-dashboard/issues/95

* use regexp to get version

* add test case
This commit is contained in:
denganliang
2022-11-15 23:12:07 +08:00
committed by GitHub
parent cf407c63a2
commit 1393b117cf
2 changed files with 38 additions and 7 deletions

View File

@@ -3,13 +3,15 @@ package utils
import (
"bytes"
"errors"
"github.com/gin-gonic/gin"
log "github.com/sirupsen/logrus"
"io/ioutil"
"os"
"os/exec"
"regexp"
"strconv"
"strings"
"github.com/gin-gonic/gin"
log "github.com/sirupsen/logrus"
)
var FailLogLevel = log.WarnLevel // allows to suppress error logging in some situations
@@ -17,12 +19,19 @@ var FailLogLevel = log.WarnLevel // allows to suppress error logging in some sit
type ControlChan = chan struct{}
func ChartAndVersion(x string) (string, string, error) {
lastInd := strings.LastIndex(x, "-")
if lastInd < 0 {
strs := strings.Split(x, "-")
lens := len(strs)
if lens < 2 {
return "", "", errors.New("can't parse chart version string")
} else if lens == 2 {
return strs[0], strs[1], nil
} else {
// semver2 regex , add optional v prefix
re := regexp.MustCompile(`v?(0|[1-9]\d*)\.(0|[1-9]\d*)\.(0|[1-9]\d*)(?:-((?:0|[1-9]\d*|\d*[a-zA-Z-][0-9a-zA-Z-]*)(?:\.(?:0|[1-9]\d*|\d*[a-zA-Z-][0-9a-zA-Z-]*))*))?(?:\+([0-9a-zA-Z-]+(?:\.[0-9a-zA-Z-]+)*))?`)
match := re.FindString(x)
lastInd := strings.LastIndex(x, match)
return x[:lastInd-1], match, nil
}
return x[:lastInd], x[lastInd+1:], nil
}
func TempFile(txt string) (string, func(), error) {

View File

@@ -1,9 +1,10 @@
package utils
import (
"github.com/gin-gonic/gin"
"net/http/httptest"
"testing"
"github.com/gin-gonic/gin"
)
func TestGetQueryProps(t *testing.T) {
@@ -69,6 +70,27 @@ func TestChartAndVersion(t *testing.T) {
wantVer: "1.0.0",
wantError: false,
},
{
name: "Chart and version - successfully parsing chart and version",
params: "chart-v1.0.0",
wantChart: "chart",
wantVer: "v1.0.0",
wantError: false,
},
{
name: "Chart and version - successfully parsing chart and version",
params: "chart-v1.0.0-alpha",
wantChart: "chart",
wantVer: "v1.0.0-alpha",
wantError: false,
},
{
name: "Chart and version - successfully parsing chart and version",
params: "chart-1.0.0-alpha",
wantChart: "chart",
wantVer: "1.0.0-alpha",
wantError: false,
},
{
name: "Chart and version - parsing chart without version",
params: "chart",