Skip to content

Commit

Permalink
Add tests for modulemeta and moduleversion
Browse files Browse the repository at this point in the history
  • Loading branch information
Shell32-Natsu committed May 21, 2020
1 parent 2df3a7f commit 909bc25
Show file tree
Hide file tree
Showing 4 changed files with 226 additions and 10 deletions.
2 changes: 1 addition & 1 deletion releasing/releasing/gitrunner.go
Expand Up @@ -104,7 +104,7 @@ func (gr *gitRunner) CheckRemoteExistence(remote string) error {
}
logDebug("Remotes:\n%s", string(stdoutStderr))

regString := fmt.Sprintf("(?m)^%s$", remote)
regString := fmt.Sprintf("(?m)^\\s*%s\\s*$", remote)
reg := regexp.MustCompile(regString)
if !reg.MatchString(string(stdoutStderr)) {
return fmt.Errorf("Cannot find remote named %s", remote)
Expand Down
68 changes: 68 additions & 0 deletions releasing/releasing/modulemeta_test.go
@@ -0,0 +1,68 @@
package main

import (
"testing"
)

func TestModuleTags(t *testing.T) {
tags := `api/v0.1.1
api/v0.2.0
api/v0.3.0
api/v0.3.1
api/v0.3.2
api/v0.3.3
cmd/config/v0.0.1
cmd/config/v0.0.10
cmd/config/v0.0.11
cmd/config/v0.0.12
cmd/config/v0.0.13
cmd/config/v0.0.2
cmd/config/v0.0.3
cmd/config/v0.0.4
cmd/config/v0.0.5
cmd/config/v0.0.6
cmd/config/v0.0.7
cmd/config/v0.0.8
cmd/config/v0.0.9
cmd/config/v0.1.0
cmd/config/v0.1.1
cmd/config/v0.1.10
cmd/config/v0.1.11
cmd/config/v0.1.2
cmd/config/v0.1.3
cmd/config/v0.1.4
cmd/config/v0.1.5
cmd/config/v0.1.6
cmd/config/v0.1.7
cmd/config/v0.1.8
cmd/kubectl/v0.0.1
cmd/kubectl/v0.0.2
cmd/kubectl/v0.0.3
cmd/resource/v0.0.1
cmd/resource/v0.0.2
kstatus/v0.0.1
kustomize/v3.2.1
kustomize/v3.2.2
kustomize/v3.2.3
kustomize/v3.3.0
kustomize/v3.4.0
kustomize/v3.5.1
kustomize/v3.5.2
kustomize/v3.5.3
kustomize/v3.5.4
kustomize/v3.5.5`
expect := "cmd/config/v0.1.11"

m := module{
name: "cmd/config",
}

err := m.UpdateVersion(tags)
if err != nil {
t.Error(err)
}

if m.Tag() != expect {
t.Errorf("Tag %s doesn't match expected %s", m.Tag(), expect)
}
}
22 changes: 13 additions & 9 deletions releasing/releasing/moduleversion.go
Expand Up @@ -34,38 +34,42 @@ func (v *moduleVersion) Bump(t string) error {
return nil
}

func newModuleVersionFromString(vs string) (*moduleVersion, error) {
func newModuleVersionFromString(vs string) (moduleVersion, error) {
v := moduleVersion{}
if len(vs) < 1 {
return nil, fmt.Errorf("Invalid version string %s", vs)
return v, fmt.Errorf("Invalid version string %s", vs)
}
if vs[0] == 'v' {
vs = vs[1:]
}
versions := strings.Split(vs, ".")
if len(versions) != 3 {
return v, fmt.Errorf("Invalid version string %s", vs)
}
major, err := strconv.Atoi(versions[0])
if err != nil {
return nil, err
return v, err
}
minor, err := strconv.Atoi(versions[1])
if err != nil {
return nil, err
return v, err
}
patch, err := strconv.Atoi(versions[2])
if err != nil {
return nil, err
return v, err
}
v := moduleVersion{
v = moduleVersion{
major: major,
minor: minor,
patch: patch,
}

return &v, nil
return v, nil
}

func newModuleVersionFromGitTags(tags, modName string) (moduleVersion, error) {
// Search for module tag
regString := fmt.Sprintf("(?m)^%s/v(\\d+\\.){2}\\d+$", modName)
regString := fmt.Sprintf("(?m)^\\s*%s/v(\\d+\\.){2}\\d+\\s*$", modName)
reg := regexp.MustCompile(regString)
modTagsString := reg.FindAllString(tags, -1)
logDebug("Tags for module %s:\n%s", modName, modTagsString)
Expand All @@ -77,7 +81,7 @@ func newModuleVersionFromGitTags(tags, modName string) (moduleVersion, error) {
return moduleVersion{}, err
}

versions = append(versions, *v)
versions = append(versions, v)
}
// Sort to find latest tag
sort.Slice(versions, func(i, j int) bool {
Expand Down
144 changes: 144 additions & 0 deletions releasing/releasing/moduleversion_test.go
@@ -0,0 +1,144 @@
package main

import (
"testing"
)

func TestVersionFromAndToString(t *testing.T) {
vs := "1.1.1"
expect := "v1.1.1"
v, err := newModuleVersionFromString(vs)
if err != nil {
t.Error(err)
}
if v.String() != expect {
t.Errorf("%s doesn't match expected %s", v.String(), expect)
}

vs = "v0.0.0"
expect = "v0.0.0"
v, err = newModuleVersionFromString(vs)
if err != nil {
t.Error(err)
}
if v.String() != expect {
t.Errorf("%s doesn't match expected %s", v.String(), expect)
}

vs = "v0.0"
v, err = newModuleVersionFromString(vs)
if err == nil {
t.Errorf("%s should be invalid", vs)
}

vs = ""
v, err = newModuleVersionFromString(vs)
if err == nil {
t.Errorf("%s should be invalid", vs)
}
}

func TestVersionFromGitTags(t *testing.T) {
tags := `api/v0.1.1
api/v0.2.0
api/v0.3.0
api/v0.3.1
api/v0.3.2
api/v0.3.3
cmd/config/v0.0.1
cmd/config/v0.0.10
cmd/config/v0.0.11
cmd/config/v0.0.12
cmd/config/v0.0.13
cmd/config/v0.0.2
cmd/config/v0.0.3
cmd/config/v0.0.4
cmd/config/v0.0.5
cmd/config/v0.0.6
cmd/config/v0.0.7
cmd/config/v0.0.8
cmd/config/v0.0.9
cmd/config/v0.1.0
cmd/config/v0.1.1
cmd/config/v0.1.10
cmd/config/v0.1.11
cmd/config/v0.1.2
cmd/config/v0.1.3
cmd/config/v0.1.4
cmd/config/v0.1.5
cmd/config/v0.1.6
cmd/config/v0.1.7
cmd/config/v0.1.8
cmd/kubectl/v0.0.1
cmd/kubectl/v0.0.2
cmd/kubectl/v0.0.3
cmd/resource/v0.0.1
cmd/resource/v0.0.2
kstatus/v0.0.1
kustomize/v3.2.1
kustomize/v3.2.2
kustomize/v3.2.3
kustomize/v3.3.0
kustomize/v3.4.0
kustomize/v3.5.1
kustomize/v3.5.2
kustomize/v3.5.3
kustomize/v3.5.4
kustomize/v3.5.5`
expect := "v0.1.11"

v, err := newModuleVersionFromGitTags(tags, "cmd/config")
if err != nil {
t.Error(err)
}
if v.String() != expect {
t.Errorf("%s doesn't match expected %s", v.String(), expect)
}
}

func TestVersionBumpPatch(t *testing.T) {
v := moduleVersion{0, 1, 1}
expect := "v0.1.2"
err := v.Bump("patch")
if err != nil {
t.Error(err)
}

if v.String() != expect {
t.Errorf("%s doesn't match expected %s", v.String(), expect)
}
}

func TestVersionBumpMinor(t *testing.T) {
v := moduleVersion{0, 1, 1}
expect := "v0.2.0"
err := v.Bump("minor")
if err != nil {
t.Error(err)
}

if v.String() != expect {
t.Errorf("%s doesn't match expected %s", v.String(), expect)
}
}

func TestVersionBumpMajor(t *testing.T) {
v := moduleVersion{0, 1, 1}
expect := "v1.0.0"
err := v.Bump("major")
if err != nil {
t.Error(err)
}

if v.String() != expect {
t.Errorf("%s doesn't match expected %s", v.String(), expect)
}
}

func TestVersionBumpError(t *testing.T) {
v := moduleVersion{}
err := v.Bump("unknown")
if err == nil {
t.Errorf("Invalid bumping type should have error")
}
}

0 comments on commit 909bc25

Please sign in to comment.