(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: 'checkout handling of ambiguous (branch/tag) refs' span_id: 6 ) ) } spids: [4] ) ] ) (C {(.)} {(./test-lib.sh)}) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'setup ambiguous refs' span_id:17))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:21) (Token id:Id.Lit_Chars val:'\ttest_commit branch file &&\n' span_id:22) (Token id:Id.Lit_Chars val:'\tgit branch ambiguity &&\n' span_id:23) (Token id:Id.Lit_Chars val:'\tgit branch vagueness &&\n' span_id:24) (Token id:Id.Lit_Chars val:'\ttest_commit tag file &&\n' span_id:25) (Token id:Id.Lit_Chars val:'\tgit tag ambiguity &&\n' span_id:26) (Token id:Id.Lit_Chars val:'\tgit tag vagueness HEAD:file &&\n' span_id:27) (Token id:Id.Lit_Chars val:'\ttest_commit other file\n' span_id:28) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'checkout ambiguous ref succeeds' span_id:35))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:39) (Token id: Id.Lit_Chars val: '\tgit checkout ambiguity >stdout 2>stderr\n' span_id: 40 ) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'checkout produces ambiguity warning' span_id:47))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:51) (Token id:Id.Lit_Chars val:'\tgrep "warning.*ambiguous" stderr\n' span_id:52) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'checkout chooses branch over tag' span_id:59))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:63) (Token id:Id.Lit_Chars val:'\techo refs/heads/ambiguity >expect &&\n' span_id:64) (Token id:Id.Lit_Chars val:'\tgit symbolic-ref HEAD >actual &&\n' span_id:65) (Token id:Id.Lit_Chars val:'\ttest_cmp expect actual &&\n' span_id:66) (Token id:Id.Lit_Chars val:'\techo branch >expect &&\n' span_id:67) (Token id:Id.Lit_Chars val:'\ttest_cmp expect file\n' span_id:68) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'checkout reports switch to branch' span_id:75))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:79) (Token id: Id.Lit_Chars val: '\ttest_i18ngrep "Switched to branch" stderr &&\n' span_id: 80 ) (Token id:Id.Lit_Chars val:'\ttest_i18ngrep ! "^HEAD is now at" stderr\n' span_id:81) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'checkout vague ref succeeds' span_id:88))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:92) (Token id: Id.Lit_Chars val: '\tgit checkout vagueness >stdout 2>stderr &&\n' span_id: 93 ) (Token id:Id.Lit_Chars val:'\ttest_set_prereq VAGUENESS_SUCCESS\n' span_id:94) ) } ) (C {(test_expect_success)} {(VAGUENESS_SUCCESS)} {(SQ (Token id:Id.Lit_Chars val:'checkout produces ambiguity warning' span_id:103))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:107) (Token id:Id.Lit_Chars val:'\tgrep "warning.*ambiguous" stderr\n' span_id:108) ) } ) (C {(test_expect_success)} {(VAGUENESS_SUCCESS)} {(SQ (Token id:Id.Lit_Chars val:'checkout chooses branch over tag' span_id:117))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:121) (Token id: Id.Lit_Chars val: '\techo refs/heads/vagueness >expect &&\n' span_id: 122 ) (Token id:Id.Lit_Chars val:'\tgit symbolic-ref HEAD >actual &&\n' span_id:123) (Token id:Id.Lit_Chars val:'\ttest_cmp expect actual &&\n' span_id:124) (Token id:Id.Lit_Chars val:'\techo branch >expect &&\n' span_id:125) (Token id:Id.Lit_Chars val:'\ttest_cmp expect file\n' span_id:126) ) } ) (C {(test_expect_success)} {(VAGUENESS_SUCCESS)} {(SQ (Token id:Id.Lit_Chars val:'checkout reports switch to branch' span_id:135))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:139) (Token id: Id.Lit_Chars val: '\ttest_i18ngrep "Switched to branch" stderr &&\n' span_id: 140 ) (Token id:Id.Lit_Chars val:'\ttest_i18ngrep ! "^HEAD is now at" stderr\n' span_id:141) ) } ) (C {(test_done)}) ] )