(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 --stat-count' span_id:9))}
          spids: [7]
        )
      ]
    )
    (C {(.)} {(./test-lib.sh)})
    (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:setup span_id:20))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:24) 
          (Token id:Id.Lit_Chars val:'\t>a &&\n' span_id:25) (Token id:Id.Lit_Chars val:'\t>b &&\n' span_id:26) (Token id:Id.Lit_Chars val:'\t>c &&\n' span_id:27) 
          (Token id:Id.Lit_Chars val:'\t>d &&\n' span_id:28) (Token id:Id.Lit_Chars val:'\tgit add a b c d &&\n' span_id:29) 
          (Token id:Id.Lit_Chars val:'\tgit commit -m initial\n' span_id:30)
        )
      }
    )
    (C {(test_expect_success)} 
      {(SQ (Token id:Id.Lit_Chars val:'mode-only change show as a 0-line change' span_id:37))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:41) 
          (Token id:Id.Lit_Chars val:'\tgit reset --hard &&\n' span_id:42) (Token id:Id.Lit_Chars val:'\ttest_chmod +x b d &&\n' span_id:43) 
          (Token id:Id.Lit_Chars val:'\techo a >a &&\n' span_id:44) (Token id:Id.Lit_Chars val:'\techo c >c &&\n' span_id:45) 
          (Token id:Id.Lit_Chars val:'\tcat >expect <<-\\EOF &&\n' span_id:46) (Token id:Id.Lit_Chars val:'\t a | 1 +\n' span_id:47) 
          (Token id:Id.Lit_Chars val:'\t b | 0\n' span_id:48) (Token id:Id.Lit_Chars val:'\t ...\n' span_id:49) 
          (Token id:Id.Lit_Chars val:'\t 4 files changed, 2 insertions(+)\n' span_id:50) (Token id:Id.Lit_Chars val:'\tEOF\n' span_id:51) 
          (Token
            id: Id.Lit_Chars
            val: '\tgit diff --stat --stat-count=2 HEAD >actual &&\n'
            span_id: 52
          ) (Token id:Id.Lit_Chars val:'\ttest_i18ncmp expect actual\n' span_id:53)
        )
      }
    )
    (C {(test_expect_success)} 
      {(SQ (Token id:Id.Lit_Chars val:'binary changes do not count in lines' span_id:60))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:64) 
          (Token id:Id.Lit_Chars val:'\tgit reset --hard &&\n' span_id:65) (Token id:Id.Lit_Chars val:'\techo a >a &&\n' span_id:66) 
          (Token id:Id.Lit_Chars val:'\techo c >c &&\n' span_id:67) (Token id:Id.Lit_Chars val:'\tcat "$TEST_DIRECTORY"/test-binary-1.png >d &&\n' span_id:68) 
          (Token id:Id.Lit_Chars val:'\tcat >expect <<-\\EOF &&\n' span_id:69) (Token id:Id.Lit_Chars val:'\t a | 1 +\n' span_id:70) 
          (Token id:Id.Lit_Chars val:'\t c | 1 +\n' span_id:71) (Token id:Id.Lit_Chars val:'\t ...\n' span_id:72) 
          (Token id:Id.Lit_Chars val:'\t 3 files changed, 2 insertions(+)\n' span_id:73) (Token id:Id.Lit_Chars val:'\tEOF\n' span_id:74) 
          (Token
            id: Id.Lit_Chars
            val: '\tgit diff --stat --stat-count=2 >actual &&\n'
            span_id: 75
          ) (Token id:Id.Lit_Chars val:'\ttest_i18ncmp expect actual\n' span_id:76)
        )
      }
    )
    (C {(test_expect_success)} 
      {(SQ (Token id:Id.Lit_Chars val:'exclude unmerged entries from total file count' span_id:83))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:87) 
          (Token id:Id.Lit_Chars val:'\tgit reset --hard &&\n' span_id:88) (Token id:Id.Lit_Chars val:'\techo a >a &&\n' span_id:89) 
          (Token id:Id.Lit_Chars val:'\techo b >b &&\n' span_id:90) (Token id:Id.Lit_Chars val:'\tgit ls-files -s a >x &&\n' span_id:91) 
          (Token id:Id.Lit_Chars val:'\tgit rm -f d &&\n' span_id:92) (Token id:Id.Lit_Chars val:'\tfor stage in 1 2 3\n' span_id:93) 
          (Token id:Id.Lit_Chars val:'\tdo\n' span_id:94) (Token id:Id.Lit_Chars val:'\t\tsed -e "s/ 0\ta/ $stage\td/" x\n' span_id:95) 
          (Token id:Id.Lit_Chars val:'\tdone |\n' span_id:96) (Token id:Id.Lit_Chars val:'\tgit update-index --index-info &&\n' span_id:97) 
          (Token id:Id.Lit_Chars val:'\techo d >d &&\n' span_id:98) (Token id:Id.Lit_Chars val:'\tcat >expect <<-\\EOF &&\n' span_id:99) 
          (Token id:Id.Lit_Chars val:'\t a | 1 +\n' span_id:100) (Token id:Id.Lit_Chars val:'\t b | 1 +\n' span_id:101) 
          (Token id:Id.Lit_Chars val:'\t ...\n' span_id:102) (Token id:Id.Lit_Chars val:'\t 3 files changed, 3 insertions(+)\n' span_id:103) 
          (Token id:Id.Lit_Chars val:'\tEOF\n' span_id:104) (Token id:Id.Lit_Chars val:'\tgit diff --stat --stat-count=2 >actual &&\n' span_id:105) 
          (Token id:Id.Lit_Chars val:'\ttest_i18ncmp expect actual\n' span_id:106)
        )
      }
    )
    (C {(test_done)})
  ]
)