mirror of
https://github.com/kubernetes-sigs/kustomize.git
synced 2026-06-12 01:14:22 +00:00
Refactoring and Table tests
This commit is contained in:
@@ -7,110 +7,105 @@ import (
|
||||
"testing"
|
||||
|
||||
"github.com/stretchr/testify/assert"
|
||||
"sigs.k8s.io/kustomize/kyaml/errors"
|
||||
"sigs.k8s.io/kustomize/kyaml/setters2"
|
||||
)
|
||||
|
||||
func TestGetValuesForMarkersPositive(t *testing.T) {
|
||||
c := SubstitutionCreator{
|
||||
Pattern: "something/IMAGE::VERSION/otherthing/IMAGE::VERSION/",
|
||||
Values: Values(),
|
||||
FieldValue: "something/nginx::0.1.0/otherthing/nginx::0.1.0/",
|
||||
func TestGetValuesForMarkers(t *testing.T) {
|
||||
var tests = []struct {
|
||||
name string
|
||||
pattern string
|
||||
fieldValue string
|
||||
markers []string
|
||||
expectedError error
|
||||
expectedOutput map[string]string
|
||||
}{
|
||||
{
|
||||
name: "positive example",
|
||||
markers: []string{"IMAGE", "VERSION"},
|
||||
pattern: "something/IMAGE::VERSION/otherthing/IMAGE::VERSION/",
|
||||
fieldValue: "something/nginx::0.1.0/otherthing/nginx::0.1.0/",
|
||||
expectedOutput: map[string]string{"IMAGE": "nginx", "VERSION": "0.1.0"},
|
||||
},
|
||||
{
|
||||
name: "marker with different values",
|
||||
markers: []string{"IMAGE", "VERSION"},
|
||||
pattern: "something/IMAGE:VERSION/IMAGE",
|
||||
fieldValue: "something/nginx:0.1.0/ubuntu",
|
||||
expectedError: errors.Errorf("marker IMAGE is found to have different values nginx and ubuntu"),
|
||||
},
|
||||
{
|
||||
name: "unmatched pattern",
|
||||
markers: []string{"IMAGE", "VERSION"},
|
||||
pattern: "something/IMAGE:VERSION",
|
||||
fieldValue: "otherthing/nginx:0.1.0",
|
||||
expectedError: errors.Errorf("unable to derive values for markers"),
|
||||
},
|
||||
{
|
||||
name: "unmatched pattern at the end",
|
||||
markers: []string{"IMAGE", "VERSION"},
|
||||
pattern: "something/IMAGE:VERSION/abc",
|
||||
fieldValue: "something/nginx:0.1.0/abcd",
|
||||
expectedError: errors.Errorf("unable to derive values for markers"),
|
||||
},
|
||||
{
|
||||
name: "substring markers",
|
||||
markers: []string{"IMAGE", "VERSION", "MAGE"},
|
||||
pattern: "something/IMAGE:VERSION/abc/MAGE",
|
||||
fieldValue: "something/nginx:0.1.0/abc/ubuntu",
|
||||
expectedError: errors.Errorf("no marker should be substring of other"),
|
||||
},
|
||||
{
|
||||
name: "markers with no delimiters",
|
||||
markers: []string{"IMAGE", "VERSION"},
|
||||
pattern: "something/IMAGEVERSION/",
|
||||
fieldValue: "something/nginx0.1.0/",
|
||||
expectedError: errors.Errorf("no delimiters between them"),
|
||||
},
|
||||
{
|
||||
name: "unmatched delimiter",
|
||||
markers: []string{"IMAGE", "VERSION"},
|
||||
pattern: "something/IMAGE:^VERSION/otherthing/IMAGE::VERSION/",
|
||||
fieldValue: "something/nginx::0.1.0/otherthing/nginx::0.1.0/",
|
||||
expectedError: errors.Errorf("unable to derive values for markers"),
|
||||
},
|
||||
}
|
||||
for i := range tests {
|
||||
test := tests[i]
|
||||
t.Run(test.name, func(t *testing.T) {
|
||||
values := []setters2.Value{}
|
||||
for _, marker := range test.markers {
|
||||
value := setters2.Value{
|
||||
Marker: marker,
|
||||
}
|
||||
values = append(values, value)
|
||||
}
|
||||
|
||||
m, err := c.GetValuesForMarkers()
|
||||
sc := SubstitutionCreator{
|
||||
Pattern: test.pattern,
|
||||
Values: values,
|
||||
FieldValue: test.fieldValue,
|
||||
}
|
||||
|
||||
if !assert.NoError(t, err) {
|
||||
t.FailNow()
|
||||
}
|
||||
m, err := sc.GetValuesForMarkers()
|
||||
|
||||
assert.Equal(t, m["IMAGE"], "nginx")
|
||||
assert.Equal(t, m["VERSION"], "0.1.0")
|
||||
}
|
||||
|
||||
func TestGetValuesForMarkersDiffMarkerValues(t *testing.T) {
|
||||
c := SubstitutionCreator{
|
||||
Pattern: "something/IMAGE:VERSION/IMAGE",
|
||||
Values: Values(),
|
||||
FieldValue: "something/nginx:0.1.0/ubuntu",
|
||||
}
|
||||
|
||||
_, err := c.GetValuesForMarkers()
|
||||
|
||||
if !assert.Error(t, err) {
|
||||
t.FailNow()
|
||||
}
|
||||
|
||||
if !assert.Equal(t, err.Error(), "same marker is found to have different values in field value") {
|
||||
t.FailNow()
|
||||
if test.expectedError == nil {
|
||||
// fail if expectedError is nil but actual error is not
|
||||
if !assert.NoError(t, err) {
|
||||
t.FailNow()
|
||||
}
|
||||
// check if all the expected markers and values are present in actual map
|
||||
for k, v := range test.expectedOutput {
|
||||
if val, ok := m[k]; ok {
|
||||
assert.Equal(t, v, val)
|
||||
} else {
|
||||
t.FailNow()
|
||||
}
|
||||
}
|
||||
} else {
|
||||
//if expectedError is not nil, check for correctness of error message
|
||||
assert.Contains(t, err.Error(), test.expectedError.Error())
|
||||
}
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
func TestGetValuesForMarkersNoMatch(t *testing.T) {
|
||||
c := SubstitutionCreator{
|
||||
Pattern: "something/IMAGE:VERSION",
|
||||
Values: Values(),
|
||||
FieldValue: "otherthing/nginx:0.1.0",
|
||||
}
|
||||
|
||||
_, err := c.GetValuesForMarkers()
|
||||
|
||||
if !assert.Error(t, err) {
|
||||
t.FailNow()
|
||||
}
|
||||
|
||||
if !assert.Equal(t, err.Error(), "unable to derive values for markers, create setters for all markers and then try again") {
|
||||
t.FailNow()
|
||||
}
|
||||
}
|
||||
|
||||
func TestGetValuesForMarkersNoMatch2(t *testing.T) {
|
||||
c := SubstitutionCreator{
|
||||
Pattern: "something/IMAGE:VERSION/abc",
|
||||
Values: Values(),
|
||||
FieldValue: "something/nginx:0.1.0/abcd",
|
||||
}
|
||||
|
||||
_, err := c.GetValuesForMarkers()
|
||||
|
||||
if !assert.Error(t, err) {
|
||||
t.FailNow()
|
||||
}
|
||||
|
||||
if !assert.Equal(t, err.Error(), "unable to derive values for markers, create setters for all markers and then try again") {
|
||||
t.FailNow()
|
||||
}
|
||||
}
|
||||
|
||||
func TestGetValuesForMarkersSubStngMarkers(t *testing.T) {
|
||||
value3 := setters2.Value{
|
||||
Marker: "MAGE",
|
||||
}
|
||||
|
||||
c := SubstitutionCreator{
|
||||
Pattern: "something/IMAGE:VERSION/abc/MAGE",
|
||||
Values: append(Values(), value3),
|
||||
FieldValue: "something/nginx:0.1.0/abc/ubuntu",
|
||||
}
|
||||
|
||||
m, err := c.GetValuesForMarkers()
|
||||
|
||||
if !assert.NoError(t, err) {
|
||||
t.FailNow()
|
||||
}
|
||||
|
||||
assert.Equal(t, m["IMAGE"], "nginx")
|
||||
assert.Equal(t, m["VERSION"], "0.1.0")
|
||||
assert.Equal(t, m["MAGE"], "ubuntu")
|
||||
}
|
||||
|
||||
func Values() []setters2.Value {
|
||||
value1 := setters2.Value{
|
||||
Marker: "IMAGE",
|
||||
}
|
||||
|
||||
value2 := setters2.Value{
|
||||
Marker: "VERSION",
|
||||
}
|
||||
|
||||
return []setters2.Value{value1, value2}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user