mirror of
https://github.com/ddworken/hishtory.git
synced 2025-02-24 14:31:11 +01:00
Add struct + functions for parsing hishtory versions
This commit is contained in:
parent
eb1bc99a22
commit
6cfbec4823
@ -613,3 +613,32 @@ func deserializeSubmitResponse(t *testing.T, w *httptest.ResponseRecorder) share
|
|||||||
require.NoError(t, json.Unmarshal(w.Body.Bytes(), &submitResponse))
|
require.NoError(t, json.Unmarshal(w.Body.Bytes(), &submitResponse))
|
||||||
return submitResponse
|
return submitResponse
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func TestParseVersionString(t *testing.T) {
|
||||||
|
p, err := parseVersionString("v0.200")
|
||||||
|
require.NoError(t, err)
|
||||||
|
require.Equal(t, parsedVersion{majorVersion: 0, minorVersion: 200}, p)
|
||||||
|
p, err = parseVersionString("v1.200")
|
||||||
|
require.NoError(t, err)
|
||||||
|
require.Equal(t, parsedVersion{majorVersion: 1, minorVersion: 200}, p)
|
||||||
|
p, err = parseVersionString("v1.0")
|
||||||
|
require.NoError(t, err)
|
||||||
|
require.Equal(t, parsedVersion{majorVersion: 1, minorVersion: 0}, p)
|
||||||
|
p, err = parseVersionString("v0.216")
|
||||||
|
require.NoError(t, err)
|
||||||
|
require.Equal(t, parsedVersion{majorVersion: 0, minorVersion: 216}, p)
|
||||||
|
p, err = parseVersionString("v123.456")
|
||||||
|
require.NoError(t, err)
|
||||||
|
require.Equal(t, parsedVersion{majorVersion: 123, minorVersion: 456}, p)
|
||||||
|
}
|
||||||
|
|
||||||
|
func TestVersionLessThan(t *testing.T) {
|
||||||
|
require.False(t, parsedVersion{0, 200}.lessThan(parsedVersion{0, 200}))
|
||||||
|
require.False(t, parsedVersion{1, 200}.lessThan(parsedVersion{1, 200}))
|
||||||
|
require.False(t, parsedVersion{0, 201}.lessThan(parsedVersion{0, 200}))
|
||||||
|
require.False(t, parsedVersion{1, 0}.lessThan(parsedVersion{0, 200}))
|
||||||
|
require.True(t, parsedVersion{0, 199}.lessThan(parsedVersion{0, 200}))
|
||||||
|
require.True(t, parsedVersion{0, 200}.lessThan(parsedVersion{0, 205}))
|
||||||
|
require.True(t, parsedVersion{1, 200}.lessThan(parsedVersion{1, 205}))
|
||||||
|
require.True(t, parsedVersion{0, 200}.lessThan(parsedVersion{1, 1}))
|
||||||
|
}
|
||||||
|
@ -6,6 +6,7 @@ import (
|
|||||||
"net/http"
|
"net/http"
|
||||||
pprofhttp "net/http/pprof"
|
pprofhttp "net/http/pprof"
|
||||||
"os"
|
"os"
|
||||||
|
"regexp"
|
||||||
"runtime"
|
"runtime"
|
||||||
"strconv"
|
"strconv"
|
||||||
|
|
||||||
@ -98,3 +99,35 @@ func checkGormError(err error) {
|
|||||||
_, filename, line, _ := runtime.Caller(1)
|
_, filename, line, _ := runtime.Caller(1)
|
||||||
panic(fmt.Sprintf("DB error at %s:%d: %v", filename, line, err))
|
panic(fmt.Sprintf("DB error at %s:%d: %v", filename, line, err))
|
||||||
}
|
}
|
||||||
|
|
||||||
|
type parsedVersion struct {
|
||||||
|
majorVersion int
|
||||||
|
minorVersion int
|
||||||
|
}
|
||||||
|
|
||||||
|
func (pv parsedVersion) lessThan(other parsedVersion) bool {
|
||||||
|
if pv.majorVersion != other.majorVersion {
|
||||||
|
return pv.majorVersion < other.majorVersion
|
||||||
|
}
|
||||||
|
return pv.minorVersion < other.minorVersion
|
||||||
|
}
|
||||||
|
|
||||||
|
func parseVersionString(versionString string) (parsedVersion, error) {
|
||||||
|
re := regexp.MustCompile(`v(\d+)[.](\d+)`)
|
||||||
|
matches := re.FindAllStringSubmatch(versionString, -1)
|
||||||
|
if len(matches) != 1 {
|
||||||
|
return parsedVersion{}, fmt.Errorf("failed to parse version=%#v (matches=%#v)", versionString, matches)
|
||||||
|
}
|
||||||
|
if len(matches[0]) != 3 {
|
||||||
|
return parsedVersion{}, fmt.Errorf("failed to parse version=%#v (matches[0]=%#v)", versionString, matches[0])
|
||||||
|
}
|
||||||
|
majorVersion, err := strconv.Atoi(matches[0][1])
|
||||||
|
if err != nil {
|
||||||
|
return parsedVersion{}, fmt.Errorf("failed to parse major version %#v", matches[0][1])
|
||||||
|
}
|
||||||
|
minorVersion, err := strconv.Atoi(matches[0][2])
|
||||||
|
if err != nil {
|
||||||
|
return parsedVersion{}, fmt.Errorf("failed to parse minor version %#v", matches[0][2])
|
||||||
|
}
|
||||||
|
return parsedVersion{majorVersion, minorVersion}, nil
|
||||||
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user