Skip to content

Commit a3244b6

Browse files
committed
fix(fragmentArguments): arguments on directives for nested fields
Ports graphql-js 19b83f9f (#4180), a fixup to #4015: collect_subfields did not thread the field's fragment_variables into the recursive collect_fields_impl call, so directive arguments (@skip/@include) on nested fields could not resolve fragment-scoped variables. The JS diff also drops an unused fragmentVariableValues field from CollectFieldsContext, which gc3's context never carried (N/A).
1 parent 5b1855f commit a3244b6

2 files changed

Lines changed: 14 additions & 0 deletions

File tree

src/graphql/execution/collect_fields.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -166,6 +166,7 @@ def collect_subfields(
166166
sub_grouped_field_set,
167167
new_defer_usages,
168168
field_detail.defer_usage,
169+
field_detail.fragment_variables,
169170
)
170171

171172
return CollectedFields(sub_grouped_field_set, new_defer_usages)

tests/execution/test_variables.py

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1324,6 +1324,19 @@ def when_argument_passed_to_a_directive():
13241324
)
13251325
assert result == ({}, None)
13261326

1327+
def when_argument_passed_to_a_directive_on_a_nested_field():
1328+
result = execute_query_with_fragment_arguments(
1329+
"""
1330+
query {
1331+
...a(value: true)
1332+
}
1333+
fragment a($value: Boolean!) on TestType {
1334+
nested { echo(input: "echo") @skip(if: $value) }
1335+
}
1336+
"""
1337+
)
1338+
assert result == ({"nested": {}}, None)
1339+
13271340
def describe_execute_uses_argument_default_values():
13281341
def when_no_argument_provided():
13291342
result = execute_query("{ fieldWithDefaultArgumentValue }")

0 commit comments

Comments
 (0)