Browse Source
Earlier e10cb0f (tree_entry_interesting(): support wildcard matching, 2010-12-15) and b3d4b34 (tree_entry_interesting(): optimize wildcard matching when base is matched, 2010-12-15) added tests for globbing support for diff-tree plumbing. This is a follow-up to update the test for revision traversal and path pruning machinery for the same topic. Signed-off-by: Junio C Hamano <gitster@pobox.com>maint
Junio C Hamano
14 years ago
1 changed files with 57 additions and 12 deletions
@ -1,51 +1,96 @@
@@ -1,51 +1,96 @@
|
||||
#!/bin/sh |
||||
|
||||
test_description='git rev-list trivial path optimization test' |
||||
test_description='git rev-list trivial path optimization test |
||||
|
||||
d/z1 |
||||
b0 b1 |
||||
o------------------------*----o master |
||||
/ / |
||||
o---------o----o----o----o side |
||||
a0 c0 c1 a1 c2 |
||||
d/f0 d/f1 |
||||
d/z0 |
||||
|
||||
' |
||||
|
||||
. ./test-lib.sh |
||||
|
||||
test_expect_success setup ' |
||||
echo Hello > a && |
||||
git add a && |
||||
git commit -m "Initial commit" a && |
||||
initial=$(git rev-parse --verify HEAD) |
||||
echo Hello >a && |
||||
mkdir d && |
||||
echo World >d/f && |
||||
echo World >d/z && |
||||
git add a d && |
||||
test_tick && |
||||
git commit -m "Initial commit" && |
||||
git rev-parse --verify HEAD && |
||||
git tag initial |
||||
' |
||||
|
||||
test_expect_success path-optimization ' |
||||
commit=$(echo "Unchanged tree" | git commit-tree "HEAD^{tree}" -p HEAD) && |
||||
test $(git rev-list $commit | wc -l) = 2 && |
||||
test $(git rev-list $commit -- . | wc -l) = 1 |
||||
test_tick && |
||||
commit=$(echo "Unchanged tree" | git commit-tree "HEAD^{tree}" -p HEAD) && |
||||
test $(git rev-list $commit | wc -l) = 2 && |
||||
test $(git rev-list $commit -- . | wc -l) = 1 |
||||
' |
||||
|
||||
test_expect_success 'further setup' ' |
||||
git checkout -b side && |
||||
echo Irrelevant >c && |
||||
git add c && |
||||
echo Irrelevant >d/f && |
||||
git add c d/f && |
||||
test_tick && |
||||
git commit -m "Side makes an irrelevant commit" && |
||||
git tag side_c0 && |
||||
echo "More Irrelevancy" >c && |
||||
git add c && |
||||
test_tick && |
||||
git commit -m "Side makes another irrelevant commit" && |
||||
echo Bye >a && |
||||
git add a && |
||||
test_tick && |
||||
git commit -m "Side touches a" && |
||||
side=$(git rev-parse --verify HEAD) && |
||||
git tag side_a1 && |
||||
echo "Yet more Irrelevancy" >c && |
||||
git add c && |
||||
test_tick && |
||||
git commit -m "Side makes yet another irrelevant commit" && |
||||
git checkout master && |
||||
echo Another >b && |
||||
git add b && |
||||
echo Munged >d/z && |
||||
git add b d/z && |
||||
test_tick && |
||||
git commit -m "Master touches b" && |
||||
git tag master_b0 && |
||||
git merge side && |
||||
echo Touched >b && |
||||
git add b && |
||||
test_tick && |
||||
git commit -m "Master touches b again" |
||||
' |
||||
|
||||
test_expect_success 'path optimization 2' ' |
||||
( echo "$side"; echo "$initial" ) >expected && |
||||
git rev-parse side_a1 initial >expected && |
||||
git rev-list HEAD -- a >actual && |
||||
test_cmp expected actual |
||||
' |
||||
|
||||
test_expect_success 'pathspec with leading path' ' |
||||
git rev-parse master^ master_b0 side_c0 initial >expected && |
||||
git rev-list HEAD -- d >actual && |
||||
test_cmp expected actual |
||||
' |
||||
|
||||
test_expect_success 'pathspec with glob (1)' ' |
||||
git rev-parse master^ master_b0 side_c0 initial >expected && |
||||
git rev-list HEAD -- "d/*" >actual && |
||||
test_cmp expected actual |
||||
' |
||||
|
||||
test_expect_success 'pathspec with glob (2)' ' |
||||
git rev-parse side_c0 initial >expected && |
||||
git rev-list HEAD -- "d/[a-m]*" >actual && |
||||
test_cmp expected actual |
||||
' |
||||
|
||||
test_done |
||||
|
Loading…
Reference in new issue