66713e84e7
In some tests, the default branch name is part of aligned output. As we want to change the default branch name to `main`, which is two characters shorter than the old default branch name, we will have to adjust those tests. Since we use the original default branch name until the entire test suite has been adjusted accordingly, the touched test cases need to be guarded by a prereq (that is so far disabled so that they are skipped for now). The test cases that depend on those test cases that are newly guarded by that prereq naturally have to be guarded, too. Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de> Signed-off-by: Junio C Hamano <gitster@pobox.com>
267 lines
5.4 KiB
Bash
Executable File
267 lines
5.4 KiB
Bash
Executable File
#!/bin/sh
|
|
|
|
test_description='branch --contains <commit>, --no-contains <commit> --merged, and --no-merged'
|
|
|
|
. ./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 --no-contains=master' '
|
|
|
|
git branch --no-contains=master >actual &&
|
|
test_must_be_empty actual
|
|
|
|
'
|
|
|
|
test_expect_success 'branch --no-contains master' '
|
|
|
|
git branch --no-contains master >actual &&
|
|
test_must_be_empty actual
|
|
|
|
'
|
|
|
|
test_expect_success 'branch --contains=side' '
|
|
|
|
git branch --contains=side >actual &&
|
|
{
|
|
echo "* side"
|
|
} >expect &&
|
|
test_cmp expect actual
|
|
|
|
'
|
|
|
|
test_expect_success 'branch --no-contains=side' '
|
|
|
|
git branch --no-contains=side >actual &&
|
|
{
|
|
echo " master"
|
|
} >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 'branch --no-contains with pattern implies --list' '
|
|
|
|
git branch --no-contains=master master >actual &&
|
|
test_must_be_empty 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 &&
|
|
test_must_be_empty 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 &&
|
|
test_must_be_empty 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 &&
|
|
test_must_fail git branch --no-contains=master -d &&
|
|
test_must_fail git branch --no-contains=master -m foo
|
|
|
|
'
|
|
|
|
test_expect_success 'Assert that --contains only works on commits, not trees & blobs' '
|
|
test_must_fail git branch --contains master^{tree} &&
|
|
blob=$(git hash-object -w --stdin <<-\EOF
|
|
Some blob
|
|
EOF
|
|
) &&
|
|
test_must_fail git branch --contains $blob &&
|
|
test_must_fail git branch --no-contains $blob
|
|
'
|
|
|
|
test_expect_success 'multiple branch --contains' '
|
|
git checkout -b side2 master &&
|
|
>feature &&
|
|
git add feature &&
|
|
git commit -m "add feature" &&
|
|
git checkout -b next master &&
|
|
git merge side &&
|
|
git branch --contains side --contains side2 >actual &&
|
|
cat >expect <<-\EOF &&
|
|
* next
|
|
side
|
|
side2
|
|
EOF
|
|
test_cmp expect actual
|
|
'
|
|
|
|
test_expect_success 'multiple branch --merged' '
|
|
git branch --merged next --merged master >actual &&
|
|
cat >expect <<-\EOF &&
|
|
master
|
|
* next
|
|
side
|
|
EOF
|
|
test_cmp expect actual
|
|
'
|
|
|
|
test_expect_success 'multiple branch --no-contains' '
|
|
git branch --no-contains side --no-contains side2 >actual &&
|
|
cat >expect <<-\EOF &&
|
|
master
|
|
EOF
|
|
test_cmp expect actual
|
|
'
|
|
|
|
test_expect_success 'multiple branch --no-merged' '
|
|
git branch --no-merged next --no-merged master >actual &&
|
|
cat >expect <<-\EOF &&
|
|
side2
|
|
EOF
|
|
test_cmp expect actual
|
|
'
|
|
|
|
test_expect_success 'branch --contains combined with --no-contains' '
|
|
git checkout -b seen master &&
|
|
git merge side &&
|
|
git merge side2 &&
|
|
git branch --contains side --no-contains side2 >actual &&
|
|
cat >expect <<-\EOF &&
|
|
next
|
|
side
|
|
EOF
|
|
test_cmp expect actual
|
|
'
|
|
|
|
test_expect_success 'branch --merged combined with --no-merged' '
|
|
git branch --merged seen --no-merged next >actual &&
|
|
cat >expect <<-\EOF &&
|
|
* seen
|
|
side2
|
|
EOF
|
|
test_cmp expect actual
|
|
'
|
|
|
|
# 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 PREPARE_FOR_MAIN_BRANCH '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 &&
|
|
main $(git rev-parse --short main) second on main
|
|
* topic $(git rev-parse --short topic ) [ahead 1] foo
|
|
zzz $(git rev-parse --short zzz ) second on main
|
|
EOF
|
|
test_i18ncmp expect actual
|
|
'
|
|
|
|
test_done
|