(command.CommandList
  children: [
    (command.ShAssignment
      left: <Id.Lit_VarLike 'test_description='>
      pairs: [
        (AssignPair
          left: <Id.Lit_VarLike 'test_description='>
          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'test_description='> name:test_description)
          op: assign_op.Equal
          rhs: {(SQ <'test case exclude pathspec'>)}
        )
      ]
      redirects: []
    )
    (command.Simple
      blame_tok: <.>
      more_env: []
      words: [{<.>} {<'./test-lib.sh'>}]
      redirects: []
      do_fork: T
    )
    (command.Simple
      blame_tok: <test_expect_success>
      more_env: []
      words: [
        {<test_expect_success>}
        {(SQ <setup>)}
        {
          (SQ <'\n'> 
            <'\tfor p in file sub/file sub/sub/file sub/file2 sub/sub/sub/file sub2/file; do\n'> <'\t\tif echo $p | grep /; then\n'> <'\t\t\tmkdir -p $(dirname $p)\n'> <'\t\tfi &&\n'> 
            <'\t\t: >$p &&\n'> <'\t\tgit add $p &&\n'> <'\t\tgit commit -m $p\n'> <'\tdone &&\n'> 
            <'\tgit log --oneline --format=%s >actual &&\n'> <'\tcat <<EOF >expect &&\n'> <'sub2/file\n'> <'sub/sub/sub/file\n'> <'sub/file2\n'> <'sub/sub/file\n'> 
            <'sub/file\n'> <'file\n'> <'EOF\n'> <'\ttest_cmp expect actual\n'>
          )
        }
      ]
      redirects: []
      do_fork: T
    )
    (command.Simple
      blame_tok: <test_expect_success>
      more_env: []
      words: [
        {<test_expect_success>}
        {(SQ <'exclude only should error out'>)}
        {(SQ <'\n'> <'\ttest_must_fail git log --oneline --format=%s -- ":(exclude)sub"\n'>)}
      ]
      redirects: []
      do_fork: T
    )
    (command.Simple
      blame_tok: <test_expect_success>
      more_env: []
      words: [
        {<test_expect_success>}
        {(SQ <'t_e_i() exclude sub'>)}
        {
          (SQ <'\n'> <'\tgit log --oneline --format=%s -- . ":(exclude)sub" >actual &&\n'> 
            <'\tcat <<EOF >expect &&\n'> <'sub2/file\n'> <'file\n'> <'EOF\n'> <'\ttest_cmp expect actual\n'>
          )
        }
      ]
      redirects: []
      do_fork: T
    )
    (command.Simple
      blame_tok: <test_expect_success>
      more_env: []
      words: [
        {<test_expect_success>}
        {(SQ <'t_e_i() exclude sub/sub/file'>)}
        {
          (SQ <'\n'> <'\tgit log --oneline --format=%s -- . ":(exclude)sub/sub/file" >actual &&\n'> 
            <'\tcat <<EOF >expect &&\n'> <'sub2/file\n'> <'sub/sub/sub/file\n'> <'sub/file2\n'> <'sub/file\n'> <'file\n'> <'EOF\n'> 
            <'\ttest_cmp expect actual\n'>
          )
        }
      ]
      redirects: []
      do_fork: T
    )
    (command.Simple
      blame_tok: <test_expect_success>
      more_env: []
      words: [
        {<test_expect_success>}
        {(SQ <'t_e_i() exclude sub using mnemonic'>)}
        {
          (SQ <'\n'> <'\tgit log --oneline --format=%s -- . ":!sub" >actual &&\n'> 
            <'\tcat <<EOF >expect &&\n'> <'sub2/file\n'> <'file\n'> <'EOF\n'> <'\ttest_cmp expect actual\n'>
          )
        }
      ]
      redirects: []
      do_fork: T
    )
    (command.Simple
      blame_tok: <test_expect_success>
      more_env: []
      words: [
        {<test_expect_success>}
        {(SQ <'t_e_i() exclude :(icase)SUB'>)}
        {
          (SQ <'\n'> <'\tgit log --oneline --format=%s -- . ":(exclude,icase)SUB" >actual &&\n'> 
            <'\tcat <<EOF >expect &&\n'> <'sub2/file\n'> <'file\n'> <'EOF\n'> <'\ttest_cmp expect actual\n'>
          )
        }
      ]
      redirects: []
      do_fork: T
    )
    (command.Simple
      blame_tok: <test_expect_success>
      more_env: []
      words: [
        {<test_expect_success>}
        {(SQ <'t_e_i() exclude sub2 from sub'>)}
        {
          (SQ <'\n'> <'\t(\n'> <'\tcd sub &&\n'> 
            <'\tgit log --oneline --format=%s -- :/ ":/!sub2" >actual &&\n'> <'\tcat <<EOF >expect &&\n'> <'sub/sub/sub/file\n'> <'sub/file2\n'> <'sub/sub/file\n'> <'sub/file\n'> 
            <'file\n'> <'EOF\n'> <'\ttest_cmp expect actual\n'> <'\t)\n'>
          )
        }
      ]
      redirects: []
      do_fork: T
    )
    (command.Simple
      blame_tok: <test_expect_success>
      more_env: []
      words: [
        {<test_expect_success>}
        {(SQ <'t_e_i() exclude sub/*file'>)}
        {
          (SQ <'\n'> <'\tgit log --oneline --format=%s -- . ":(exclude)sub/*file" >actual &&\n'> 
            <'\tcat <<EOF >expect &&\n'> <'sub2/file\n'> <'sub/file2\n'> <'file\n'> <'EOF\n'> <'\ttest_cmp expect actual\n'>
          )
        }
      ]
      redirects: []
      do_fork: T
    )
    (command.Simple
      blame_tok: <test_expect_success>
      more_env: []
      words: [
        {<test_expect_success>}
        {(SQ <'t_e_i() exclude :(glob)sub/*/file'>)}
        {
          (SQ <'\n'> <'\tgit log --oneline --format=%s -- . ":(exclude,glob)sub/*/file" >actual &&\n'> 
            <'\tcat <<EOF >expect &&\n'> <'sub2/file\n'> <'sub/sub/sub/file\n'> <'sub/file2\n'> <'sub/file\n'> <'file\n'> <'EOF\n'> 
            <'\ttest_cmp expect actual\n'>
          )
        }
      ]
      redirects: []
      do_fork: T
    )
    (command.Simple
      blame_tok: <test_expect_success>
      more_env: []
      words: [
        {<test_expect_success>}
        {(SQ <'m_p_d() exclude sub'>)}
        {
          (SQ <'\n'> <'\tgit ls-files -- . ":(exclude)sub" >actual &&\n'> <'\tcat <<EOF >expect &&\n'> 
            <'file\n'> <'sub2/file\n'> <'EOF\n'> <'\ttest_cmp expect actual\n'>
          )
        }
      ]
      redirects: []
      do_fork: T
    )
    (command.Simple
      blame_tok: <test_expect_success>
      more_env: []
      words: [
        {<test_expect_success>}
        {(SQ <'m_p_d() exclude sub/sub/file'>)}
        {
          (SQ <'\n'> <'\tgit ls-files -- . ":(exclude)sub/sub/file" >actual &&\n'> 
            <'\tcat <<EOF >expect &&\n'> <'file\n'> <'sub/file\n'> <'sub/file2\n'> <'sub/sub/sub/file\n'> <'sub2/file\n'> <'EOF\n'> 
            <'\ttest_cmp expect actual\n'>
          )
        }
      ]
      redirects: []
      do_fork: T
    )
    (command.Simple
      blame_tok: <test_expect_success>
      more_env: []
      words: [
        {<test_expect_success>}
        {(SQ <'m_p_d() exclude sub using mnemonic'>)}
        {
          (SQ <'\n'> <'\tgit ls-files -- . ":!sub" >actual &&\n'> <'\tcat <<EOF >expect &&\n'> 
            <'file\n'> <'sub2/file\n'> <'EOF\n'> <'\ttest_cmp expect actual\n'>
          )
        }
      ]
      redirects: []
      do_fork: T
    )
    (command.Simple
      blame_tok: <test_expect_success>
      more_env: []
      words: [
        {<test_expect_success>}
        {(SQ <'m_p_d() exclude :(icase)SUB'>)}
        {
          (SQ <'\n'> <'\tgit ls-files -- . ":(exclude,icase)SUB" >actual &&\n'> 
            <'\tcat <<EOF >expect &&\n'> <'file\n'> <'sub2/file\n'> <'EOF\n'> <'\ttest_cmp expect actual\n'>
          )
        }
      ]
      redirects: []
      do_fork: T
    )
    (command.Simple
      blame_tok: <test_expect_success>
      more_env: []
      words: [
        {<test_expect_success>}
        {(SQ <'m_p_d() exclude sub2 from sub'>)}
        {
          (SQ <'\n'> <'\t(\n'> <'\tcd sub &&\n'> <'\tgit ls-files -- :/ ":/!sub2" >actual &&\n'> 
            <'\tcat <<EOF >expect &&\n'> <'../file\n'> <'file\n'> <'file2\n'> <'sub/file\n'> <'sub/sub/file\n'> <'EOF\n'> 
            <'\ttest_cmp expect actual\n'> <'\t)\n'>
          )
        }
      ]
      redirects: []
      do_fork: T
    )
    (command.Simple
      blame_tok: <test_expect_success>
      more_env: []
      words: [
        {<test_expect_success>}
        {(SQ <'m_p_d() exclude sub/*file'>)}
        {
          (SQ <'\n'> <'\tgit ls-files -- . ":(exclude)sub/*file" >actual &&\n'> 
            <'\tcat <<EOF >expect &&\n'> <'file\n'> <'sub/file2\n'> <'sub2/file\n'> <'EOF\n'> <'\ttest_cmp expect actual\n'>
          )
        }
      ]
      redirects: []
      do_fork: T
    )
    (command.Simple
      blame_tok: <test_expect_success>
      more_env: []
      words: [
        {<test_expect_success>}
        {(SQ <'m_p_d() exclude :(glob)sub/*/file'>)}
        {
          (SQ <'\n'> <'\tgit ls-files -- . ":(exclude,glob)sub/*/file" >actual &&\n'> 
            <'\tcat <<EOF >expect &&\n'> <'file\n'> <'sub/file\n'> <'sub/file2\n'> <'sub/sub/sub/file\n'> <'sub2/file\n'> <'EOF\n'> 
            <'\ttest_cmp expect actual\n'>
          )
        }
      ]
      redirects: []
      do_fork: T
    )
    (command.Simple
      blame_tok: <test_done>
      more_env: []
      words: [{<test_done>}]
      redirects: []
      do_fork: T
    )
  ]
)