(CommandList children: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:test_description) op: Equal rhs: {(SQ <'tracking branch update checks for git push'>)} spids: [4] ) ] spids: [4] ) (C {(.)} {(./test-lib.sh)}) (C {(test_expect_success)} {(SQ <setup>)} { (SQ <'\n'> <'\techo 1 >file &&\n'> <'\tgit add file &&\n'> <'\tgit commit -m 1 &&\n'> <'\tgit branch b1 &&\n'> <'\tgit branch b2 &&\n'> <'\tgit branch b3 &&\n'> <'\tgit clone . aa &&\n'> <'\tgit checkout b1 &&\n'> <'\techo b1 >>file &&\n'> <'\tgit commit -a -m b1 &&\n'> <'\tgit checkout b2 &&\n'> <'\techo b2 >>file &&\n'> <'\tgit commit -a -m b2\n'> ) } ) (C {(test_expect_success)} {(SQ <'prepare pushable branches'>)} { (SQ <'\n'> <'\tcd aa &&\n'> <'\tb1=$(git rev-parse origin/b1) &&\n'> <'\tb2=$(git rev-parse origin/b2) &&\n'> <'\tgit checkout -b b1 origin/b1 &&\n'> <'\techo aa-b1 >>file &&\n'> <'\tgit commit -a -m aa-b1 &&\n'> <'\tgit checkout -b b2 origin/b2 &&\n'> <'\techo aa-b2 >>file &&\n'> <'\tgit commit -a -m aa-b2 &&\n'> <'\tgit checkout master &&\n'> <'\techo aa-master >>file &&\n'> <'\tgit commit -a -m aa-master\n'> ) } ) (C {(test_expect_success)} {(SQ <'mixed-success push returns error'>)} {(SQ <'\n'> <'\ttest_must_fail git push origin :\n'>)} ) (C {(test_expect_success)} {(SQ <'check tracking branches updated correctly after push'>)} {(SQ <'\n'> <'\ttest "$(git rev-parse origin/master)" = "$(git rev-parse master)"\n'>)} ) (C {(test_expect_success)} {(SQ <'check tracking branches not updated for failed refs'>)} { (SQ <'\n'> <'\ttest "$(git rev-parse origin/b1)" = "$b1" &&\n'> <'\ttest "$(git rev-parse origin/b2)" = "$b2"\n'> ) } ) (C {(test_expect_success)} {(SQ <'deleted branches have their tracking branches removed'>)} { (SQ <'\n'> <'\tgit push origin :b1 &&\n'> <'\ttest "$(git rev-parse origin/b1)" = "origin/b1"\n'> ) } ) (C {(test_expect_success)} {(SQ <'already deleted tracking branches ignored'>)} { (SQ <'\n'> <'\tgit branch -d -r origin/b3 &&\n'> <'\tgit push origin :b3 >output 2>&1 &&\n'> <'\t! grep error output\n'> ) } ) (C {(test_done)}) ] )