(command.CommandList
  children: [
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:test_description)
          op: assign_op.Equal
          rhs: {(SQ <'test globbing (and noglob) of pathspec limiting'>)}
          spids: [4]
        )
      ]
    )
    (C {<.>} {<'./test-lib.sh'>})
    (C {<test_expect_success>} {(SQ <'create commits with glob characters'>)} 
      {
        (SQ <'\n'> <'\ttest_commit unrelated bar &&\n'> <'\ttest_commit vanilla foo &&\n'> 
          <'\t# insert file "f*" in the commit, but in a way that avoids\n'> <'\t# the name "f*" in the worktree, because it is not allowed\n'> 
          <'\t# on Windows (the tests below do not depend on the presence\n'> <'\t# of the file in the worktree)\n'> 
          <'\tgit update-index --add --cacheinfo 100644 "$(git rev-parse HEAD:foo)" "f*" &&\n'> <'\ttest_tick &&\n'> <'\tgit commit -m star &&\n'> <'\ttest_commit bracket "f[o][o]"\n'>
        )
      }
    )
    (C {<test_expect_success>} {(SQ <'vanilla pathspec matches literally'>)} 
      {
        (SQ <'\n'> <'\techo vanilla >expect &&\n'> <'\tgit log --format=%s -- foo >actual &&\n'> 
          <'\ttest_cmp expect actual\n'>
        )
      }
    )
    (C {<test_expect_success>} {(SQ <'star pathspec globs'>)} 
      {
        (SQ <'\n'> <'\tcat >expect <<-\\EOF &&\n'> <'\tbracket\n'> <'\tstar\n'> <'\tvanilla\n'> 
          <'\tEOF\n'> <'\tgit log --format=%s -- "f*" >actual &&\n'> <'\ttest_cmp expect actual\n'>
        )
      }
    )
    (C {<test_expect_success>} {(SQ <'star pathspec globs'>)} 
      {
        (SQ <'\n'> <'\tcat >expect <<-\\EOF &&\n'> <'\tbracket\n'> <'\tstar\n'> <'\tvanilla\n'> 
          <'\tEOF\n'> <'\tgit log --format=%s -- ":(glob)f*" >actual &&\n'> <'\ttest_cmp expect actual\n'>
        )
      }
    )
    (C {<test_expect_success>} {(SQ <'bracket pathspec globs and matches literal brackets'>)} 
      {
        (SQ <'\n'> <'\tcat >expect <<-\\EOF &&\n'> <'\tbracket\n'> <'\tvanilla\n'> <'\tEOF\n'> 
          <'\tgit log --format=%s -- "f[o][o]" >actual &&\n'> <'\ttest_cmp expect actual\n'>
        )
      }
    )
    (C {<test_expect_success>} {(SQ <'bracket pathspec globs and matches literal brackets'>)} 
      {
        (SQ <'\n'> <'\tcat >expect <<-\\EOF &&\n'> <'\tbracket\n'> <'\tvanilla\n'> <'\tEOF\n'> 
          <'\tgit log --format=%s -- ":(glob)f[o][o]" >actual &&\n'> <'\ttest_cmp expect actual\n'>
        )
      }
    )
    (C {<test_expect_success>} {(SQ <'no-glob option matches literally (vanilla)'>)} 
      {
        (SQ <'\n'> <'\techo vanilla >expect &&\n'> 
          <'\tgit --literal-pathspecs log --format=%s -- foo >actual &&\n'> <'\ttest_cmp expect actual\n'>
        )
      }
    )
    (C {<test_expect_success>} {(SQ <'no-glob option matches literally (vanilla)'>)} 
      {
        (SQ <'\n'> <'\techo vanilla >expect &&\n'> 
          <'\tgit log --format=%s -- ":(literal)foo" >actual &&\n'> <'\ttest_cmp expect actual\n'>
        )
      }
    )
    (C {<test_expect_success>} {(SQ <'no-glob option matches literally (star)'>)} 
      {
        (SQ <'\n'> <'\techo star >expect &&\n'> 
          <'\tgit --literal-pathspecs log --format=%s -- "f*" >actual &&\n'> <'\ttest_cmp expect actual\n'>
        )
      }
    )
    (C {<test_expect_success>} {(SQ <'no-glob option matches literally (star)'>)} 
      {
        (SQ <'\n'> <'\techo star >expect &&\n'> 
          <'\tgit log --format=%s -- ":(literal)f*" >actual &&\n'> <'\ttest_cmp expect actual\n'>
        )
      }
    )
    (C {<test_expect_success>} {(SQ <'no-glob option matches literally (bracket)'>)} 
      {
        (SQ <'\n'> <'\techo bracket >expect &&\n'> 
          <'\tgit --literal-pathspecs log --format=%s -- "f[o][o]" >actual &&\n'> <'\ttest_cmp expect actual\n'>
        )
      }
    )
    (C {<test_expect_success>} {(SQ <'no-glob option matches literally (bracket)'>)} 
      {
        (SQ <'\n'> <'\techo bracket >expect &&\n'> 
          <'\tgit log --format=%s -- ":(literal)f[o][o]" >actual &&\n'> <'\ttest_cmp expect actual\n'>
        )
      }
    )
    (C {<test_expect_success>} {(SQ <'no-glob option disables :(literal)'>)} 
      {
        (SQ <'\n'> <'\t: >expect &&\n'> 
          <'\tgit --literal-pathspecs log --format=%s -- ":(literal)foo" >actual &&\n'> <'\ttest_cmp expect actual\n'>
        )
      }
    )
    (C {<test_expect_success>} {(SQ <'no-glob environment variable works'>)} 
      {
        (SQ <'\n'> <'\techo star >expect &&\n'> 
          <'\tGIT_LITERAL_PATHSPECS=1 git log --format=%s -- "f*" >actual &&\n'> <'\ttest_cmp expect actual\n'>
        )
      }
    )
    (C {<test_expect_success>} {(SQ <'blame takes global pathspec flags'>)} 
      {
        (SQ <'\n'> <'\tgit --literal-pathspecs blame -- foo &&\n'> 
          <'\tgit --icase-pathspecs   blame -- foo &&\n'> <'\tgit --glob-pathspecs    blame -- foo &&\n'> <'\tgit --noglob-pathspecs  blame -- foo\n'>
        )
      }
    )
    (C {<test_expect_success>} {(SQ <'setup xxx/bar'>)} 
      {(SQ <'\n'> <'\tmkdir xxx &&\n'> <'\ttest_commit xxx xxx/bar\n'>)}
    )
    (C {<test_expect_success>} {(SQ <'**/ works with :(glob)'>)} 
      {
        (SQ <'\n'> <'\tcat >expect <<-\\EOF &&\n'> <'\txxx\n'> <'\tunrelated\n'> <'\tEOF\n'> 
          <'\tgit log --format=%s -- ":(glob)**/bar" >actual &&\n'> <'\ttest_cmp expect actual\n'>
        )
      }
    )
    (C {<test_expect_success>} {(SQ <'**/ does not work with --noglob-pathspecs'>)} 
      {
        (SQ <'\n'> <'\t: >expect &&\n'> 
          <'\tgit --noglob-pathspecs log --format=%s -- "**/bar" >actual &&\n'> <'\ttest_cmp expect actual\n'>
        )
      }
    )
    (C {<test_expect_success>} {(SQ <'**/ works with :(glob) and --noglob-pathspecs'>)} 
      {
        (SQ <'\n'> <'\tcat >expect <<-\\EOF &&\n'> <'\txxx\n'> <'\tunrelated\n'> <'\tEOF\n'> 
          <'\tgit --noglob-pathspecs log --format=%s -- ":(glob)**/bar" >actual &&\n'> <'\ttest_cmp expect actual\n'>
        )
      }
    )
    (C {<test_expect_success>} {(SQ <'**/ works with --glob-pathspecs'>)} 
      {
        (SQ <'\n'> <'\tcat >expect <<-\\EOF &&\n'> <'\txxx\n'> <'\tunrelated\n'> <'\tEOF\n'> 
          <'\tgit --glob-pathspecs log --format=%s -- "**/bar" >actual &&\n'> <'\ttest_cmp expect actual\n'>
        )
      }
    )
    (C {<test_expect_success>} {(SQ <'**/ does not work with :(literal) and --glob-pathspecs'>)} 
      {
        (SQ <'\n'> <'\t: >expect &&\n'> 
          <'\tgit --glob-pathspecs log --format=%s -- ":(literal)**/bar" >actual &&\n'> <'\ttest_cmp expect actual\n'>
        )
      }
    )
    (C {<test_done>})
  ]
)