Fix Cartesian product to return empty set if empty set is given (#503)

This fixes #499, where a matrix strategy with only include keys ends up
causing multiple builds.  This bugs appears to have been introduced in #415,
when extra include keys are added in the matrix strategy.  The cause
seems to be because the CartesianProduct function returns an item with
empty keys, instead of return an empty set.

Co-authored-by: Ed Tan <edtan@users.noreply.github.com>
このコミットが含まれているのは:
Ed
2021-01-23 17:55:54 -05:00
committed by GitHub
コミット 56ec36726b
2個のファイルの変更13行の追加1行の削除

ファイルの表示

@@ -27,7 +27,7 @@ func cartN(a ...[]interface{}) [][]interface{} {
for _, a := range a {
c *= len(a)
}
if c == 0 {
if c == 0 || len(a) == 0 {
return nil
}
p := make([][]interface{}, c)

ファイルの表示

@@ -25,4 +25,16 @@ func TestCartesianProduct(t *testing.T) {
assert.Contains(v, "baz")
}
input = map[string][]interface{}{
"foo": {1, 2, 3, 4},
"bar": {},
"baz": {false, true},
}
output = CartesianProduct(input)
assert.Len(output, 0)
input = map[string][]interface{}{}
output = CartesianProduct(input)
assert.Len(output, 0)
}