refactor tests, avoiding test run dependency & simpler view of testcases

Signed-off-by: Jan Braje <12571346+janluak@users.noreply.github.com>
pull/32402/head
Jan Braje 3 months ago
parent 0574da7415
commit ff7ddedc55
No known key found for this signature in database
GPG Key ID: AA98A2FCFE70D0C9

@ -33,340 +33,183 @@ func TestNewBump(t *testing.T) {
require.Equal(t, cfg, client.cfg) require.Equal(t, cfg, client.cfg)
} }
func TestBump_Run_Major(t *testing.T) { func TestBump_Run(t *testing.T) {
t.Parallel() type variant struct {
name string
cfg := actionConfigFixture(t) bumpType string
client := NewBump(cfg) wantVersion string
client.chart = &chart.Chart{
Metadata: &chart.Metadata{Name: "test"},
} }
tests := []struct {
t.Run("Major bump with valid version", func(t *testing.T) { originVersion string
client.chart.Metadata.Version = "1.2.3" variant []variant
result, err := client.Run("major", "") wantErr bool
require.NoError(t, err) }{
require.Equal(t, "2.0.0", result) {
}) originVersion: "1.2.3",
variant: []variant{
t.Run("Major bump with invalid version", func(t *testing.T) { {name: "Major bump with valid version", bumpType: "major", wantVersion: "2.0.0"},
client.chart.Metadata.Version = "1.2" {name: "Minor bump with valid version", bumpType: "minor", wantVersion: "1.3.0"},
result, err := client.Run("major", "") {name: "Patch bump with valid version", bumpType: "patch", wantVersion: "1.2.4"},
require.Error(t, err) {name: "Dev bump with valid version", bumpType: "dev", wantVersion: "1.2.3-dev.1"},
require.Empty(t, result) {name: "RC bump with valid version", bumpType: "rc", wantVersion: "1.2.3-rc.1"},
}) {name: "Alpha bump with valid version", bumpType: "alpha", wantVersion: "1.2.3-alpha.1"},
{name: "Post bump with valid version", bumpType: "post", wantVersion: "1.2.3-post.1"},
t.Run("Major bump with invalid major version", func(t *testing.T) { {name: "Explicit version", bumpType: "2.0.1", wantVersion: "2.0.1"},
client.chart.Metadata.Version = "1.2.a" {name: "Explicit version", bumpType: "1.8.9-post.1", wantVersion: "1.8.9-post.1"},
result, err := client.Run("major", "") },
require.Error(t, err) wantErr: false,
require.Empty(t, result) },
}) {
} originVersion: "1.2",
variant: []variant{
func TestBump_Run_Minor(t *testing.T) { {name: "Major bump with invalid version", bumpType: "major", wantVersion: ""},
t.Parallel() {name: "Minor bump with invalid version", bumpType: "minor", wantVersion: ""},
{name: "Patch bump with invalid version", bumpType: "patch", wantVersion: ""},
cfg := actionConfigFixture(t) {name: "Dev bump with invalid version", bumpType: "dev", wantVersion: ""},
client := NewBump(cfg) {name: "Beta bump with invalid version", bumpType: "beta", wantVersion: ""},
client.chart = &chart.Chart{ {name: "RC bump with invalid version", bumpType: "rc", wantVersion: ""},
Metadata: &chart.Metadata{Name: "test"}, {name: "Post bump with invalid version", bumpType: "post", wantVersion: ""},
},
wantErr: true,
},
{
originVersion: "1.2.a",
variant: []variant{
{name: "Major bump with invalid version", bumpType: "major", wantVersion: ""},
{name: "Minor bump with invalid version", bumpType: "minor", wantVersion: ""},
{name: "Patch bump with invalid version", bumpType: "patch", wantVersion: ""},
{name: "Dev bump with invalid version", bumpType: "dev", wantVersion: ""},
{name: "Beta bump with invalid version", bumpType: "beta", wantVersion: ""},
{name: "RC bump with invalid version", bumpType: "rc", wantVersion: ""},
{name: "Post bump with invalid version", bumpType: "post", wantVersion: ""},
},
wantErr: true,
},
{
originVersion: "1.a.3",
variant: []variant{
{name: "Major bump with invalid version", bumpType: "major", wantVersion: ""},
{name: "Minor bump with invalid version", bumpType: "minor", wantVersion: ""},
{name: "Patch bump with invalid version", bumpType: "patch", wantVersion: ""},
{name: "Dev bump with invalid version", bumpType: "dev", wantVersion: ""},
{name: "Beta bump with invalid version", bumpType: "beta", wantVersion: ""},
{name: "RC bump with invalid version", bumpType: "rc", wantVersion: ""},
{name: "Post bump with invalid version", bumpType: "post", wantVersion: ""},
{name: "Explicit version", bumpType: "2.0.1", wantVersion: ""},
{name: "Explicit version", bumpType: "1.8.9-post.1", wantVersion: ""},
},
wantErr: true,
},
{
originVersion: "1.2.3-alpha",
variant: []variant{
{name: "Stable bump with pre-release version", bumpType: "stable", wantVersion: "1.2.3"},
{name: "Alpha bump with pre-release version", bumpType: "alpha", wantVersion: "1.2.3-alpha.1"},
},
wantErr: false,
},
{
originVersion: "1.2.3-alpha.1",
variant: []variant{
{name: "Stable bump with pre-release version", bumpType: "stable", wantVersion: "1.2.3"},
{name: "Alpha bump with pre-release version", bumpType: "alpha", wantVersion: "1.2.3-alpha.2"},
{name: "Explicit version", bumpType: "2.0.1", wantVersion: "2.0.1"},
{name: "Explicit version", bumpType: "1.8.9-post.1", wantVersion: "1.8.9-post.1"},
},
wantErr: false,
},
{
originVersion: "1.2.3-beta",
variant: []variant{
{name: "Stable bump with pre-release version", bumpType: "stable", wantVersion: "1.2.3"},
{name: "Beta bump with pre-release version", bumpType: "beta", wantVersion: "1.2.3-beta.1"},
},
wantErr: false,
},
{
originVersion: "1.2.3-beta.1",
variant: []variant{
{name: "Stable bump with pre-release version", bumpType: "stable", wantVersion: "1.2.3"},
{name: "Beta bump with pre-release version", bumpType: "beta", wantVersion: "1.2.3-beta.2"},
{name: "Explicit version", bumpType: "2.0.1", wantVersion: "2.0.1"},
},
wantErr: false,
},
{
originVersion: "1.2.3-rc",
variant: []variant{
{name: "Stable bump with pre-release version", bumpType: "stable", wantVersion: "1.2.3"},
{name: "RC bump with pre-release version", bumpType: "rc", wantVersion: "1.2.3-rc.1"},
},
wantErr: false,
},
{
originVersion: "1.2.3-rc.1",
variant: []variant{
{name: "Stable bump with pre-release version", bumpType: "stable", wantVersion: "1.2.3"},
{name: "Rc bump with pre-release version", bumpType: "rc", wantVersion: "1.2.3-rc.2"},
{name: "Explicit version", bumpType: "1.8.9-post.1", wantVersion: "1.8.9-post.1"},
},
wantErr: false,
},
{
originVersion: "1.2.3-post",
variant: []variant{
{name: "Stable bump with pre-release version", bumpType: "stable", wantVersion: "1.2.3"},
{name: "Post bump with pre-release version", bumpType: "post", wantVersion: "1.2.3-post.1"},
},
wantErr: false,
},
{
originVersion: "1.2.3-post.1",
variant: []variant{
{name: "Stable bump with pre-release version", bumpType: "stable", wantVersion: "1.2.3"},
{name: "RC bump with pre-release version", bumpType: "post", wantVersion: "1.2.3-post.2"},
{name: "Explicit version", bumpType: "2.0.1", wantVersion: "2.0.1"},
},
wantErr: false,
},
{
originVersion: "1.2.3-dev",
variant: []variant{
{name: "Stable bump with pre-release version", bumpType: "stable", wantVersion: "1.2.3"},
{name: "Dev bump with pre-release version", bumpType: "dev", wantVersion: "1.2.3-dev.1"},
{name: "Explicit version", bumpType: "2.0.1", wantVersion: "2.0.1"},
},
wantErr: false,
},
{
originVersion: "1.2.3-dev.1",
variant: []variant{
{name: "Stable bump with pre-release version", bumpType: "stable", wantVersion: "1.2.3"},
{name: "Dev bump with pre-release version", bumpType: "dev", wantVersion: "1.2.3-dev.2"},
{name: "Explicit version", bumpType: "2.0.1", wantVersion: "2.0.1"},
{name: "Explicit version", bumpType: "1.8.9-post.1", wantVersion: "1.8.9-post.1"},
},
wantErr: false,
},
} }
for _, tt := range tests {
t.Run("Minor bump with valid version", func(t *testing.T) { for _, v := range tt.variant {
client.chart.Metadata.Version = "1.2.3" t.Run(v.name, func(t *testing.T) {
result, err := client.Run("minor", "") cfg := actionConfigFixture(t)
require.NoError(t, err) client := NewBump(cfg)
require.Equal(t, "1.3.0", result) client.chart = &chart.Chart{
}) Metadata: &chart.Metadata{Name: "test", Version: tt.originVersion},
}
t.Run("Minor bump with invalid version", func(t *testing.T) {
client.chart.Metadata.Version = "1.2" result, err := client.Run(v.bumpType, "")
result, err := client.Run("minor", "") if tt.wantErr {
require.Error(t, err) require.Error(t, err)
require.Empty(t, result) require.Empty(t, result)
}) } else {
require.NoError(t, err)
t.Run("Minor bump with invalid minor version", func(t *testing.T) { require.Equal(t, v.wantVersion, result)
client.chart.Metadata.Version = "1.a.3" }
result, err := client.Run("minor", "") })
require.Error(t, err) }
require.Empty(t, result)
})
}
func TestBump_Run_Patch(t *testing.T) {
t.Parallel()
cfg := actionConfigFixture(t)
client := NewBump(cfg)
client.chart = &chart.Chart{
Metadata: &chart.Metadata{Name: "test"},
} }
t.Run("Patch bump with valid version", func(t *testing.T) {
client.chart.Metadata.Version = "1.2.3"
result, err := client.Run("patch", "")
require.NoError(t, err)
require.Equal(t, "1.2.4", result)
})
t.Run("Patch bump with invalid version", func(t *testing.T) {
client.chart.Metadata.Version = "1.2"
result, err := client.Run("patch", "")
require.Error(t, err)
require.Empty(t, result)
})
t.Run("Patch bump with invalid patch version", func(t *testing.T) {
client.chart.Metadata.Version = "1.2.a"
result, err := client.Run("patch", "")
require.Error(t, err)
require.Empty(t, result)
})
}
func TestBump_Run_Stable(t *testing.T) {
t.Parallel()
cfg := actionConfigFixture(t)
client := NewBump(cfg)
client.chart = &chart.Chart{
Metadata: &chart.Metadata{Name: "test"},
}
t.Run("Stable bump with pre-release version", func(t *testing.T) {
client.chart.Metadata.Version = "1.2.3-alpha"
result, err := client.Run("stable", "")
require.NoError(t, err)
require.Equal(t, "1.2.3", result)
})
t.Run("Stable bump with pre-release version with number", func(t *testing.T) {
client.chart.Metadata.Version = "1.2.3-alpha.1"
result, err := client.Run("stable", "")
require.NoError(t, err)
require.Equal(t, "1.2.3", result)
})
t.Run("Stable bump with invalid version format", func(t *testing.T) {
client.chart.Metadata.Version = "1.2"
result, err := client.Run("stable", "")
require.Error(t, err)
require.Empty(t, result)
})
}
func TestBump_Run_Alpha(t *testing.T) {
t.Parallel()
cfg := actionConfigFixture(t)
client := NewBump(cfg)
client.chart = &chart.Chart{
Metadata: &chart.Metadata{Name: "test"},
}
t.Run("Alpha bump with version without pre-release", func(t *testing.T) {
client.chart.Metadata.Version = "1.2.3"
result, err := client.Run("alpha", "")
require.NoError(t, err)
require.Equal(t, "1.2.3-alpha.1", result)
})
t.Run("Alpha bump with version with pre-release", func(t *testing.T) {
client.chart.Metadata.Version = "1.2.3-alpha"
result, err := client.Run("alpha", "")
require.NoError(t, err)
require.Equal(t, "1.2.3-alpha.1", result)
})
t.Run("Alpha bump with version with pre-release number", func(t *testing.T) {
client.chart.Metadata.Version = "1.2.3-alpha.1"
result, err := client.Run("alpha", "")
require.NoError(t, err)
require.Equal(t, "1.2.3-alpha.2", result)
})
t.Run("Alpha bump with invalid version format", func(t *testing.T) {
client.chart.Metadata.Version = "1.2"
result, err := client.Run("alpha", "")
require.Error(t, err)
require.Empty(t, result)
})
}
func TestBump_Run_Beta(t *testing.T) {
t.Parallel()
cfg := actionConfigFixture(t)
client := NewBump(cfg)
client.chart = &chart.Chart{
Metadata: &chart.Metadata{Name: "test"},
}
t.Run("Beta bump with version without pre-release", func(t *testing.T) {
client.chart.Metadata.Version = "1.2.3"
result, err := client.Run("beta", "")
require.NoError(t, err)
require.Equal(t, "1.2.3-beta.1", result)
})
t.Run("Beta bump with version with pre-release", func(t *testing.T) {
client.chart.Metadata.Version = "1.2.3-beta"
result, err := client.Run("beta", "")
require.NoError(t, err)
require.Equal(t, "1.2.3-beta.1", result)
})
t.Run("Beta bump with version with pre-release number", func(t *testing.T) {
client.chart.Metadata.Version = "1.2.3-beta.1"
result, err := client.Run("beta", "")
require.NoError(t, err)
require.Equal(t, "1.2.3-beta.2", result)
})
t.Run("Beta bump with invalid version format", func(t *testing.T) {
client.chart.Metadata.Version = "1.2"
result, err := client.Run("beta", "")
require.Error(t, err)
require.Empty(t, result)
})
}
func TestBump_Run_RC(t *testing.T) {
t.Parallel()
cfg := actionConfigFixture(t)
client := NewBump(cfg)
client.chart = &chart.Chart{
Metadata: &chart.Metadata{Name: "test"},
}
t.Run("RC bump with version without pre-release", func(t *testing.T) {
client.chart.Metadata.Version = "1.2.3"
result, err := client.Run("rc", "")
require.NoError(t, err)
require.Equal(t, "1.2.3-rc.1", result)
})
t.Run("RC bump with version with pre-release", func(t *testing.T) {
client.chart.Metadata.Version = "1.2.3-rc"
result, err := client.Run("rc", "")
require.NoError(t, err)
require.Equal(t, "1.2.3-rc.1", result)
})
t.Run("RC bump with version with pre-release number", func(t *testing.T) {
client.chart.Metadata.Version = "1.2.3-rc.1"
result, err := client.Run("rc", "")
require.NoError(t, err)
require.Equal(t, "1.2.3-rc.2", result)
})
t.Run("RC bump with invalid version format", func(t *testing.T) {
client.chart.Metadata.Version = "1.2"
result, err := client.Run("rc", "")
require.Error(t, err)
require.Empty(t, result)
})
}
func TestBump_Run_Post(t *testing.T) {
t.Parallel()
cfg := actionConfigFixture(t)
client := NewBump(cfg)
client.chart = &chart.Chart{
Metadata: &chart.Metadata{Name: "test"},
}
t.Run("Post bump with version without pre-release", func(t *testing.T) {
client.chart.Metadata.Version = "1.2.3"
result, err := client.Run("post", "")
require.NoError(t, err)
require.Equal(t, "1.2.3-post.1", result)
})
t.Run("Post bump with version with post-release", func(t *testing.T) {
client.chart.Metadata.Version = "1.2.3-post"
result, err := client.Run("post", "")
require.NoError(t, err)
require.Equal(t, "1.2.3-post.1", result)
})
t.Run("Post bump with version with pre-release number", func(t *testing.T) {
client.chart.Metadata.Version = "1.2.3-post.1"
result, err := client.Run("post", "")
require.NoError(t, err)
require.Equal(t, "1.2.3-post.2", result)
})
t.Run("Post bump with invalid version format", func(t *testing.T) {
client.chart.Metadata.Version = "1.2"
result, err := client.Run("post", "")
require.Error(t, err)
require.Empty(t, result)
})
}
func TestBump_Run_Dev(t *testing.T) {
t.Parallel()
cfg := actionConfigFixture(t)
client := NewBump(cfg)
client.chart = &chart.Chart{
Metadata: &chart.Metadata{Name: "test"},
}
t.Run("Dev bump with version without pre-release", func(t *testing.T) {
client.chart.Metadata.Version = "1.2.3"
result, err := client.Run("dev", "")
require.NoError(t, err)
require.Equal(t, "1.2.3-dev.1", result)
})
t.Run("Dev bump with version with pre-release", func(t *testing.T) {
client.chart.Metadata.Version = "1.2.3-dev"
result, err := client.Run("dev", "")
require.NoError(t, err)
require.Equal(t, "1.2.3-dev.1", result)
})
t.Run("Dev bump with version with pre-release number", func(t *testing.T) {
client.chart.Metadata.Version = "1.2.3-dev.1"
result, err := client.Run("dev", "")
require.NoError(t, err)
require.Equal(t, "1.2.3-dev.2", result)
})
t.Run("Dev bump with invalid version format", func(t *testing.T) {
client.chart.Metadata.Version = "1.2"
result, err := client.Run("dev", "")
require.Error(t, err)
require.Empty(t, result)
})
}
func TestBump_Run_ExplicitVersion(t *testing.T) {
t.Parallel()
cfg := actionConfigFixture(t)
client := NewBump(cfg)
client.chart = &chart.Chart{
Metadata: &chart.Metadata{Name: "test"},
}
t.Run("Explicit version with valid format", func(t *testing.T) {
client.chart.Metadata.Version = "1.2.3"
result, err := client.Run("2.0.1", "")
require.NoError(t, err)
require.Equal(t, "2.0.1", result)
})
t.Run("Explicit version with post version", func(t *testing.T) {
client.chart.Metadata.Version = "1.2.3"
result, err := client.Run("1.5.3-post.1", "")
require.NoError(t, err)
require.Equal(t, "1.5.3-post.1", result)
})
} }

