(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:'git branch display tests' span_id:6))} spids: [4] ) ] ) (C {(.)} {(./test-lib.sh)}) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'make commits' span_id:17))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:21) (Token id:Id.Lit_Chars val:'\techo content >file &&\n' span_id:22) (Token id:Id.Lit_Chars val:'\tgit add file &&\n' span_id:23) (Token id:Id.Lit_Chars val:'\tgit commit -m one &&\n' span_id:24) (Token id:Id.Lit_Chars val:'\techo content >>file &&\n' span_id:25) (Token id:Id.Lit_Chars val:'\tgit commit -a -m two\n' span_id:26) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'make branches' span_id:33))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:37) (Token id:Id.Lit_Chars val:'\tgit branch branch-one &&\n' span_id:38) (Token id:Id.Lit_Chars val:'\tgit branch branch-two HEAD^\n' span_id:39) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'make remote branches' span_id:46))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:50) (Token id: Id.Lit_Chars val: '\tgit update-ref refs/remotes/origin/branch-one branch-one &&\n' span_id: 51 ) (Token id: Id.Lit_Chars val: '\tgit update-ref refs/remotes/origin/branch-two branch-two &&\n' span_id: 52 ) (Token id: Id.Lit_Chars val: '\tgit symbolic-ref refs/remotes/origin/HEAD refs/remotes/origin/branch-one\n' span_id: 53 ) ) } ) (command.Simple words: [{(cat)}] redirects: [ (redir.Redir op:(Token id:Id.Redir_Great val:'>' span_id:59) fd:-1 arg_word:{(expect)}) (redir.HereDoc op: (Token id:Id.Redir_DLess val:'<<' span_id:62) fd: -1 here_begin: {(SQ (Token id:Id.Lit_Chars val:EOF span_id:64))} here_end_span_id: 70 stdin_parts: [(' branch-one\n') (' branch-two\n') ('* master\n')] ) ] ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'git branch shows local branches' span_id:74))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:78) (Token id:Id.Lit_Chars val:'\tgit branch >actual &&\n' span_id:79) (Token id:Id.Lit_Chars val:'\ttest_cmp expect actual\n' span_id:80) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'git branch --list shows local branches' span_id:87))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:91) (Token id:Id.Lit_Chars val:'\tgit branch --list >actual &&\n' span_id:92) (Token id:Id.Lit_Chars val:'\ttest_cmp expect actual\n' span_id:93) ) } ) (command.Simple words: [{(cat)}] redirects: [ (redir.Redir op:(Token id:Id.Redir_Great val:'>' span_id:99) fd:-1 arg_word:{(expect)}) (redir.HereDoc op: (Token id:Id.Redir_DLess val:'<<' span_id:102) fd: -1 here_begin: {(SQ (Token id:Id.Lit_Chars val:EOF span_id:104))} here_end_span_id: 109 stdin_parts: [(' branch-one\n') (' branch-two\n')] ) ] ) (C {(test_expect_success)} { (SQ (Token id: Id.Lit_Chars val: 'git branch --list pattern shows matching local branches' span_id: 113 ) ) } { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:117) (Token id: Id.Lit_Chars val: '\tgit branch --list branch* >actual &&\n' span_id: 118 ) (Token id:Id.Lit_Chars val:'\ttest_cmp expect actual\n' span_id:119) ) } ) (command.Simple words: [{(cat)}] redirects: [ (redir.Redir op: (Token id:Id.Redir_Great val:'>' span_id:125) fd: -1 arg_word: {(expect)} ) (redir.HereDoc op: (Token id:Id.Redir_DLess val:'<<' span_id:128) fd: -1 here_begin: {(SQ (Token id:Id.Lit_Chars val:EOF span_id:130))} here_end_span_id: 136 stdin_parts: [ (' origin/HEAD -> origin/branch-one\n') (' origin/branch-one\n') (' origin/branch-two\n') ] ) ] ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'git branch -r shows remote branches' span_id:140))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:144) (Token id:Id.Lit_Chars val:'\tgit branch -r >actual &&\n' span_id:145) (Token id:Id.Lit_Chars val:'\ttest_cmp expect actual\n' span_id:146) ) } ) (command.Simple words: [{(cat)}] redirects: [ (redir.Redir op: (Token id:Id.Redir_Great val:'>' span_id:152) fd: -1 arg_word: {(expect)} ) (redir.HereDoc op: (Token id:Id.Redir_DLess val:'<<' span_id:155) fd: -1 here_begin: {(SQ (Token id:Id.Lit_Chars val:EOF span_id:157))} here_end_span_id: 166 stdin_parts: [ (' branch-one\n') (' branch-two\n') ('* master\n') (' remotes/origin/HEAD -> origin/branch-one\n') (' remotes/origin/branch-one\n') (' remotes/origin/branch-two\n') ] ) ] ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'git branch -a shows local and remote branches' span_id:170))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:174) (Token id:Id.Lit_Chars val:'\tgit branch -a >actual &&\n' span_id:175) (Token id:Id.Lit_Chars val:'\ttest_cmp expect actual\n' span_id:176) ) } ) (command.Simple words: [{(cat)}] redirects: [ (redir.Redir op: (Token id:Id.Redir_Great val:'>' span_id:182) fd: -1 arg_word: {(expect)} ) (redir.HereDoc op: (Token id:Id.Redir_DLess val:'<<' span_id:185) fd: -1 here_begin: {(SQ (Token id:Id.Lit_Chars val:EOF span_id:187))} here_end_span_id: 193 stdin_parts: [('two\n') ('one\n') ('two\n')] ) ] ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'git branch -v shows branch summaries' span_id:197))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:201) (Token id:Id.Lit_Chars val:'\tgit branch -v >tmp &&\n' span_id:202) (Token id:Id.Lit_Chars val:'\tawk "{print \\$NF}" <tmp >actual &&\n' span_id:203) (Token id:Id.Lit_Chars val:'\ttest_cmp expect actual\n' span_id:204) ) } ) (command.Simple words: [{(cat)}] redirects: [ (redir.Redir op: (Token id:Id.Redir_Great val:'>' span_id:210) fd: -1 arg_word: {(expect)} ) (redir.HereDoc op: (Token id:Id.Redir_DLess val:'<<' span_id:213) fd: -1 here_begin: {(SQ (Token id:Id.Lit_Chars val:EOF span_id:215))} here_end_span_id: 220 stdin_parts: [('two\n') ('one\n')] ) ] ) (C {(test_expect_success)} { (SQ (Token id: Id.Lit_Chars val: 'git branch --list -v pattern shows branch summaries' span_id: 224 ) ) } { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:228) (Token id: Id.Lit_Chars val: '\tgit branch --list -v branch* >tmp &&\n' span_id: 229 ) (Token id:Id.Lit_Chars val:'\tawk "{print \\$NF}" <tmp >actual &&\n' span_id:230) (Token id:Id.Lit_Chars val:'\ttest_cmp expect actual\n' span_id:231) ) } ) (C {(test_expect_success)} { (SQ (Token id: Id.Lit_Chars val: 'git branch -v pattern does not show branch summaries' span_id: 238 ) ) } { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:242) (Token id: Id.Lit_Chars val: '\ttest_must_fail git branch -v branch*\n' span_id: 243 ) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'git branch shows detached HEAD properly' span_id:250))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:254) (Token id:Id.Lit_Chars val:'\tcat >expect <<EOF &&\n' span_id:255) (Token id:Id.Lit_Chars val:'* (HEAD detached at $(git rev-parse --short HEAD^0))\n' span_id:256) (Token id:Id.Lit_Chars val:' branch-one\n' span_id:257) (Token id:Id.Lit_Chars val:' branch-two\n' span_id:258) (Token id:Id.Lit_Chars val:' master\n' span_id:259) (Token id:Id.Lit_Chars val:'EOF\n' span_id:260) (Token id:Id.Lit_Chars val:'\tgit checkout HEAD^0 &&\n' span_id:261) (Token id:Id.Lit_Chars val:'\tgit branch >actual &&\n' span_id:262) (Token id:Id.Lit_Chars val:'\ttest_i18ncmp expect actual\n' span_id:263) ) } ) (C {(test_expect_success)} { (SQ (Token id: Id.Lit_Chars val: 'git branch shows detached HEAD properly after checkout --detach' span_id: 270 ) ) } { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:274) (Token id:Id.Lit_Chars val:'\tgit checkout master &&\n' span_id:275) (Token id:Id.Lit_Chars val:'\tcat >expect <<EOF &&\n' span_id:276) (Token id: Id.Lit_Chars val: '* (HEAD detached at $(git rev-parse --short HEAD^0))\n' span_id: 277 ) (Token id:Id.Lit_Chars val:' branch-one\n' span_id:278) (Token id:Id.Lit_Chars val:' branch-two\n' span_id:279) (Token id:Id.Lit_Chars val:' master\n' span_id:280) (Token id:Id.Lit_Chars val:'EOF\n' span_id:281) (Token id:Id.Lit_Chars val:'\tgit checkout --detach &&\n' span_id:282) (Token id:Id.Lit_Chars val:'\tgit branch >actual &&\n' span_id:283) (Token id:Id.Lit_Chars val:'\ttest_i18ncmp expect actual\n' span_id:284) ) } ) (C {(test_expect_success)} { (SQ (Token id: Id.Lit_Chars val: 'git branch shows detached HEAD properly after moving' span_id: 291 ) ) } { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:295) (Token id:Id.Lit_Chars val:'\tcat >expect <<EOF &&\n' span_id:296) (Token id:Id.Lit_Chars val:'* (HEAD detached from $(git rev-parse --short HEAD))\n' span_id:297) (Token id:Id.Lit_Chars val:' branch-one\n' span_id:298) (Token id:Id.Lit_Chars val:' branch-two\n' span_id:299) (Token id:Id.Lit_Chars val:' master\n' span_id:300) (Token id:Id.Lit_Chars val:'EOF\n' span_id:301) (Token id:Id.Lit_Chars val:'\tgit reset --hard HEAD^1 &&\n' span_id:302) (Token id:Id.Lit_Chars val:'\tgit branch >actual &&\n' span_id:303) (Token id:Id.Lit_Chars val:'\ttest_i18ncmp expect actual\n' span_id:304) ) } ) (C {(test_expect_success)} { (SQ (Token id: Id.Lit_Chars val: 'git branch shows detached HEAD properly from tag' span_id: 311 ) ) } { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:315) (Token id:Id.Lit_Chars val:'\tcat >expect <<EOF &&\n' span_id:316) (Token id:Id.Lit_Chars val:'* (HEAD detached at fromtag)\n' span_id:317) (Token id:Id.Lit_Chars val:' branch-one\n' span_id:318) (Token id:Id.Lit_Chars val:' branch-two\n' span_id:319) (Token id:Id.Lit_Chars val:' master\n' span_id:320) (Token id:Id.Lit_Chars val:'EOF\n' span_id:321) (Token id:Id.Lit_Chars val:'\tgit tag fromtag master &&\n' span_id:322) (Token id:Id.Lit_Chars val:'\tgit checkout fromtag &&\n' span_id:323) (Token id:Id.Lit_Chars val:'\tgit branch >actual &&\n' span_id:324) (Token id:Id.Lit_Chars val:'\ttest_i18ncmp expect actual\n' span_id:325) ) } ) (C {(test_expect_success)} { (SQ (Token id: Id.Lit_Chars val: 'git branch shows detached HEAD properly after moving from tag' span_id: 332 ) ) } { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:336) (Token id:Id.Lit_Chars val:'\tcat >expect <<EOF &&\n' span_id:337) (Token id:Id.Lit_Chars val:'* (HEAD detached from fromtag)\n' span_id:338) (Token id:Id.Lit_Chars val:' branch-one\n' span_id:339) (Token id:Id.Lit_Chars val:' branch-two\n' span_id:340) (Token id:Id.Lit_Chars val:' master\n' span_id:341) (Token id:Id.Lit_Chars val:'EOF\n' span_id:342) (Token id:Id.Lit_Chars val:'\tgit reset --hard HEAD^1 &&\n' span_id:343) (Token id:Id.Lit_Chars val:'\tgit branch >actual &&\n' span_id:344) (Token id:Id.Lit_Chars val:'\ttest_i18ncmp expect actual\n' span_id:345) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'git branch `--sort` option' span_id:352))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:356) (Token id:Id.Lit_Chars val:'\tcat >expect <<-\\EOF &&\n' span_id:357) (Token id:Id.Lit_Chars val:'\t* (HEAD detached from fromtag)\n' span_id:358) (Token id:Id.Lit_Chars val:'\t branch-two\n' span_id:359) (Token id:Id.Lit_Chars val:'\t branch-one\n' span_id:360) (Token id:Id.Lit_Chars val:'\t master\n' span_id:361) (Token id:Id.Lit_Chars val:'\tEOF\n' span_id:362) (Token id: Id.Lit_Chars val: '\tgit branch --sort=objectsize >actual &&\n' span_id: 363 ) (Token id:Id.Lit_Chars val:'\ttest_i18ncmp expect actual\n' span_id:364) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'git branch --points-at option' span_id:371))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:375) (Token id:Id.Lit_Chars val:'\tcat >expect <<-\\EOF &&\n' span_id:376) (Token id:Id.Lit_Chars val:'\t branch-one\n' span_id:377) (Token id:Id.Lit_Chars val:'\t master\n' span_id:378) (Token id:Id.Lit_Chars val:'\tEOF\n' span_id:379) (Token id: Id.Lit_Chars val: '\tgit branch --points-at=branch-one >actual &&\n' span_id: 380 ) (Token id:Id.Lit_Chars val:'\ttest_cmp expect actual\n' span_id:381) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'ambiguous branch/tag not marked' span_id:388))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:392) (Token id:Id.Lit_Chars val:'\tgit tag ambiguous &&\n' span_id:393) (Token id:Id.Lit_Chars val:'\tgit branch ambiguous &&\n' span_id:394) (Token id:Id.Lit_Chars val:'\techo " ambiguous" >expect &&\n' span_id:395) (Token id:Id.Lit_Chars val:'\tgit branch --list ambiguous >actual &&\n' span_id:396) (Token id:Id.Lit_Chars val:'\ttest_cmp expect actual\n' span_id:397) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'local-branch symrefs shortened properly' span_id:404))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:408) (Token id: Id.Lit_Chars val: '\tgit symbolic-ref refs/heads/ref-to-branch refs/heads/branch-one &&\n' span_id: 409 ) (Token id: Id.Lit_Chars val: '\tgit symbolic-ref refs/heads/ref-to-remote refs/remotes/origin/branch-one &&\n' span_id: 410 ) (Token id:Id.Lit_Chars val:'\tcat >expect <<-\\EOF &&\n' span_id:411) (Token id:Id.Lit_Chars val:'\t ref-to-branch -> branch-one\n' span_id:412) (Token id:Id.Lit_Chars val:'\t ref-to-remote -> refs/remotes/origin/branch-one\n' span_id:413) (Token id:Id.Lit_Chars val:'\tEOF\n' span_id:414) (Token id:Id.Lit_Chars val:'\tgit branch >actual.raw &&\n' span_id:415) (Token id:Id.Lit_Chars val:'\tgrep ref-to <actual.raw >actual &&\n' span_id:416) (Token id:Id.Lit_Chars val:'\ttest_cmp expect actual\n' span_id:417) ) } ) (C {(test_done)}) ] )