Skip to content

Commit eff77ed

Browse files
committed
fix unit tests
1 parent 0de6975 commit eff77ed

File tree

2 files changed

+33
-3
lines changed

2 files changed

+33
-3
lines changed

apptrust/commands/utils/utils.go

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -95,7 +95,7 @@ func ParsePackagesFlag(flagValue string) ([]map[string]string, error) {
9595
return nil, nil
9696
}
9797
pairs := strings.Split(flagValue, ",")
98-
var result []map[string]string
98+
result := []map[string]string{}
9999
for _, pair := range pairs {
100100
parts := strings.SplitN(strings.TrimSpace(pair), PartSeparator, 2)
101101
if len(parts) != 2 {
@@ -109,7 +109,7 @@ func ParsePackagesFlag(flagValue string) ([]map[string]string, error) {
109109
// ParseDelimitedSlice splits a delimited string into a slice of string slices.
110110
// Example: input "a:1;b:2" returns [][]string{{"a","1"},{"b","2"}}
111111
func ParseDelimitedSlice(input string) [][]string {
112-
var result [][]string
112+
result := [][]string{}
113113
if input == "" {
114114
return result
115115
}
@@ -124,7 +124,10 @@ func ParseDelimitedSlice(input string) [][]string {
124124
// ParseNameVersionPairs parses a delimited string (e.g., "name1:version1;name2:version2") into a slice of [2]string pairs.
125125
// Returns an error if any entry does not have exactly two parts.
126126
func ParseNameVersionPairs(input string) ([][2]string, error) {
127-
var result [][2]string
127+
result := [][2]string{}
128+
if input == "" {
129+
return result, nil
130+
}
128131
for _, parts := range ParseDelimitedSlice(input) {
129132
if len(parts) != 2 {
130133
return nil, fmt.Errorf("invalid format: %v", parts)

apptrust/commands/utils/utils_test.go

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -170,3 +170,30 @@ func TestParseDelimitedSlice(t *testing.T) {
170170
})
171171
}
172172
}
173+
174+
func TestParseNameVersionPairs(t *testing.T) {
175+
tests := []struct {
176+
name string
177+
input string
178+
expected [][2]string
179+
expectErr bool
180+
}{
181+
{"empty string", "", [][2]string{}, false},
182+
{"single pair", "foo:1.0.0", [][2]string{{"foo", "1.0.0"}}, false},
183+
{"multiple pairs", "foo:1.0.0;bar:2.0.0", [][2]string{{"foo", "1.0.0"}, {"bar", "2.0.0"}}, false},
184+
{"spaces", " foo:1.0.0 ; bar:2.0.0 ", [][2]string{{" foo", "1.0.0 "}, {" bar", "2.0.0 "}}, false},
185+
{"invalid format", "foo", nil, true},
186+
{"too many parts", "foo:1.0.0:extra", nil, true},
187+
}
188+
for _, tt := range tests {
189+
t.Run(tt.name, func(t *testing.T) {
190+
result, err := ParseNameVersionPairs(tt.input)
191+
if tt.expectErr {
192+
assert.Error(t, err, "expected error for input %q", tt.input)
193+
return
194+
}
195+
assert.NoError(t, err, "unexpected error for input %q: %v", tt.input, err)
196+
assert.Equal(t, tt.expected, result, "ParseNameVersionPairs(%q) = %v, want %v", tt.input, result, tt.expected)
197+
})
198+
}
199+
}

0 commit comments

Comments
 (0)