(command.CommandList
  children: [
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:test_description)
          op: assign_op.Equal
          rhs: {(SQ (Token id:Id.Lit_Chars val:'diff --no-index' span_id:6))}
          spids: [4]
        )
      ]
    )
    (C {(.)} {(./test-lib.sh)})
    (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:setup span_id:18))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:22) 
          (Token id:Id.Lit_Chars val:'\tmkdir a &&\n' span_id:23) (Token id:Id.Lit_Chars val:'\tmkdir b &&\n' span_id:24) 
          (Token id:Id.Lit_Chars val:'\techo 1 >a/1 &&\n' span_id:25) (Token id:Id.Lit_Chars val:'\techo 2 >a/2 &&\n' span_id:26) 
          (Token id:Id.Lit_Chars val:'\tgit init repo &&\n' span_id:27) (Token id:Id.Lit_Chars val:'\techo 1 >repo/a &&\n' span_id:28) 
          (Token id:Id.Lit_Chars val:'\tmkdir -p non/git &&\n' span_id:29) (Token id:Id.Lit_Chars val:'\techo 1 >non/git/a &&\n' span_id:30) 
          (Token id:Id.Lit_Chars val:'\techo 1 >non/git/b\n' span_id:31)
        )
      }
    )
    (C {(test_expect_success)} 
      {(SQ (Token id:Id.Lit_Chars val:'git diff --no-index directories' span_id:38))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:42) 
          (Token
            id: Id.Lit_Chars
            val: '\ttest_expect_code 1 git diff --no-index a b >cnt &&\n'
            span_id: 43
          ) (Token id:Id.Lit_Chars val:'\ttest_line_count = 14 cnt\n' span_id:44)
        )
      }
    )
    (C {(test_expect_success)} 
      {(SQ (Token id:Id.Lit_Chars val:'git diff --no-index relative path outside repo' span_id:51))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:55) (Token id:Id.Lit_Chars val:'\t(\n' span_id:56) 
          (Token id:Id.Lit_Chars val:'\t\tcd repo &&\n' span_id:57) 
          (Token
            id: Id.Lit_Chars
            val: '\t\ttest_expect_code 0 git diff --no-index a ../non/git/a &&\n'
            span_id: 58
          ) 
          (Token
            id: Id.Lit_Chars
            val: '\t\ttest_expect_code 0 git diff --no-index ../non/git/a ../non/git/b\n'
            span_id: 59
          ) (Token id:Id.Lit_Chars val:'\t)\n' span_id:60)
        )
      }
    )
    (C {(test_expect_success)} 
      {(SQ (Token id:Id.Lit_Chars val:'git diff --no-index with broken index' span_id:67))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:71) (Token id:Id.Lit_Chars val:'\t(\n' span_id:72) 
          (Token id:Id.Lit_Chars val:'\t\tcd repo &&\n' span_id:73) (Token id:Id.Lit_Chars val:'\t\techo broken >.git/index &&\n' span_id:74) 
          (Token id:Id.Lit_Chars val:'\t\tgit diff --no-index a ../non/git/a\n' span_id:75) (Token id:Id.Lit_Chars val:'\t)\n' span_id:76)
        )
      }
    )
    (C {(test_expect_success)} 
      {(SQ (Token id:Id.Lit_Chars val:'git diff outside repo with broken index' span_id:83))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:87) (Token id:Id.Lit_Chars val:'\t(\n' span_id:88) 
          (Token id:Id.Lit_Chars val:'\t\tcd repo &&\n' span_id:89) (Token id:Id.Lit_Chars val:'\t\tgit diff ../non/git/a ../non/git/b\n' span_id:90) 
          (Token id:Id.Lit_Chars val:'\t)\n' span_id:91)
        )
      }
    )
    (C {(test_expect_success)} 
      {
        (SQ 
          (Token
            id: Id.Lit_Chars
            val: 'git diff --no-index executed outside repo gives correct error message'
            span_id: 98
          )
        )
      } 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:102) 
          (Token id:Id.Lit_Chars val:'\t(\n' span_id:103) (Token id:Id.Lit_Chars val:'\t\tGIT_CEILING_DIRECTORIES=$TRASH_DIRECTORY/non &&\n' span_id:104) 
          (Token id:Id.Lit_Chars val:'\t\texport GIT_CEILING_DIRECTORIES &&\n' span_id:105) (Token id:Id.Lit_Chars val:'\t\tcd non/git &&\n' span_id:106) 
          (Token
            id: Id.Lit_Chars
            val: '\t\ttest_must_fail git diff --no-index a 2>actual.err &&\n'
            span_id: 107
          ) 
          (Token
            id: Id.Lit_Chars
            val: '\t\techo "usage: git diff --no-index <path> <path>" >expect.err &&\n'
            span_id: 108
          ) (Token id:Id.Lit_Chars val:'\t\ttest_cmp expect.err actual.err\n' span_id:109) 
          (Token id:Id.Lit_Chars val:'\t)\n' span_id:110)
        )
      }
    )
    (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'diff D F and diff F D' span_id:117))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:121) 
          (Token id:Id.Lit_Chars val:'\t(\n' span_id:122) (Token id:Id.Lit_Chars val:'\t\tcd repo &&\n' span_id:123) 
          (Token id:Id.Lit_Chars val:'\t\techo in-repo >a &&\n' span_id:124) (Token id:Id.Lit_Chars val:'\t\techo non-repo >../non/git/a &&\n' span_id:125) 
          (Token id:Id.Lit_Chars val:'\t\tmkdir sub &&\n' span_id:126) (Token id:Id.Lit_Chars val:'\t\techo sub-repo >sub/a &&\n' span_id:127) 
          (Token id:Id.Lit_Chars val:'\n' span_id:128) 
          (Token
            id: Id.Lit_Chars
            val: '\t\ttest_must_fail git diff --no-index sub/a ../non/git/a >expect &&\n'
            span_id: 129
          ) 
          (Token
            id: Id.Lit_Chars
            val: '\t\ttest_must_fail git diff --no-index sub/a ../non/git/ >actual &&\n'
            span_id: 130
          ) (Token id:Id.Lit_Chars val:'\t\ttest_cmp expect actual &&\n' span_id:131) 
          (Token id:Id.Lit_Chars val:'\n' span_id:132) 
          (Token
            id: Id.Lit_Chars
            val: '\t\ttest_must_fail git diff --no-index a ../non/git/a >expect &&\n'
            span_id: 133
          ) 
          (Token
            id: Id.Lit_Chars
            val: '\t\ttest_must_fail git diff --no-index a ../non/git/ >actual &&\n'
            span_id: 134
          ) (Token id:Id.Lit_Chars val:'\t\ttest_cmp expect actual &&\n' span_id:135) 
          (Token id:Id.Lit_Chars val:'\n' span_id:136) 
          (Token
            id: Id.Lit_Chars
            val: '\t\ttest_must_fail git diff --no-index ../non/git/a a >expect &&\n'
            span_id: 137
          ) 
          (Token
            id: Id.Lit_Chars
            val: '\t\ttest_must_fail git diff --no-index ../non/git a >actual &&\n'
            span_id: 138
          ) (Token id:Id.Lit_Chars val:'\t\ttest_cmp expect actual\n' span_id:139) 
          (Token id:Id.Lit_Chars val:'\t)\n' span_id:140)
        )
      }
    )
    (C {(test_expect_success)} 
      {(SQ (Token id:Id.Lit_Chars val:'turning a file into a directory' span_id:147))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:151) 
          (Token id:Id.Lit_Chars val:'\t(\n' span_id:152) (Token id:Id.Lit_Chars val:'\t\tcd non/git &&\n' span_id:153) 
          (Token id:Id.Lit_Chars val:'\t\tmkdir d e e/sub &&\n' span_id:154) (Token id:Id.Lit_Chars val:'\t\techo 1 >d/sub &&\n' span_id:155) 
          (Token id:Id.Lit_Chars val:'\t\techo 2 >e/sub/file &&\n' span_id:156) (Token id:Id.Lit_Chars val:'\t\tprintf "D\\td/sub\\nA\\te/sub/file\\n" >expect &&\n' span_id:157) 
          (Token
            id: Id.Lit_Chars
            val: '\t\ttest_must_fail git diff --no-index --name-status d e >actual &&\n'
            span_id: 158
          ) (Token id:Id.Lit_Chars val:'\t\ttest_cmp expect actual\n' span_id:159) 
          (Token id:Id.Lit_Chars val:'\t)\n' span_id:160)
        )
      }
    )
    (C {(test_expect_success)} 
      {
        (SQ 
          (Token
            id: Id.Lit_Chars
            val: 'diff from repo subdir shows real paths (explicit)'
            span_id: 167
          )
        )
      } 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:171) 
          (Token
            id: Id.Lit_Chars
            val: '\techo "diff --git a/../../non/git/a b/../../non/git/b" >expect &&\n'
            span_id: 172
          ) (Token id:Id.Lit_Chars val:'\ttest_expect_code 1 \\\n' span_id:173) 
          (Token id:Id.Lit_Chars val:'\t\tgit -C repo/sub \\\n' span_id:174) 
          (Token
            id: Id.Lit_Chars
            val: '\t\tdiff --no-index ../../non/git/a ../../non/git/b >actual &&\n'
            span_id: 175
          ) (Token id:Id.Lit_Chars val:'\thead -n 1 <actual >actual.head &&\n' span_id:176) 
          (Token id:Id.Lit_Chars val:'\ttest_cmp expect actual.head\n' span_id:177)
        )
      }
    )
    (C {(test_expect_success)} 
      {
        (SQ 
          (Token
            id: Id.Lit_Chars
            val: 'diff from repo subdir shows real paths (implicit)'
            span_id: 184
          )
        )
      } 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:188) 
          (Token
            id: Id.Lit_Chars
            val: '\techo "diff --git a/../../non/git/a b/../../non/git/b" >expect &&\n'
            span_id: 189
          ) (Token id:Id.Lit_Chars val:'\ttest_expect_code 1 \\\n' span_id:190) 
          (Token id:Id.Lit_Chars val:'\t\tgit -C repo/sub \\\n' span_id:191) (Token id:Id.Lit_Chars val:'\t\tdiff ../../non/git/a ../../non/git/b >actual &&\n' span_id:192) 
          (Token id:Id.Lit_Chars val:'\thead -n 1 <actual >actual.head &&\n' span_id:193) (Token id:Id.Lit_Chars val:'\ttest_cmp expect actual.head\n' span_id:194)
        )
      }
    )
    (C {(test_expect_success)} 
      {
        (SQ 
          (Token
            id: Id.Lit_Chars
            val: 'diff --no-index from repo subdir respects config (explicit)'
            span_id: 201
          )
        )
      } 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:205) 
          (Token
            id: Id.Lit_Chars
            val: '\techo "diff --git ../../non/git/a ../../non/git/b" >expect &&\n'
            span_id: 206
          ) (Token id:Id.Lit_Chars val:'\ttest_config -C repo diff.noprefix true &&\n' span_id:207) 
          (Token id:Id.Lit_Chars val:'\ttest_expect_code 1 \\\n' span_id:208) (Token id:Id.Lit_Chars val:'\t\tgit -C repo/sub \\\n' span_id:209) 
          (Token
            id: Id.Lit_Chars
            val: '\t\tdiff --no-index ../../non/git/a ../../non/git/b >actual &&\n'
            span_id: 210
          ) (Token id:Id.Lit_Chars val:'\thead -n 1 <actual >actual.head &&\n' span_id:211) 
          (Token id:Id.Lit_Chars val:'\ttest_cmp expect actual.head\n' span_id:212)
        )
      }
    )
    (C {(test_expect_success)} 
      {
        (SQ 
          (Token
            id: Id.Lit_Chars
            val: 'diff --no-index from repo subdir respects config (implicit)'
            span_id: 219
          )
        )
      } 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:223) 
          (Token
            id: Id.Lit_Chars
            val: '\techo "diff --git ../../non/git/a ../../non/git/b" >expect &&\n'
            span_id: 224
          ) (Token id:Id.Lit_Chars val:'\ttest_config -C repo diff.noprefix true &&\n' span_id:225) 
          (Token id:Id.Lit_Chars val:'\ttest_expect_code 1 \\\n' span_id:226) (Token id:Id.Lit_Chars val:'\t\tgit -C repo/sub \\\n' span_id:227) 
          (Token
            id: Id.Lit_Chars
            val: '\t\tdiff ../../non/git/a ../../non/git/b >actual &&\n'
            span_id: 228
          ) (Token id:Id.Lit_Chars val:'\thead -n 1 <actual >actual.head &&\n' span_id:229) 
          (Token id:Id.Lit_Chars val:'\ttest_cmp expect actual.head\n' span_id:230)
        )
      }
    )
    (C {(test_done)})
  ]
)