(command.CommandList children: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'test_description='> name:test_description) op: assign_op.Equal rhs: {(SQ <'test globbing (and noglob) of pathspec limiting'>)} spids: [4] ) ] redirects: [] ) (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>}) ] )