(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 <'rev-list/rev-parse --glob'>)} spids: [4] ) ] redirects: [] ) (C {<.>} {<'./test-lib.sh'>}) (command.ShFunction name: commit body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (command.AndOr ops: [Id.Op_DAmp Id.Op_DAmp Id.Op_DAmp] children: [ (C {<test_tick>}) (command.Simple words: [{<echo>} {($ Id.VSub_Number 1)}] redirects: [(redir op:<Id.Redir_Great '>'> loc:(redir_loc.Fd fd:1) arg:{<foo>})] more_env: [] do_fork: T ) (C {<git>} {<add>} {<foo>}) (C {<git>} {<commit>} {<-m>} {(DQ ($ Id.VSub_Number 1))}) ] ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.ShFunction name: compare body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (command.AndOr ops: [Id.Op_DAmp Id.Op_DAmp] children: [ (command.Simple words: [{<git>} {($ Id.VSub_Number 1)} {($ Id.VSub_Number 2)}] redirects: [(redir op:<Id.Redir_Great '>'> loc:(redir_loc.Fd fd:1) arg:{<expected>})] more_env: [] do_fork: T ) (command.Simple words: [{<git>} {($ Id.VSub_Number 1)} {($ Id.VSub_Number 3)}] redirects: [(redir op:<Id.Redir_Great '>'> loc:(redir_loc.Fd fd:1) arg:{<actual>})] more_env: [] do_fork: T ) (C {<test_cmp>} {<expected>} {<actual>}) ] ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (C {<test_expect_success>} {(SQ <setup>)} { (SQ <'\n'> <'\n'> <'\tcommit master &&\n'> <'\tgit checkout -b subspace/one master &&\n'> <'\tcommit one &&\n'> <'\tgit checkout -b subspace/two master &&\n'> <'\tcommit two &&\n'> <'\tgit checkout -b subspace-x master &&\n'> <'\tcommit subspace-x &&\n'> <'\tgit checkout -b other/three master &&\n'> <'\tcommit three &&\n'> <'\tgit checkout -b someref master &&\n'> <'\tcommit some &&\n'> <'\tgit checkout master &&\n'> <'\tcommit master2 &&\n'> <'\tgit tag foo/bar master &&\n'> <'\tcommit master3 &&\n'> <'\tgit update-ref refs/remotes/foo/baz master &&\n'> <'\tcommit master4\n'> ) } ) (C {<test_expect_success>} {(SQ <'rev-parse --glob=refs/heads/subspace/*'>)} { (SQ <'\n'> <'\n'> <'\tcompare rev-parse "subspace/one subspace/two" "--glob=refs/heads/subspace/*"\n'> <'\n'> ) } ) (C {<test_expect_success>} {(SQ <'rev-parse --glob=heads/subspace/*'>)} { (SQ <'\n'> <'\n'> <'\tcompare rev-parse "subspace/one subspace/two" "--glob=heads/subspace/*"\n'> <'\n'> ) } ) (C {<test_expect_success>} {(SQ <'rev-parse --glob=refs/heads/subspace/'>)} { (SQ <'\n'> <'\n'> <'\tcompare rev-parse "subspace/one subspace/two" "--glob=refs/heads/subspace/"\n'> <'\n'> ) } ) (C {<test_expect_success>} {(SQ <'rev-parse --glob=heads/subspace/'>)} { (SQ <'\n'> <'\n'> <'\tcompare rev-parse "subspace/one subspace/two" "--glob=heads/subspace/"\n'> <'\n'> ) } ) (C {<test_expect_success>} {(SQ <'rev-parse --glob=heads/subspace'>)} { (SQ <'\n'> <'\n'> <'\tcompare rev-parse "subspace/one subspace/two" "--glob=heads/subspace"\n'> <'\n'> ) } ) (C {<test_expect_failure>} {(SQ <'rev-parse accepts --glob as detached option'>)} { (SQ <'\n'> <'\n'> <'\tcompare rev-parse "subspace/one subspace/two" "--glob heads/subspace"\n'> <'\n'> ) } ) (C {<test_expect_failure>} {(SQ <'rev-parse is not confused by option-like glob'>)} {(SQ <'\n'> <'\n'> <'\tcompare rev-parse "master" "--glob --symbolic master"\n'> <'\n'>)} ) (C {<test_expect_success>} {(SQ <'rev-parse --branches=subspace/*'>)} { (SQ <'\n'> <'\n'> <'\tcompare rev-parse "subspace/one subspace/two" "--branches=subspace/*"\n'> <'\n'> ) } ) (C {<test_expect_success>} {(SQ <'rev-parse --branches=subspace/'>)} { (SQ <'\n'> <'\n'> <'\tcompare rev-parse "subspace/one subspace/two" "--branches=subspace/"\n'> <'\n'> ) } ) (C {<test_expect_success>} {(SQ <'rev-parse --branches=subspace'>)} { (SQ <'\n'> <'\n'> <'\tcompare rev-parse "subspace/one subspace/two" "--branches=subspace"\n'> <'\n'> ) } ) (C {<test_expect_success>} {(SQ <'rev-parse --glob=heads/subspace/* --glob=heads/other/*'>)} { (SQ <'\n'> <'\n'> < '\tcompare rev-parse "subspace/one subspace/two other/three" "--glob=heads/subspace/* --glob=heads/other/*"\n' > <'\n'> ) } ) (C {<test_expect_success>} {(SQ <'rev-parse --glob=heads/someref/* master'>)} {(SQ <'\n'> <'\n'> <'\tcompare rev-parse "master" "--glob=heads/someref/* master"\n'> <'\n'>)} ) (C {<test_expect_success>} {(SQ <'rev-parse --glob=heads/*'>)} { (SQ <'\n'> <'\n'> < '\tcompare rev-parse "master other/three someref subspace-x subspace/one subspace/two" "--glob=heads/*"\n' > <'\n'> ) } ) (C {<test_expect_success>} {(SQ <'rev-parse --tags=foo'>)} {(SQ <'\n'> <'\n'> <'\tcompare rev-parse "foo/bar" "--tags=foo"\n'> <'\n'>)} ) (C {<test_expect_success>} {(SQ <'rev-parse --remotes=foo'>)} {(SQ <'\n'> <'\n'> <'\tcompare rev-parse "foo/baz" "--remotes=foo"\n'> <'\n'>)} ) (C {<test_expect_success>} {(SQ <'rev-parse --exclude with --branches'>)} {(SQ <'\n'> <'\tcompare rev-parse "--exclude=*/* --branches" "master someref subspace-x"\n'>)} ) (C {<test_expect_success>} {(SQ <'rev-parse --exclude with --all'>)} {(SQ <'\n'> <'\tcompare rev-parse "--exclude=refs/remotes/* --all" "--branches --tags"\n'>)} ) (C {<test_expect_success>} {(SQ <'rev-parse accumulates multiple --exclude'>)} { (SQ <'\n'> < '\tcompare rev-parse "--exclude=refs/remotes/* --exclude=refs/tags/* --all" --branches\n' > ) } ) (C {<test_expect_success>} {(SQ <'rev-list --glob=refs/heads/subspace/*'>)} { (SQ <'\n'> <'\n'> <'\tcompare rev-list "subspace/one subspace/two" "--glob=refs/heads/subspace/*"\n'> <'\n'> ) } ) (C {<test_expect_success>} {(SQ <'rev-list --glob refs/heads/subspace/*'>)} { (SQ <'\n'> <'\n'> <'\tcompare rev-list "subspace/one subspace/two" "--glob refs/heads/subspace/*"\n'> <'\n'> ) } ) (C {<test_expect_success>} {(SQ <'rev-list not confused by option-like --glob arg'>)} {(SQ <'\n'> <'\n'> <'\tcompare rev-list "master" "--glob -0 master"\n'> <'\n'>)} ) (C {<test_expect_success>} {(SQ <'rev-list --glob=heads/subspace/*'>)} { (SQ <'\n'> <'\n'> <'\tcompare rev-list "subspace/one subspace/two" "--glob=heads/subspace/*"\n'> <'\n'> ) } ) (C {<test_expect_success>} {(SQ <'rev-list --glob=refs/heads/subspace/'>)} { (SQ <'\n'> <'\n'> <'\tcompare rev-list "subspace/one subspace/two" "--glob=refs/heads/subspace/"\n'> <'\n'> ) } ) (C {<test_expect_success>} {(SQ <'rev-list --glob=heads/subspace/'>)} { (SQ <'\n'> <'\n'> <'\tcompare rev-list "subspace/one subspace/two" "--glob=heads/subspace/"\n'> <'\n'> ) } ) (C {<test_expect_success>} {(SQ <'rev-list --glob=heads/subspace'>)} { (SQ <'\n'> <'\n'> <'\tcompare rev-list "subspace/one subspace/two" "--glob=heads/subspace"\n'> <'\n'> ) } ) (C {<test_expect_success>} {(SQ <'rev-list --branches=subspace/*'>)} { (SQ <'\n'> <'\n'> <'\tcompare rev-list "subspace/one subspace/two" "--branches=subspace/*"\n'> <'\n'> ) } ) (C {<test_expect_success>} {(SQ <'rev-list --branches=subspace/'>)} { (SQ <'\n'> <'\n'> <'\tcompare rev-list "subspace/one subspace/two" "--branches=subspace/"\n'> <'\n'> ) } ) (C {<test_expect_success>} {(SQ <'rev-list --branches=subspace'>)} { (SQ <'\n'> <'\n'> <'\tcompare rev-list "subspace/one subspace/two" "--branches=subspace"\n'> <'\n'> ) } ) (C {<test_expect_success>} {(SQ <'rev-list --branches'>)} { (SQ <'\n'> <'\n'> < '\tcompare rev-list "master subspace-x someref other/three subspace/one subspace/two" "--branches"\n' > <'\n'> ) } ) (C {<test_expect_success>} {(SQ <'rev-list --glob=heads/someref/* master'>)} {(SQ <'\n'> <'\n'> <'\tcompare rev-list "master" "--glob=heads/someref/* master"\n'> <'\n'>)} ) (C {<test_expect_success>} {(SQ <'rev-list --glob=heads/subspace/* --glob=heads/other/*'>)} { (SQ <'\n'> <'\n'> < '\tcompare rev-list "subspace/one subspace/two other/three" "--glob=heads/subspace/* --glob=heads/other/*"\n' > <'\n'> ) } ) (C {<test_expect_success>} {(SQ <'rev-list --glob=heads/*'>)} { (SQ <'\n'> <'\n'> < '\tcompare rev-list "master other/three someref subspace-x subspace/one subspace/two" "--glob=heads/*"\n' > <'\n'> ) } ) (C {<test_expect_success>} {(SQ <'rev-list --tags=foo'>)} {(SQ <'\n'> <'\n'> <'\tcompare rev-list "foo/bar" "--tags=foo"\n'> <'\n'>)} ) (C {<test_expect_success>} {(SQ <'rev-list --tags'>)} {(SQ <'\n'> <'\n'> <'\tcompare rev-list "foo/bar" "--tags"\n'> <'\n'>)} ) (C {<test_expect_success>} {(SQ <'rev-list --remotes=foo'>)} {(SQ <'\n'> <'\n'> <'\tcompare rev-list "foo/baz" "--remotes=foo"\n'> <'\n'>)} ) (C {<test_expect_success>} {(SQ <'rev-list --exclude with --branches'>)} {(SQ <'\n'> <'\tcompare rev-list "--exclude=*/* --branches" "master someref subspace-x"\n'>)} ) (C {<test_expect_success>} {(SQ <'rev-list --exclude with --all'>)} {(SQ <'\n'> <'\tcompare rev-list "--exclude=refs/remotes/* --all" "--branches --tags"\n'>)} ) (C {<test_expect_success>} {(SQ <'rev-list accumulates multiple --exclude'>)} { (SQ <'\n'> <'\tcompare rev-list "--exclude=refs/remotes/* --exclude=refs/tags/* --all" --branches\n'> ) } ) (C {<test_expect_failure>} {(SQ <'rev-list may want to succeed with empty output on no input (1)'>)} { (SQ <'\n'> <'\t>expect &&\n'> <'\tgit rev-list --stdin <expect >actual &&\n'> <'\ttest_cmp expect actual\n'> ) } ) (C {<test_expect_failure>} {(SQ <'rev-list may want to succeed with empty output on no input (2)'>)} { (SQ <'\n'> <'\t>expect &&\n'> <'\tgit rev-list --exclude=* --all >actual &&\n'> <'\ttest_cmp expect actual\n'> ) } ) (C {<test_expect_failure>} {(SQ <'rev-list may want to succeed with empty output on no input (3)'>)} { (SQ <'\n'> <'\t(\n'> <'\t\ttest_create_repo empty &&\n'> <'\t\tcd empty &&\n'> <'\t\t>expect &&\n'> <'\t\tgit rev-list --all >actual &&\n'> <'\t\ttest_cmp expect actual\n'> <'\t)\n'> ) } ) (C {<test_expect_success>} {(SQ <'shortlog accepts --glob/--tags/--remotes'>)} { (SQ <'\n'> <'\n'> <'\tcompare shortlog "subspace/one subspace/two" --branches=subspace &&\n'> <'\tcompare shortlog \\\n'> <'\t "master subspace-x someref other/three subspace/one subspace/two" \\\n'> <'\t --branches &&\n'> <'\tcompare shortlog master "--glob=heads/someref/* master" &&\n'> <'\tcompare shortlog "subspace/one subspace/two other/three" \\\n'> <'\t "--glob=heads/subspace/* --glob=heads/other/*" &&\n'> <'\tcompare shortlog \\\n'> <'\t "master other/three someref subspace-x subspace/one subspace/two" \\\n'> <'\t "--glob=heads/*" &&\n'> <'\tcompare shortlog foo/bar --tags=foo &&\n'> <'\tcompare shortlog foo/bar --tags &&\n'> <'\tcompare shortlog foo/baz --remotes=foo\n'> <'\n'> ) } ) (C {<test_expect_failure>} {(SQ <'shortlog accepts --glob as detached option'>)} { (SQ <'\n'> <'\n'> <'\tcompare shortlog \\\n'> <'\t "master other/three someref subspace-x subspace/one subspace/two" \\\n'> <'\t "--glob heads/*"\n'> <'\n'> ) } ) (C {<test_expect_failure>} {(SQ <'shortlog --glob is not confused by option-like argument'>)} {(SQ <'\n'> <'\n'> <'\tcompare shortlog master "--glob -e master"\n'> <'\n'>)} ) (C {<test_done>}) ] )