(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: 'test globbing (and noglob) of pathspec limiting'
                  span_id: 6
                )
              )
            }
          spids: [4]
        )
      ]
    )
    (C {(.)} {(./test-lib.sh)})
    (C {(test_expect_success)} 
      {(SQ (Token id:Id.Lit_Chars val:'create commits with glob characters' span_id:17))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:21) 
          (Token id:Id.Lit_Chars val:'\ttest_commit unrelated bar &&\n' span_id:22) (Token id:Id.Lit_Chars val:'\ttest_commit vanilla foo &&\n' span_id:23) 
          (Token
            id: Id.Lit_Chars
            val: '\t# insert file "f*" in the commit, but in a way that avoids\n'
            span_id: 24
          ) 
          (Token
            id: Id.Lit_Chars
            val: '\t# the name "f*" in the worktree, because it is not allowed\n'
            span_id: 25
          ) 
          (Token
            id: Id.Lit_Chars
            val: '\t# on Windows (the tests below do not depend on the presence\n'
            span_id: 26
          ) (Token id:Id.Lit_Chars val:'\t# of the file in the worktree)\n' span_id:27) 
          (Token
            id: Id.Lit_Chars
            val: '\tgit update-index --add --cacheinfo 100644 "$(git rev-parse HEAD:foo)" "f*" &&\n'
            span_id: 28
          ) (Token id:Id.Lit_Chars val:'\ttest_tick &&\n' span_id:29) 
          (Token id:Id.Lit_Chars val:'\tgit commit -m star &&\n' span_id:30) (Token id:Id.Lit_Chars val:'\ttest_commit bracket "f[o][o]"\n' span_id:31)
        )
      }
    )
    (C {(test_expect_success)} 
      {(SQ (Token id:Id.Lit_Chars val:'vanilla pathspec matches literally' span_id:38))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:42) 
          (Token id:Id.Lit_Chars val:'\techo vanilla >expect &&\n' span_id:43) (Token id:Id.Lit_Chars val:'\tgit log --format=%s -- foo >actual &&\n' span_id:44) 
          (Token id:Id.Lit_Chars val:'\ttest_cmp expect actual\n' span_id:45)
        )
      }
    )
    (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'star pathspec globs' span_id:52))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:56) 
          (Token id:Id.Lit_Chars val:'\tcat >expect <<-\\EOF &&\n' span_id:57) (Token id:Id.Lit_Chars val:'\tbracket\n' span_id:58) (Token id:Id.Lit_Chars val:'\tstar\n' span_id:59) 
          (Token id:Id.Lit_Chars val:'\tvanilla\n' span_id:60) (Token id:Id.Lit_Chars val:'\tEOF\n' span_id:61) 
          (Token
            id: Id.Lit_Chars
            val: '\tgit log --format=%s -- "f*" >actual &&\n'
            span_id: 62
          ) (Token id:Id.Lit_Chars val:'\ttest_cmp expect actual\n' span_id:63)
        )
      }
    )
    (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'star pathspec globs' span_id:70))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:74) 
          (Token id:Id.Lit_Chars val:'\tcat >expect <<-\\EOF &&\n' span_id:75) (Token id:Id.Lit_Chars val:'\tbracket\n' span_id:76) (Token id:Id.Lit_Chars val:'\tstar\n' span_id:77) 
          (Token id:Id.Lit_Chars val:'\tvanilla\n' span_id:78) (Token id:Id.Lit_Chars val:'\tEOF\n' span_id:79) 
          (Token
            id: Id.Lit_Chars
            val: '\tgit log --format=%s -- ":(glob)f*" >actual &&\n'
            span_id: 80
          ) (Token id:Id.Lit_Chars val:'\ttest_cmp expect actual\n' span_id:81)
        )
      }
    )
    (C {(test_expect_success)} 
      {
        (SQ 
          (Token
            id: Id.Lit_Chars
            val: 'bracket pathspec globs and matches literal brackets'
            span_id: 88
          )
        )
      } 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:92) 
          (Token id:Id.Lit_Chars val:'\tcat >expect <<-\\EOF &&\n' span_id:93) (Token id:Id.Lit_Chars val:'\tbracket\n' span_id:94) 
          (Token id:Id.Lit_Chars val:'\tvanilla\n' span_id:95) (Token id:Id.Lit_Chars val:'\tEOF\n' span_id:96) 
          (Token
            id: Id.Lit_Chars
            val: '\tgit log --format=%s -- "f[o][o]" >actual &&\n'
            span_id: 97
          ) (Token id:Id.Lit_Chars val:'\ttest_cmp expect actual\n' span_id:98)
        )
      }
    )
    (C {(test_expect_success)} 
      {
        (SQ 
          (Token
            id: Id.Lit_Chars
            val: 'bracket pathspec globs and matches literal brackets'
            span_id: 105
          )
        )
      } 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:109) 
          (Token id:Id.Lit_Chars val:'\tcat >expect <<-\\EOF &&\n' span_id:110) (Token id:Id.Lit_Chars val:'\tbracket\n' span_id:111) 
          (Token id:Id.Lit_Chars val:'\tvanilla\n' span_id:112) (Token id:Id.Lit_Chars val:'\tEOF\n' span_id:113) 
          (Token
            id: Id.Lit_Chars
            val: '\tgit log --format=%s -- ":(glob)f[o][o]" >actual &&\n'
            span_id: 114
          ) (Token id:Id.Lit_Chars val:'\ttest_cmp expect actual\n' span_id:115)
        )
      }
    )
    (C {(test_expect_success)} 
      {(SQ (Token id:Id.Lit_Chars val:'no-glob option matches literally (vanilla)' span_id:122))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:126) 
          (Token id:Id.Lit_Chars val:'\techo vanilla >expect &&\n' span_id:127) 
          (Token
            id: Id.Lit_Chars
            val: '\tgit --literal-pathspecs log --format=%s -- foo >actual &&\n'
            span_id: 128
          ) (Token id:Id.Lit_Chars val:'\ttest_cmp expect actual\n' span_id:129)
        )
      }
    )
    (C {(test_expect_success)} 
      {(SQ (Token id:Id.Lit_Chars val:'no-glob option matches literally (vanilla)' span_id:136))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:140) 
          (Token id:Id.Lit_Chars val:'\techo vanilla >expect &&\n' span_id:141) (Token id:Id.Lit_Chars val:'\tgit log --format=%s -- ":(literal)foo" >actual &&\n' span_id:142) 
          (Token id:Id.Lit_Chars val:'\ttest_cmp expect actual\n' span_id:143)
        )
      }
    )
    (C {(test_expect_success)} 
      {(SQ (Token id:Id.Lit_Chars val:'no-glob option matches literally (star)' span_id:150))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:154) 
          (Token id:Id.Lit_Chars val:'\techo star >expect &&\n' span_id:155) 
          (Token
            id: Id.Lit_Chars
            val: '\tgit --literal-pathspecs log --format=%s -- "f*" >actual &&\n'
            span_id: 156
          ) (Token id:Id.Lit_Chars val:'\ttest_cmp expect actual\n' span_id:157)
        )
      }
    )
    (C {(test_expect_success)} 
      {(SQ (Token id:Id.Lit_Chars val:'no-glob option matches literally (star)' span_id:164))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:168) 
          (Token id:Id.Lit_Chars val:'\techo star >expect &&\n' span_id:169) (Token id:Id.Lit_Chars val:'\tgit log --format=%s -- ":(literal)f*" >actual &&\n' span_id:170) 
          (Token id:Id.Lit_Chars val:'\ttest_cmp expect actual\n' span_id:171)
        )
      }
    )
    (C {(test_expect_success)} 
      {(SQ (Token id:Id.Lit_Chars val:'no-glob option matches literally (bracket)' span_id:178))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:182) 
          (Token id:Id.Lit_Chars val:'\techo bracket >expect &&\n' span_id:183) 
          (Token
            id: Id.Lit_Chars
            val: '\tgit --literal-pathspecs log --format=%s -- "f[o][o]" >actual &&\n'
            span_id: 184
          ) (Token id:Id.Lit_Chars val:'\ttest_cmp expect actual\n' span_id:185)
        )
      }
    )
    (C {(test_expect_success)} 
      {(SQ (Token id:Id.Lit_Chars val:'no-glob option matches literally (bracket)' span_id:192))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:196) 
          (Token id:Id.Lit_Chars val:'\techo bracket >expect &&\n' span_id:197) (Token id:Id.Lit_Chars val:'\tgit log --format=%s -- ":(literal)f[o][o]" >actual &&\n' span_id:198) 
          (Token id:Id.Lit_Chars val:'\ttest_cmp expect actual\n' span_id:199)
        )
      }
    )
    (C {(test_expect_success)} 
      {(SQ (Token id:Id.Lit_Chars val:'no-glob option disables :(literal)' span_id:206))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:210) 
          (Token id:Id.Lit_Chars val:'\t: >expect &&\n' span_id:211) 
          (Token
            id: Id.Lit_Chars
            val: '\tgit --literal-pathspecs log --format=%s -- ":(literal)foo" >actual &&\n'
            span_id: 212
          ) (Token id:Id.Lit_Chars val:'\ttest_cmp expect actual\n' span_id:213)
        )
      }
    )
    (C {(test_expect_success)} 
      {(SQ (Token id:Id.Lit_Chars val:'no-glob environment variable works' span_id:220))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:224) 
          (Token id:Id.Lit_Chars val:'\techo star >expect &&\n' span_id:225) 
          (Token
            id: Id.Lit_Chars
            val: '\tGIT_LITERAL_PATHSPECS=1 git log --format=%s -- "f*" >actual &&\n'
            span_id: 226
          ) (Token id:Id.Lit_Chars val:'\ttest_cmp expect actual\n' span_id:227)
        )
      }
    )
    (C {(test_expect_success)} 
      {(SQ (Token id:Id.Lit_Chars val:'blame takes global pathspec flags' span_id:234))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:238) 
          (Token
            id: Id.Lit_Chars
            val: '\tgit --literal-pathspecs blame -- foo &&\n'
            span_id: 239
          ) (Token id:Id.Lit_Chars val:'\tgit --icase-pathspecs   blame -- foo &&\n' span_id:240) 
          (Token
            id: Id.Lit_Chars
            val: '\tgit --glob-pathspecs    blame -- foo &&\n'
            span_id: 241
          ) (Token id:Id.Lit_Chars val:'\tgit --noglob-pathspecs  blame -- foo\n' span_id:242)
        )
      }
    )
    (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'setup xxx/bar' span_id:249))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:253) 
          (Token id:Id.Lit_Chars val:'\tmkdir xxx &&\n' span_id:254) (Token id:Id.Lit_Chars val:'\ttest_commit xxx xxx/bar\n' span_id:255)
        )
      }
    )
    (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'**/ works with :(glob)' span_id:262))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:266) 
          (Token id:Id.Lit_Chars val:'\tcat >expect <<-\\EOF &&\n' span_id:267) (Token id:Id.Lit_Chars val:'\txxx\n' span_id:268) 
          (Token id:Id.Lit_Chars val:'\tunrelated\n' span_id:269) (Token id:Id.Lit_Chars val:'\tEOF\n' span_id:270) 
          (Token
            id: Id.Lit_Chars
            val: '\tgit log --format=%s -- ":(glob)**/bar" >actual &&\n'
            span_id: 271
          ) (Token id:Id.Lit_Chars val:'\ttest_cmp expect actual\n' span_id:272)
        )
      }
    )
    (C {(test_expect_success)} 
      {(SQ (Token id:Id.Lit_Chars val:'**/ does not work with --noglob-pathspecs' span_id:279))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:283) 
          (Token id:Id.Lit_Chars val:'\t: >expect &&\n' span_id:284) 
          (Token
            id: Id.Lit_Chars
            val: '\tgit --noglob-pathspecs log --format=%s -- "**/bar" >actual &&\n'
            span_id: 285
          ) (Token id:Id.Lit_Chars val:'\ttest_cmp expect actual\n' span_id:286)
        )
      }
    )
    (C {(test_expect_success)} 
      {(SQ (Token id:Id.Lit_Chars val:'**/ works with :(glob) and --noglob-pathspecs' span_id:293))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:297) 
          (Token id:Id.Lit_Chars val:'\tcat >expect <<-\\EOF &&\n' span_id:298) (Token id:Id.Lit_Chars val:'\txxx\n' span_id:299) 
          (Token id:Id.Lit_Chars val:'\tunrelated\n' span_id:300) (Token id:Id.Lit_Chars val:'\tEOF\n' span_id:301) 
          (Token
            id: Id.Lit_Chars
            val: '\tgit --noglob-pathspecs log --format=%s -- ":(glob)**/bar" >actual &&\n'
            span_id: 302
          ) (Token id:Id.Lit_Chars val:'\ttest_cmp expect actual\n' span_id:303)
        )
      }
    )
    (C {(test_expect_success)} 
      {(SQ (Token id:Id.Lit_Chars val:'**/ works with --glob-pathspecs' span_id:310))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:314) 
          (Token id:Id.Lit_Chars val:'\tcat >expect <<-\\EOF &&\n' span_id:315) (Token id:Id.Lit_Chars val:'\txxx\n' span_id:316) 
          (Token id:Id.Lit_Chars val:'\tunrelated\n' span_id:317) (Token id:Id.Lit_Chars val:'\tEOF\n' span_id:318) 
          (Token
            id: Id.Lit_Chars
            val: '\tgit --glob-pathspecs log --format=%s -- "**/bar" >actual &&\n'
            span_id: 319
          ) (Token id:Id.Lit_Chars val:'\ttest_cmp expect actual\n' span_id:320)
        )
      }
    )
    (C {(test_expect_success)} 
      {
        (SQ 
          (Token
            id: Id.Lit_Chars
            val: '**/ does not work with :(literal) and --glob-pathspecs'
            span_id: 327
          )
        )
      } 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:331) 
          (Token id:Id.Lit_Chars val:'\t: >expect &&\n' span_id:332) 
          (Token
            id: Id.Lit_Chars
            val: '\tgit --glob-pathspecs log --format=%s -- ":(literal)**/bar" >actual &&\n'
            span_id: 333
          ) (Token id:Id.Lit_Chars val:'\ttest_cmp expect actual\n' span_id:334)
        )
      }
    )
    (C {(test_done)})
  ]
)