- name: single reference is valid rule: NoFragmentCycles schema: 0 query: |2- fragment fragA on Dog { ...fragB } fragment fragB on Dog { name } errors: [] - name: spreading twice is not circular rule: NoFragmentCycles schema: 0 query: |2- fragment fragA on Dog { ...fragB, ...fragB } fragment fragB on Dog { name } errors: [] - name: spreading twice indirectly is not circular rule: NoFragmentCycles schema: 0 query: |2- fragment fragA on Dog { ...fragB, ...fragC } fragment fragB on Dog { ...fragC } fragment fragC on Dog { name } errors: [] - name: double spread within abstract types rule: NoFragmentCycles schema: 0 query: |2- fragment nameFragment on Pet { ... on Dog { name } ... on Cat { name } } fragment spreadsInAnon on Pet { ... on Dog { ...nameFragment } ... on Cat { ...nameFragment } } errors: [] - name: does not false positive on unknown fragment rule: NoFragmentCycles schema: 0 query: |2- fragment nameFragment on Pet { ...UnknownFragment } errors: [] - name: spreading recursively within field fails rule: NoFragmentCycles schema: 0 query: |2- fragment fragA on Human { relatives { ...fragA } }, errors: - message: Cannot spread fragment "fragA" within itself. locations: - {line: 2, column: 45} - name: no spreading itself directly rule: NoFragmentCycles schema: 0 query: |2- fragment fragA on Dog { ...fragA } errors: - message: Cannot spread fragment "fragA" within itself. locations: - {line: 2, column: 31} - name: no spreading itself directly within inline fragment rule: NoFragmentCycles schema: 0 query: |2- fragment fragA on Pet { ... on Dog { ...fragA } } errors: - message: Cannot spread fragment "fragA" within itself. locations: - {line: 4, column: 11} - name: no spreading itself indirectly rule: NoFragmentCycles schema: 0 query: |2- fragment fragA on Dog { ...fragB } fragment fragB on Dog { ...fragA } errors: - message: Cannot spread fragment "fragA" within itself via fragB. locations: - {line: 2, column: 31} - {line: 3, column: 31} - name: no spreading itself indirectly reports opposite order rule: NoFragmentCycles schema: 0 query: |2- fragment fragB on Dog { ...fragA } fragment fragA on Dog { ...fragB } errors: - message: Cannot spread fragment "fragB" within itself via fragA. locations: - {line: 2, column: 31} - {line: 3, column: 31} - name: no spreading itself indirectly within inline fragment rule: NoFragmentCycles schema: 0 query: |2- fragment fragA on Pet { ... on Dog { ...fragB } } fragment fragB on Pet { ... on Dog { ...fragA } } errors: - message: Cannot spread fragment "fragA" within itself via fragB. locations: - {line: 4, column: 11} - {line: 9, column: 11} - name: no spreading itself deeply rule: NoFragmentCycles schema: 0 query: |2- fragment fragA on Dog { ...fragB } fragment fragB on Dog { ...fragC } fragment fragC on Dog { ...fragO } fragment fragX on Dog { ...fragY } fragment fragY on Dog { ...fragZ } fragment fragZ on Dog { ...fragO } fragment fragO on Dog { ...fragP } fragment fragP on Dog { ...fragA, ...fragX } errors: - message: 'Cannot spread fragment "fragA" within itself via fragB, fragC, fragO, fragP.' locations: - {line: 2, column: 31} - {line: 3, column: 31} - {line: 4, column: 31} - {line: 8, column: 31} - {line: 9, column: 31} - message: 'Cannot spread fragment "fragO" within itself via fragP, fragX, fragY, fragZ.' locations: - {line: 8, column: 31} - {line: 9, column: 41} - {line: 5, column: 31} - {line: 6, column: 31} - {line: 7, column: 31} - name: no spreading itself deeply two paths rule: NoFragmentCycles schema: 0 query: |2- fragment fragA on Dog { ...fragB, ...fragC } fragment fragB on Dog { ...fragA } fragment fragC on Dog { ...fragA } errors: - message: Cannot spread fragment "fragA" within itself via fragB. locations: - {line: 2, column: 31} - {line: 3, column: 31} - message: Cannot spread fragment "fragA" within itself via fragC. locations: - {line: 2, column: 41} - {line: 4, column: 31} - name: no spreading itself deeply two paths -- alt traverse order rule: NoFragmentCycles schema: 0 query: |2- fragment fragA on Dog { ...fragC } fragment fragB on Dog { ...fragC } fragment fragC on Dog { ...fragA, ...fragB } errors: - message: Cannot spread fragment "fragA" within itself via fragC. locations: - {line: 2, column: 31} - {line: 4, column: 31} - message: Cannot spread fragment "fragC" within itself via fragB. locations: - {line: 4, column: 41} - {line: 3, column: 31} - name: no spreading itself deeply and immediately rule: NoFragmentCycles schema: 0 query: |2- fragment fragA on Dog { ...fragB } fragment fragB on Dog { ...fragB, ...fragC } fragment fragC on Dog { ...fragA, ...fragB } errors: - message: Cannot spread fragment "fragB" within itself. locations: - {line: 3, column: 31} - message: 'Cannot spread fragment "fragA" within itself via fragB, fragC.' locations: - {line: 2, column: 31} - {line: 3, column: 41} - {line: 4, column: 31} - message: Cannot spread fragment "fragB" within itself via fragC. locations: - {line: 3, column: 41} - {line: 4, column: 41}