@ -16,6 +16,7 @@ limitations under the License.
package cmd package cmd
import ( import (
"fmt"
"io" "io"
"os" "os"
"path/filepath" "path/filepath"
@ -23,51 +24,62 @@ import (
) )
func TestBump(t *testing.T) { func TestBump(t *testing.T) {
tempChartDir := t.TempDir()
testChartFile := filepath.Join("testdata", "testcharts", "empty", "Chart.yaml")
destFile := filepath.Join(tempChartDir, "Chart.yaml")
srcFile, err := os.Open(testChartFile)
if err != nil {
t.Fatalf("error on opening test file: %v", err)
}
defer srcFile.Close()
destFileHandle, err := os.Create(destFile)
if err != nil {
t.Fatalf("error on creating test file: %v", err)
}
_, err = io.Copy(destFileHandle, srcFile)
if err != nil {
t.Fatalf("error on copying test file: %v", err)
}
if err := destFileHandle.Close(); err != nil {
t.Fatalf("error on closing test file: %v", err)
}
tests := []cmdTestCase{{ tests := []cmdTestCase{{
name: "no args", name: "no args",
cmd: "bump", cmd: "bump",
wantError: true, wantError: true,
}, { }, {
name: "default", name: "default",
cmd: "bump " + tempChartDir, cmd: "bump %s",
golden: "output/bump-default.txt", golden: "output/bump-default.txt",
}, { }, {
name: "patch", name: "patch",
cmd: "bump patch " + tempChartDir, cmd: "bump patch %s",
golden: "output/bump-patch.txt", golden: "output/bump-patch.txt",
}, { }, {
name: "with bump type", name: "with bump type",
cmd: "bump minor " + tempChartDir, cmd: "bump minor %s",
golden: "output/bump-minor.txt", golden: "output/bump-minor.txt",
}, { }, {
name: "with explicit version", name: "with explicit version",
cmd: "bump 2.0.0 " + tempChartDir, cmd: "bump 2.0.0 %s",
golden: "output/bump-explicit.txt", golden: "output/bump-explicit.txt",
}} }}
runTestCmd(t, tests)
// Run tests with a fresh copy of test chart for each test case
for _, tc := range tests {
t.Run(tc.name, func(t *testing.T) {
tempChartDir := t.TempDir()
testChartFile := filepath.Join("testdata", "testcharts", "empty", "Chart.yaml")
destFile := filepath.Join(tempChartDir, "Chart.yaml")
srcFile, err := os.Open(testChartFile)
if err != nil {
t.Fatalf("error on opening test file: %v", err)
}
defer srcFile.Close()
destFileHandle, err := os.Create(destFile)
if err != nil {
t.Fatalf("error on creating test file: %v", err)
}
_, err = io.Copy(destFileHandle, srcFile)
if err != nil {
t.Fatalf("error on copying test file: %v", err)
}
if err := destFileHandle.Close(); err != nil {
t.Fatalf("error on closing test file: %v", err)
}
// Run the test case with updated command
testCase := cmdTestCase{
name: tc.name,
cmd: fmt.Sprintf(tc.cmd, tempChartDir),
golden: tc.golden,
wantError: tc.wantError,
}
runTestCmd(t, []cmdTestCase{testCase})
})
}
} }

@ -1 +1 @@
changed chart version to "0.1.2" changed chart version to "0.1.1"

Loading…
Cancel
Save