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>
Junio C Hamano committed
Jan 31, 2011 at 12:09 UTC
f577b92fe75643228674c0dcb2a4747587cf541d
1 file changed
+57
-12
t/t6004-rev-list-path-optim.sh
+57
-12
@@ -1,51 +1,96 @@
1
#!/bin/sh
2
3
-test_description='git rev-list trivial path optimization test'
3
+test_description='git rev-list trivial path optimization test
4
+
5
+ d/z1
6
+ b0 b1
7
+ o------------------------*----o master
8
+ / /
9
+ o---------o----o----o----o side
10
+ a0 c0 c1 a1 c2
11
+ d/f0 d/f1
12
+ d/z0
13
+
14
+'
15
16
. ./test-lib.sh
17
18
test_expect_success setup '
8
-echo Hello > a &&
9
-git add a &&
10
-git commit -m "Initial commit" a &&
11
-initial=$(git rev-parse --verify HEAD)
19
+ echo Hello >a &&
20
+ mkdir d &&
21
+ echo World >d/f &&
22
+ echo World >d/z &&
23
+ git add a d &&
24
+ test_tick &&
25
+ git commit -m "Initial commit" &&
26
+ git rev-parse --verify HEAD &&
27
+ git tag initial
28
'
29
30
test_expect_success path-optimization '
15
- commit=$(echo "Unchanged tree" | git commit-tree "HEAD^{tree}" -p HEAD) &&
16
- test $(git rev-list $commit | wc -l) = 2 &&
17
- test $(git rev-list $commit -- . | wc -l) = 1
31
+ test_tick &&
32
+ commit=$(echo "Unchanged tree" | git commit-tree "HEAD^{tree}" -p HEAD) &&
33
+ test $(git rev-list $commit | wc -l) = 2 &&
34
+ test $(git rev-list $commit -- . | wc -l) = 1
35
'
36
37
test_expect_success 'further setup' '
38
git checkout -b side &&
39
echo Irrelevant >c &&
23
- git add c &&
40
+ echo Irrelevant >d/f &&
41
+ git add c d/f &&
42
+ test_tick &&
43
git commit -m "Side makes an irrelevant commit" &&
44
+ git tag side_c0 &&
45
echo "More Irrelevancy" >c &&
46
git add c &&
47
+ test_tick &&
48
git commit -m "Side makes another irrelevant commit" &&
49
echo Bye >a &&
50
git add a &&
51
+ test_tick &&
52
git commit -m "Side touches a" &&
31
- side=$(git rev-parse --verify HEAD) &&
53
+ git tag side_a1 &&
54
echo "Yet more Irrelevancy" >c &&
55
git add c &&
56
+ test_tick &&
57
git commit -m "Side makes yet another irrelevant commit" &&
58
git checkout master &&
59
echo Another >b &&
37
- git add b &&
60
+ echo Munged >d/z &&
61
+ git add b d/z &&
62
+ test_tick &&
63
git commit -m "Master touches b" &&
64
+ git tag master_b0 &&
65
git merge side &&
66
echo Touched >b &&
67
git add b &&
68
+ test_tick &&
69
git commit -m "Master touches b again"
70
'
71
72
test_expect_success 'path optimization 2' '
46
- ( echo "$side"; echo "$initial" ) >expected &&
73
+ git rev-parse side_a1 initial >expected &&
74
git rev-list HEAD -- a >actual &&
75
test_cmp expected actual
76
'
77
78
+test_expect_success 'pathspec with leading path' '
79
+ git rev-parse master^ master_b0 side_c0 initial >expected &&
80
+ git rev-list HEAD -- d >actual &&
81
+ test_cmp expected actual
82
+'
83
+
84
+test_expect_success 'pathspec with glob (1)' '
85
+ git rev-parse master^ master_b0 side_c0 initial >expected &&
86
+ git rev-list HEAD -- "d/*" >actual &&
87
+ test_cmp expected actual
88
+'
89
+
90
+test_expect_success 'pathspec with glob (2)' '
91
+ git rev-parse side_c0 initial >expected &&
92
+ git rev-list HEAD -- "d/[a-m]*" >actual &&
93
+ test_cmp expected actual
94
+'
95
+
96
test_done