diff --git a/plugin/federation/fieldset/fieldset.go b/plugin/federation/fieldset/fieldset.go index 59e4775368..306f04720b 100644 --- a/plugin/federation/fieldset/fieldset.go +++ b/plugin/federation/fieldset/fieldset.go @@ -134,7 +134,7 @@ func parseUnnestedKeyFieldSet(raw string, prefix []string) Set { ret := Set{} for _, s := range strings.Fields(raw) { - next := append(prefix[:], s) //nolint:gocritic // slicing out on purpose + next := append(prefix[0:len(prefix):len(prefix)], s) //nolint:gocritic // set cap=len in order to force slice reallocation ret = append(ret, next) } return ret diff --git a/plugin/federation/fieldset/fieldset_test.go b/plugin/federation/fieldset/fieldset_test.go index 6ca0499f4e..c1af8742c7 100644 --- a/plugin/federation/fieldset/fieldset_test.go +++ b/plugin/federation/fieldset/fieldset_test.go @@ -43,18 +43,37 @@ func TestNestedWithoutPrefix(t *testing.T) { } func TestWithPrefix(t *testing.T) { - fieldSet := New("foo bar{id}", []string{"prefix"}) + t.Run("prefix with len=capacity", func(t *testing.T) { + fieldSet := New("foo bar{id}", []string{"prefix"}) - require.Len(t, fieldSet, 2) + require.Len(t, fieldSet, 2) - require.Len(t, fieldSet[0], 2) - require.Equal(t, "prefix", fieldSet[0][0]) - require.Equal(t, "foo", fieldSet[0][1]) + require.Len(t, fieldSet[0], 2) + require.Equal(t, "prefix", fieldSet[0][0]) + require.Equal(t, "foo", fieldSet[0][1]) - require.Len(t, fieldSet[1], 3) - require.Equal(t, "prefix", fieldSet[1][0]) - require.Equal(t, "bar", fieldSet[1][1]) - require.Equal(t, "id", fieldSet[1][2]) + require.Len(t, fieldSet[1], 3) + require.Equal(t, "prefix", fieldSet[1][0]) + require.Equal(t, "bar", fieldSet[1][1]) + require.Equal(t, "id", fieldSet[1][2]) + }) + t.Run("prefix with len