(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)}) ] )