-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
t6004: add pathspec globbing test for log family
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>
- Loading branch information
Junio C Hamano
committed
Feb 3, 2011
1 parent
b31f688
commit f577b92
Showing
1 changed file
with
57 additions
and
12 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -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 |