github.skymusic.top/goreleaser/goreleaser@v0.92.0/pkg/config/config_array_test.go (about) 1 package config 2 3 import ( 4 "testing" 5 6 "github.com/stretchr/testify/assert" 7 "gopkg.in/yaml.v2" 8 ) 9 10 type Unmarshaled struct { 11 Strings StringArray `yaml:",omitempty"` 12 Flags FlagArray `yaml:",omitempty"` 13 } 14 15 type yamlUnmarshalTestCase struct { 16 yaml string 17 expected Unmarshaled 18 err string 19 } 20 21 var stringArrayTests = []yamlUnmarshalTestCase{ 22 { 23 "", 24 Unmarshaled{}, 25 "", 26 }, 27 { 28 "strings: []", 29 Unmarshaled{ 30 Strings: StringArray{}, 31 }, 32 "", 33 }, 34 { 35 "strings: [one two, three]", 36 Unmarshaled{ 37 Strings: StringArray{"one two", "three"}, 38 }, 39 "", 40 }, 41 { 42 "strings: one two", 43 Unmarshaled{ 44 Strings: StringArray{"one two"}, 45 }, 46 "", 47 }, 48 { 49 "strings: {key: val}", 50 Unmarshaled{}, 51 "yaml: unmarshal errors:\n line 1: cannot unmarshal !!map into string", 52 }, 53 } 54 55 var flagArrayTests = []yamlUnmarshalTestCase{ 56 { 57 "", 58 Unmarshaled{}, 59 "", 60 }, 61 { 62 "flags: []", 63 Unmarshaled{ 64 Flags: FlagArray{}, 65 }, 66 "", 67 }, 68 { 69 "flags: [one two, three]", 70 Unmarshaled{ 71 Flags: FlagArray{"one two", "three"}, 72 }, 73 "", 74 }, 75 { 76 "flags: one two", 77 Unmarshaled{ 78 Flags: FlagArray{"one", "two"}, 79 }, 80 "", 81 }, 82 { 83 "flags: {key: val}", 84 Unmarshaled{}, 85 "yaml: unmarshal errors:\n line 1: cannot unmarshal !!map into string", 86 }, 87 } 88 89 func TestStringArray(t *testing.T) { 90 for _, testCase := range stringArrayTests { 91 var actual Unmarshaled 92 93 err := yaml.UnmarshalStrict([]byte(testCase.yaml), &actual) 94 if testCase.err == "" { 95 assert.NoError(t, err) 96 assert.Equal(t, testCase.expected, actual) 97 } else { 98 assert.EqualError(t, err, testCase.err) 99 } 100 } 101 } 102 103 // func TestStringArrayFailure(t *testing.T) { 104 // var source = ` 105 // strings: 106 // key: val 107 // ` 108 109 // var actual Unmarshaled 110 // err := yaml.UnmarshalStrict([]byte(source), &actual) 111 // // assert.EqualError(t, err, ) 112 // } 113 114 func TestFlagArray(t *testing.T) { 115 for _, testCase := range flagArrayTests { 116 var actual Unmarshaled 117 118 err := yaml.UnmarshalStrict([]byte(testCase.yaml), &actual) 119 if testCase.err == "" { 120 assert.NoError(t, err) 121 } else { 122 assert.EqualError(t, err, testCase.err) 123 } 124 assert.Equal(t, testCase.expected, actual) 125 } 126 }