(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:'Return value of diffs' 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:'\techo 1 >a &&\n' span_id:23) (Token id:Id.Lit_Chars val:'\tgit add . &&\n' span_id:24) 
          (Token id:Id.Lit_Chars val:'\tgit commit -m first &&\n' span_id:25) (Token id:Id.Lit_Chars val:'\techo 2 >b &&\n' span_id:26) 
          (Token id:Id.Lit_Chars val:'\tgit add . &&\n' span_id:27) (Token id:Id.Lit_Chars val:'\tgit commit -a -m second &&\n' span_id:28) 
          (Token id:Id.Lit_Chars val:'\tmkdir -p test-outside/repo && (\n' span_id:29) (Token id:Id.Lit_Chars val:'\t\tcd test-outside/repo &&\n' span_id:30) 
          (Token id:Id.Lit_Chars val:'\t\tgit init &&\n' span_id:31) (Token id:Id.Lit_Chars val:'\t\techo "1 1" >a &&\n' span_id:32) 
          (Token id:Id.Lit_Chars val:'\t\tgit add . &&\n' span_id:33) (Token id:Id.Lit_Chars val:'\t\tgit commit -m 1\n' span_id:34) 
          (Token id:Id.Lit_Chars val:'\t) &&\n' span_id:35) (Token id:Id.Lit_Chars val:'\tmkdir -p test-outside/non/git && (\n' span_id:36) 
          (Token id:Id.Lit_Chars val:'\t\tcd test-outside/non/git &&\n' span_id:37) (Token id:Id.Lit_Chars val:'\t\techo "1 1" >a &&\n' span_id:38) 
          (Token id:Id.Lit_Chars val:'\t\techo "1 1" >matching-file &&\n' span_id:39) (Token id:Id.Lit_Chars val:'\t\techo "1 1 " >trailing-space &&\n' span_id:40) 
          (Token id:Id.Lit_Chars val:'\t\techo "1   1" >extra-space &&\n' span_id:41) (Token id:Id.Lit_Chars val:'\t\techo "2" >never-match\n' span_id:42) 
          (Token id:Id.Lit_Chars val:'\t)\n' span_id:43)
        )
      }
    )
    (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'git diff-tree HEAD^ HEAD' span_id:50))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:54) 
          (Token
            id: Id.Lit_Chars
            val: '\ttest_expect_code 1 git diff-tree --quiet HEAD^ HEAD >cnt &&\n'
            span_id: 55
          ) (Token id:Id.Lit_Chars val:'\ttest_line_count = 0 cnt\n' span_id:56)
        )
      }
    )
    (C {(test_expect_success)} 
      {(SQ (Token id:Id.Lit_Chars val:'git diff-tree HEAD^ HEAD -- a' span_id:62))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:66) 
          (Token
            id: Id.Lit_Chars
            val: '\ttest_expect_code 0 git diff-tree --quiet HEAD^ HEAD -- a >cnt &&\n'
            span_id: 67
          ) (Token id:Id.Lit_Chars val:'\ttest_line_count = 0 cnt\n' span_id:68)
        )
      }
    )
    (C {(test_expect_success)} 
      {(SQ (Token id:Id.Lit_Chars val:'git diff-tree HEAD^ HEAD -- b' span_id:74))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:78) 
          (Token
            id: Id.Lit_Chars
            val: '\ttest_expect_code 1 git diff-tree --quiet HEAD^ HEAD -- b >cnt &&\n'
            span_id: 79
          ) (Token id:Id.Lit_Chars val:'\ttest_line_count = 0 cnt\n' span_id:80)
        )
      }
    )
    (C {(test_expect_success)} 
      {(SQ (Token id:Id.Lit_Chars val:'echo HEAD | git diff-tree --stdin' span_id:89))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:93) 
          (Token id:Id.Lit_Chars val:'\techo $(git rev-parse HEAD) |\n' span_id:94) (Token id:Id.Lit_Chars val:'\ttest_expect_code 1 git diff-tree --quiet --stdin >cnt &&\n' span_id:95) 
          (Token id:Id.Lit_Chars val:'\ttest_line_count = 1 cnt\n' span_id:96)
        )
      }
    )
    (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'git diff-tree HEAD HEAD' span_id:102))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:106) 
          (Token
            id: Id.Lit_Chars
            val: '\ttest_expect_code 0 git diff-tree --quiet HEAD HEAD >cnt &&\n'
            span_id: 107
          ) (Token id:Id.Lit_Chars val:'\ttest_line_count = 0 cnt\n' span_id:108)
        )
      }
    )
    (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'git diff-files' span_id:114))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:118) 
          (Token
            id: Id.Lit_Chars
            val: '\ttest_expect_code 0 git diff-files --quiet >cnt &&\n'
            span_id: 119
          ) (Token id:Id.Lit_Chars val:'\ttest_line_count = 0 cnt\n' span_id:120)
        )
      }
    )
    (C {(test_expect_success)} 
      {(SQ (Token id:Id.Lit_Chars val:'git diff-index --cached HEAD' span_id:126))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:130) 
          (Token
            id: Id.Lit_Chars
            val: '\ttest_expect_code 0 git diff-index --quiet --cached HEAD >cnt &&\n'
            span_id: 131
          ) (Token id:Id.Lit_Chars val:'\ttest_line_count = 0 cnt\n' span_id:132)
        )
      }
    )
    (C {(test_expect_success)} 
      {(SQ (Token id:Id.Lit_Chars val:'git diff-index --cached HEAD^' span_id:138))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:142) 
          (Token
            id: Id.Lit_Chars
            val: '\ttest_expect_code 1 git diff-index --quiet --cached HEAD^ >cnt &&\n'
            span_id: 143
          ) (Token id:Id.Lit_Chars val:'\ttest_line_count = 0 cnt\n' span_id:144)
        )
      }
    )
    (C {(test_expect_success)} 
      {(SQ (Token id:Id.Lit_Chars val:'git diff-index --cached HEAD^' span_id:150))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:154) 
          (Token id:Id.Lit_Chars val:'\techo text >>b &&\n' span_id:155) (Token id:Id.Lit_Chars val:'\techo 3 >c &&\n' span_id:156) 
          (Token id:Id.Lit_Chars val:'\tgit add . &&\n' span_id:157) 
          (Token
            id: Id.Lit_Chars
            val: '\ttest_expect_code 1 git diff-index --quiet --cached HEAD^ >cnt &&\n'
            span_id: 158
          ) (Token id:Id.Lit_Chars val:'\ttest_line_count = 0 cnt\n' span_id:159)
        )
      }
    )
    (C {(test_expect_success)} 
      {(SQ (Token id:Id.Lit_Chars val:'git diff-tree -Stext HEAD^ HEAD -- b' span_id:165))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:169) 
          (Token id:Id.Lit_Chars val:'\tgit commit -m "text in b" &&\n' span_id:170) 
          (Token
            id: Id.Lit_Chars
            val: '\ttest_expect_code 1 git diff-tree --quiet -Stext HEAD^ HEAD -- b >cnt &&\n'
            span_id: 171
          ) (Token id:Id.Lit_Chars val:'\ttest_line_count = 0 cnt\n' span_id:172)
        )
      }
    )
    (C {(test_expect_success)} 
      {(SQ (Token id:Id.Lit_Chars val:'git diff-tree -Snot-found HEAD^ HEAD -- b' span_id:178))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:182) 
          (Token
            id: Id.Lit_Chars
            val: '\ttest_expect_code 0 git diff-tree --quiet -Snot-found HEAD^ HEAD -- b >cnt &&\n'
            span_id: 183
          ) (Token id:Id.Lit_Chars val:'\ttest_line_count = 0 cnt\n' span_id:184)
        )
      }
    )
    (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'git diff-files' span_id:190))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:194) 
          (Token id:Id.Lit_Chars val:'\techo 3 >>c &&\n' span_id:195) (Token id:Id.Lit_Chars val:'\ttest_expect_code 1 git diff-files --quiet >cnt &&\n' span_id:196) 
          (Token id:Id.Lit_Chars val:'\ttest_line_count = 0 cnt\n' span_id:197)
        )
      }
    )
    (C {(test_expect_success)} 
      {(SQ (Token id:Id.Lit_Chars val:'git diff-index --cached HEAD' span_id:204))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:208) 
          (Token id:Id.Lit_Chars val:'\tgit update-index c &&\n' span_id:209) 
          (Token
            id: Id.Lit_Chars
            val: '\ttest_expect_code 1 git diff-index --quiet --cached HEAD >cnt &&\n'
            span_id: 210
          ) (Token id:Id.Lit_Chars val:'\ttest_line_count = 0 cnt\n' span_id:211)
        )
      }
    )
    (C {(test_expect_success)} 
      {(SQ (Token id:Id.Lit_Chars val:'git diff, one file outside repo' span_id:218))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:222) 
          (Token id:Id.Lit_Chars val:'\t(\n' span_id:223) (Token id:Id.Lit_Chars val:'\t\tcd test-outside/repo &&\n' span_id:224) 
          (Token
            id: Id.Lit_Chars
            val: '\t\ttest_expect_code 0 git diff --quiet a ../non/git/matching-file &&\n'
            span_id: 225
          ) 
          (Token
            id: Id.Lit_Chars
            val: '\t\ttest_expect_code 1 git diff --quiet a ../non/git/extra-space\n'
            span_id: 226
          ) (Token id:Id.Lit_Chars val:'\t)\n' span_id:227)
        )
      }
    )
    (C {(test_expect_success)} 
      {(SQ (Token id:Id.Lit_Chars val:'git diff, both files outside repo' span_id:234))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:238) 
          (Token id:Id.Lit_Chars val:'\t(\n' span_id:239) 
          (Token
            id: Id.Lit_Chars
            val: '\t\tGIT_CEILING_DIRECTORIES="$TRASH_DIRECTORY/test-outside" &&\n'
            span_id: 240
          ) (Token id:Id.Lit_Chars val:'\t\texport GIT_CEILING_DIRECTORIES &&\n' span_id:241) 
          (Token id:Id.Lit_Chars val:'\t\tcd test-outside/non/git &&\n' span_id:242) 
          (Token
            id: Id.Lit_Chars
            val: '\t\ttest_expect_code 0 git diff --quiet a matching-file &&\n'
            span_id: 243
          ) (Token id:Id.Lit_Chars val:'\t\ttest_expect_code 1 git diff --quiet a extra-space\n' span_id:244) 
          (Token id:Id.Lit_Chars val:'\t)\n' span_id:245)
        )
      }
    )
    (C {(test_expect_success)} 
      {
        (SQ 
          (Token
            id: Id.Lit_Chars
            val: 'git diff --ignore-space-at-eol, one file outside repo'
            span_id: 252
          )
        )
      } 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:256) 
          (Token id:Id.Lit_Chars val:'\t(\n' span_id:257) (Token id:Id.Lit_Chars val:'\t\tcd test-outside/repo &&\n' span_id:258) 
          (Token
            id: Id.Lit_Chars
            val: 
'\t\ttest_expect_code 0 git diff --quiet --ignore-space-at-eol a ../non/git/trailing-space &&\n'
            span_id: 259
          ) 
          (Token
            id: Id.Lit_Chars
            val: 
'\t\ttest_expect_code 1 git diff --quiet --ignore-space-at-eol a ../non/git/extra-space\n'
            span_id: 260
          ) (Token id:Id.Lit_Chars val:'\t)\n' span_id:261)
        )
      }
    )
    (C {(test_expect_success)} 
      {
        (SQ 
          (Token
            id: Id.Lit_Chars
            val: 'git diff --ignore-space-at-eol, both files outside repo'
            span_id: 268
          )
        )
      } 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:272) 
          (Token id:Id.Lit_Chars val:'\t(\n' span_id:273) 
          (Token
            id: Id.Lit_Chars
            val: '\t\tGIT_CEILING_DIRECTORIES="$TRASH_DIRECTORY/test-outside" &&\n'
            span_id: 274
          ) (Token id:Id.Lit_Chars val:'\t\texport GIT_CEILING_DIRECTORIES &&\n' span_id:275) 
          (Token id:Id.Lit_Chars val:'\t\tcd test-outside/non/git &&\n' span_id:276) 
          (Token
            id: Id.Lit_Chars
            val: 
'\t\ttest_expect_code 0 git diff --quiet --ignore-space-at-eol a trailing-space &&\n'
            span_id: 277
          ) 
          (Token
            id: Id.Lit_Chars
            val: '\t\ttest_expect_code 1 git diff --quiet --ignore-space-at-eol a extra-space\n'
            span_id: 278
          ) (Token id:Id.Lit_Chars val:'\t)\n' span_id:279)
        )
      }
    )
    (C {(test_expect_success)} 
      {
        (SQ 
          (Token
            id: Id.Lit_Chars
            val: 'git diff --ignore-all-space, one file outside repo'
            span_id: 286
          )
        )
      } 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:290) 
          (Token id:Id.Lit_Chars val:'\t(\n' span_id:291) (Token id:Id.Lit_Chars val:'\t\tcd test-outside/repo &&\n' span_id:292) 
          (Token
            id: Id.Lit_Chars
            val: 
'\t\ttest_expect_code 0 git diff --quiet --ignore-all-space a ../non/git/trailing-space &&\n'
            span_id: 293
          ) 
          (Token
            id: Id.Lit_Chars
            val: 
'\t\ttest_expect_code 0 git diff --quiet --ignore-all-space a ../non/git/extra-space &&\n'
            span_id: 294
          ) 
          (Token
            id: Id.Lit_Chars
            val: 
'\t\ttest_expect_code 1 git diff --quiet --ignore-all-space a ../non/git/never-match\n'
            span_id: 295
          ) (Token id:Id.Lit_Chars val:'\t)\n' span_id:296)
        )
      }
    )
    (C {(test_expect_success)} 
      {
        (SQ 
          (Token
            id: Id.Lit_Chars
            val: 'git diff --ignore-all-space, both files outside repo'
            span_id: 303
          )
        )
      } 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:307) 
          (Token id:Id.Lit_Chars val:'\t(\n' span_id:308) 
          (Token
            id: Id.Lit_Chars
            val: '\t\tGIT_CEILING_DIRECTORIES="$TRASH_DIRECTORY/test-outside" &&\n'
            span_id: 309
          ) (Token id:Id.Lit_Chars val:'\t\texport GIT_CEILING_DIRECTORIES &&\n' span_id:310) 
          (Token id:Id.Lit_Chars val:'\t\tcd test-outside/non/git &&\n' span_id:311) 
          (Token
            id: Id.Lit_Chars
            val: '\t\ttest_expect_code 0 git diff --quiet --ignore-all-space a trailing-space &&\n'
            span_id: 312
          ) 
          (Token
            id: Id.Lit_Chars
            val: '\t\ttest_expect_code 0 git diff --quiet --ignore-all-space a extra-space &&\n'
            span_id: 313
          ) 
          (Token
            id: Id.Lit_Chars
            val: '\t\ttest_expect_code 1 git diff --quiet --ignore-all-space a never-match\n'
            span_id: 314
          ) (Token id:Id.Lit_Chars val:'\t)\n' span_id:315)
        )
      }
    )
    (C {(test_expect_success)} 
      {
        (SQ 
          (Token
            id: Id.Lit_Chars
            val: 'git diff --quiet ignores stat-change only entries'
            span_id: 322
          )
        )
      } 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:326) 
          (Token id:Id.Lit_Chars val:'\ttest-chmtime +10 a &&\n' span_id:327) (Token id:Id.Lit_Chars val:'\techo modified >>b &&\n' span_id:328) 
          (Token id:Id.Lit_Chars val:'\ttest_expect_code 1 git diff --quiet\n' span_id:329)
        )
      }
    )
    (C {(test_done)})
  ]
)