github.com/szyn/goreleaser@v0.76.1-0.20180517112710-333da09a1297/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  }