#!/bin/sh global test_description := ''branch --contains , --merged, and --no-merged'' source ./test-lib.sh test_expect_success setup ' >file && git add file && test_tick && git commit -m initial && git branch side && echo 1 >file && test_tick && git commit -a -m "second on master" && git checkout side && echo 1 >file && test_tick && git commit -a -m "second on side" && git merge master ' test_expect_success 'branch --contains=master' ' git branch --contains=master >actual && { echo " master" && echo "* side" } >expect && test_cmp expect actual ' test_expect_success 'branch --contains master' ' git branch --contains master >actual && { echo " master" && echo "* side" } >expect && test_cmp expect actual ' test_expect_success 'branch --contains=side' ' git branch --contains=side >actual && { echo "* side" } >expect && test_cmp expect actual ' test_expect_success 'branch --contains with pattern implies --list' ' git branch --contains=master master >actual && { echo " master" } >expect && test_cmp expect actual ' test_expect_success 'side: branch --merged' ' git branch --merged >actual && { echo " master" && echo "* side" } >expect && test_cmp expect actual ' test_expect_success 'branch --merged with pattern implies --list' ' git branch --merged=side master >actual && { echo " master" } >expect && test_cmp expect actual ' test_expect_success 'side: branch --no-merged' ' git branch --no-merged >actual && >expect && test_cmp expect actual ' test_expect_success 'master: branch --merged' ' git checkout master && git branch --merged >actual && { echo "* master" } >expect && test_cmp expect actual ' test_expect_success 'master: branch --no-merged' ' git branch --no-merged >actual && { echo " side" } >expect && test_cmp expect actual ' test_expect_success 'branch --no-merged with pattern implies --list' ' git branch --no-merged=master master >actual && >expect && test_cmp expect actual ' test_expect_success 'implicit --list conflicts with modification options' ' test_must_fail git branch --contains=master -d && test_must_fail git branch --contains=master -m foo ' # We want to set up a case where the walk for the tracking info # of one branch crosses the tip of another branch (and make sure # that the latter walk does not mess up our flag to see if it was # merged). # # Here "topic" tracks "master" with one extra commit, and "zzz" points to the # same tip as master The name "zzz" must come alphabetically after "topic" # as we process them in that order. test_expect_success 'branch --merged with --verbose' ' git branch --track topic master && git branch zzz topic && git checkout topic && test_commit foo && git branch --merged topic >actual && cat >expect <<-\EOF && master * topic zzz EOF test_cmp expect actual && git branch --verbose --merged topic >actual && cat >expect <<-\EOF && master c77a0a9 second on master * topic 2c939f4 [ahead 1] foo zzz c77a0a9 second on master EOF test_i18ncmp expect actual ' test_done (CommandList children: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:test_description) op: Equal rhs: {(SQ <"branch --contains , --merged, and --no-merged">)} spids: [4] ) ] spids: [4] ) (C {(.)} {(./test-lib.sh)}) (C {(test_expect_success)} {(setup)} { (SQ <"\n"> <"\n"> <"\t>file &&\n"> <"\tgit add file &&\n"> <"\ttest_tick &&\n"> <"\tgit commit -m initial &&\n"> <"\tgit branch side &&\n"> <"\n"> <"\techo 1 >file &&\n"> <"\ttest_tick &&\n"> <"\tgit commit -a -m \"second on master\" &&\n"> <"\n"> <"\tgit checkout side &&\n"> <"\techo 1 >file &&\n"> <"\ttest_tick &&\n"> <"\tgit commit -a -m \"second on side\" &&\n"> <"\n"> <"\tgit merge master\n"> <"\n"> ) } ) (C {(test_expect_success)} {(SQ <"branch --contains=master">)} { (SQ <"\n"> <"\n"> <"\tgit branch --contains=master >actual &&\n"> <"\t{\n"> <"\t\techo \" master\" && echo \"* side\"\n"> <"\t} >expect &&\n"> <"\ttest_cmp expect actual\n"> <"\n"> ) } ) (C {(test_expect_success)} {(SQ <"branch --contains master">)} { (SQ <"\n"> <"\n"> <"\tgit branch --contains master >actual &&\n"> <"\t{\n"> <"\t\techo \" master\" && echo \"* side\"\n"> <"\t} >expect &&\n"> <"\ttest_cmp expect actual\n"> <"\n"> ) } ) (C {(test_expect_success)} {(SQ <"branch --contains=side">)} { (SQ <"\n"> <"\n"> <"\tgit branch --contains=side >actual &&\n"> <"\t{\n"> <"\t\techo \"* side\"\n"> <"\t} >expect &&\n"> <"\ttest_cmp expect actual\n"> <"\n"> ) } ) (C {(test_expect_success)} {(SQ <"branch --contains with pattern implies --list">)} { (SQ <"\n"> <"\n"> <"\tgit branch --contains=master master >actual &&\n"> <"\t{\n"> <"\t\techo \" master\"\n"> <"\t} >expect &&\n"> <"\ttest_cmp expect actual\n"> <"\n"> ) } ) (C {(test_expect_success)} {(SQ <"side: branch --merged">)} { (SQ <"\n"> <"\n"> <"\tgit branch --merged >actual &&\n"> <"\t{\n"> <"\t\techo \" master\" &&\n"> <"\t\techo \"* side\"\n"> <"\t} >expect &&\n"> <"\ttest_cmp expect actual\n"> <"\n"> ) } ) (C {(test_expect_success)} {(SQ <"branch --merged with pattern implies --list">)} { (SQ <"\n"> <"\n"> <"\tgit branch --merged=side master >actual &&\n"> <"\t{\n"> <"\t\techo \" master\"\n"> <"\t} >expect &&\n"> <"\ttest_cmp expect actual\n"> <"\n"> ) } ) (C {(test_expect_success)} {(SQ <"side: branch --no-merged">)} { (SQ <"\n"> <"\n"> <"\tgit branch --no-merged >actual &&\n"> <"\t>expect &&\n"> <"\ttest_cmp expect actual\n"> <"\n"> ) } ) (C {(test_expect_success)} {(SQ <"master: branch --merged">)} { (SQ <"\n"> <"\n"> <"\tgit checkout master &&\n"> <"\tgit branch --merged >actual &&\n"> <"\t{\n"> <"\t\techo \"* master\"\n"> <"\t} >expect &&\n"> <"\ttest_cmp expect actual\n"> <"\n"> ) } ) (C {(test_expect_success)} {(SQ <"master: branch --no-merged">)} { (SQ <"\n"> <"\n"> <"\tgit branch --no-merged >actual &&\n"> <"\t{\n"> <"\t\techo \" side\"\n"> <"\t} >expect &&\n"> <"\ttest_cmp expect actual\n"> <"\n"> ) } ) (C {(test_expect_success)} {(SQ <"branch --no-merged with pattern implies --list">)} { (SQ <"\n"> <"\n"> <"\tgit branch --no-merged=master master >actual &&\n"> <"\t>expect &&\n"> <"\ttest_cmp expect actual\n"> <"\n"> ) } ) (C {(test_expect_success)} {(SQ <"implicit --list conflicts with modification options">)} { (SQ <"\n"> <"\n"> <"\ttest_must_fail git branch --contains=master -d &&\n"> <"\ttest_must_fail git branch --contains=master -m foo\n"> <"\n"> ) } ) (C {(test_expect_success)} {(SQ <"branch --merged with --verbose">)} { (SQ <"\n"> <"\tgit branch --track topic master &&\n"> <"\tgit branch zzz topic &&\n"> <"\tgit checkout topic &&\n"> <"\ttest_commit foo &&\n"> <"\tgit branch --merged topic >actual &&\n"> <"\tcat >expect <<-\\EOF &&\n"> <"\t master\n"> <"\t* topic\n"> <"\t zzz\n"> <"\tEOF\n"> <"\ttest_cmp expect actual &&\n"> <"\tgit branch --verbose --merged topic >actual &&\n"> <"\tcat >expect <<-\\EOF &&\n"> <"\t master c77a0a9 second on master\n"> <"\t* topic 2c939f4 [ahead 1] foo\n"> <"\t zzz c77a0a9 second on master\n"> <"\tEOF\n"> <"\ttest_i18ncmp expect actual\n"> ) } ) (C {(test_done)}) ] )