1- name: single reference is valid
2 rule: NoFragmentCycles
3 schema: 0
4 query: |2-
5
6 fragment fragA on Dog { ...fragB }
7 fragment fragB on Dog { name }
8
9 errors: []
10- name: spreading twice is not circular
11 rule: NoFragmentCycles
12 schema: 0
13 query: |2-
14
15 fragment fragA on Dog { ...fragB, ...fragB }
16 fragment fragB on Dog { name }
17
18 errors: []
19- name: spreading twice indirectly is not circular
20 rule: NoFragmentCycles
21 schema: 0
22 query: |2-
23
24 fragment fragA on Dog { ...fragB, ...fragC }
25 fragment fragB on Dog { ...fragC }
26 fragment fragC on Dog { name }
27
28 errors: []
29- name: double spread within abstract types
30 rule: NoFragmentCycles
31 schema: 0
32 query: |2-
33
34 fragment nameFragment on Pet {
35 ... on Dog { name }
36 ... on Cat { name }
37 }
38
39 fragment spreadsInAnon on Pet {
40 ... on Dog { ...nameFragment }
41 ... on Cat { ...nameFragment }
42 }
43
44 errors: []
45- name: does not false positive on unknown fragment
46 rule: NoFragmentCycles
47 schema: 0
48 query: |2-
49
50 fragment nameFragment on Pet {
51 ...UnknownFragment
52 }
53
54 errors: []
55- name: spreading recursively within field fails
56 rule: NoFragmentCycles
57 schema: 0
58 query: |2-
59
60 fragment fragA on Human { relatives { ...fragA } },
61
62 errors:
63 - message: Cannot spread fragment "fragA" within itself.
64 locations:
65 - {line: 2, column: 45}
66- name: no spreading itself directly
67 rule: NoFragmentCycles
68 schema: 0
69 query: |2-
70
71 fragment fragA on Dog { ...fragA }
72
73 errors:
74 - message: Cannot spread fragment "fragA" within itself.
75 locations:
76 - {line: 2, column: 31}
77- name: no spreading itself directly within inline fragment
78 rule: NoFragmentCycles
79 schema: 0
80 query: |2-
81
82 fragment fragA on Pet {
83 ... on Dog {
84 ...fragA
85 }
86 }
87
88 errors:
89 - message: Cannot spread fragment "fragA" within itself.
90 locations:
91 - {line: 4, column: 11}
92- name: no spreading itself indirectly
93 rule: NoFragmentCycles
94 schema: 0
95 query: |2-
96
97 fragment fragA on Dog { ...fragB }
98 fragment fragB on Dog { ...fragA }
99
100 errors:
101 - message: Cannot spread fragment "fragA" within itself via fragB.
102 locations:
103 - {line: 2, column: 31}
104 - {line: 3, column: 31}
105- name: no spreading itself indirectly reports opposite order
106 rule: NoFragmentCycles
107 schema: 0
108 query: |2-
109
110 fragment fragB on Dog { ...fragA }
111 fragment fragA on Dog { ...fragB }
112
113 errors:
114 - message: Cannot spread fragment "fragB" within itself via fragA.
115 locations:
116 - {line: 2, column: 31}
117 - {line: 3, column: 31}
118- name: no spreading itself indirectly within inline fragment
119 rule: NoFragmentCycles
120 schema: 0
121 query: |2-
122
123 fragment fragA on Pet {
124 ... on Dog {
125 ...fragB
126 }
127 }
128 fragment fragB on Pet {
129 ... on Dog {
130 ...fragA
131 }
132 }
133
134 errors:
135 - message: Cannot spread fragment "fragA" within itself via fragB.
136 locations:
137 - {line: 4, column: 11}
138 - {line: 9, column: 11}
139- name: no spreading itself deeply
140 rule: NoFragmentCycles
141 schema: 0
142 query: |2-
143
144 fragment fragA on Dog { ...fragB }
145 fragment fragB on Dog { ...fragC }
146 fragment fragC on Dog { ...fragO }
147 fragment fragX on Dog { ...fragY }
148 fragment fragY on Dog { ...fragZ }
149 fragment fragZ on Dog { ...fragO }
150 fragment fragO on Dog { ...fragP }
151 fragment fragP on Dog { ...fragA, ...fragX }
152
153 errors:
154 - message: 'Cannot spread fragment "fragA" within itself via fragB, fragC, fragO, fragP.'
155 locations:
156 - {line: 2, column: 31}
157 - {line: 3, column: 31}
158 - {line: 4, column: 31}
159 - {line: 8, column: 31}
160 - {line: 9, column: 31}
161 - message: 'Cannot spread fragment "fragO" within itself via fragP, fragX, fragY, fragZ.'
162 locations:
163 - {line: 8, column: 31}
164 - {line: 9, column: 41}
165 - {line: 5, column: 31}
166 - {line: 6, column: 31}
167 - {line: 7, column: 31}
168- name: no spreading itself deeply two paths
169 rule: NoFragmentCycles
170 schema: 0
171 query: |2-
172
173 fragment fragA on Dog { ...fragB, ...fragC }
174 fragment fragB on Dog { ...fragA }
175 fragment fragC on Dog { ...fragA }
176
177 errors:
178 - message: Cannot spread fragment "fragA" within itself via fragB.
179 locations:
180 - {line: 2, column: 31}
181 - {line: 3, column: 31}
182 - message: Cannot spread fragment "fragA" within itself via fragC.
183 locations:
184 - {line: 2, column: 41}
185 - {line: 4, column: 31}
186- name: no spreading itself deeply two paths -- alt traverse order
187 rule: NoFragmentCycles
188 schema: 0
189 query: |2-
190
191 fragment fragA on Dog { ...fragC }
192 fragment fragB on Dog { ...fragC }
193 fragment fragC on Dog { ...fragA, ...fragB }
194
195 errors:
196 - message: Cannot spread fragment "fragA" within itself via fragC.
197 locations:
198 - {line: 2, column: 31}
199 - {line: 4, column: 31}
200 - message: Cannot spread fragment "fragC" within itself via fragB.
201 locations:
202 - {line: 4, column: 41}
203 - {line: 3, column: 31}
204- name: no spreading itself deeply and immediately
205 rule: NoFragmentCycles
206 schema: 0
207 query: |2-
208
209 fragment fragA on Dog { ...fragB }
210 fragment fragB on Dog { ...fragB, ...fragC }
211 fragment fragC on Dog { ...fragA, ...fragB }
212
213 errors:
214 - message: Cannot spread fragment "fragB" within itself.
215 locations:
216 - {line: 3, column: 31}
217 - message: 'Cannot spread fragment "fragA" within itself via fragB, fragC.'
218 locations:
219 - {line: 2, column: 31}
220 - {line: 3, column: 41}
221 - {line: 4, column: 31}
222 - message: Cannot spread fragment "fragB" within itself via fragC.
223 locations:
224 - {line: 3, column: 41}
225 - {line: 4, column: 41}
View as plain text