@@ -33,22 +33,27 @@ test_expect_success 'all' '
3333 test-tool path-walk -- --all >out &&
3434
3535 cat >expect <<-EOF &&
36- 0:TREE::$(git rev-parse topic^{tree})
37- 0:TREE::$(git rev-parse base^{tree})
38- 0:TREE::$(git rev-parse base~1^{tree})
39- 0:TREE::$(git rev-parse base~2^{tree})
40- 1:TREE:right/:$(git rev-parse topic:right)
41- 1:TREE:right/:$(git rev-parse base~1:right)
42- 1:TREE:right/:$(git rev-parse base~2:right)
43- 2:BLOB:right/d:$(git rev-parse base~1:right/d)
44- 3:BLOB:right/c:$(git rev-parse base~2:right/c)
45- 3:BLOB:right/c:$(git rev-parse topic:right/c)
46- 4:TREE:left/:$(git rev-parse base:left)
47- 4:TREE:left/:$(git rev-parse base~2:left)
48- 5:BLOB:left/b:$(git rev-parse base~2:left/b)
49- 5:BLOB:left/b:$(git rev-parse base:left/b)
50- 6:BLOB:a:$(git rev-parse base~2:a)
36+ 0:COMMIT::$(git rev-parse topic)
37+ 0:COMMIT::$(git rev-parse base)
38+ 0:COMMIT::$(git rev-parse base~1)
39+ 0:COMMIT::$(git rev-parse base~2)
40+ 1:TREE::$(git rev-parse topic^{tree})
41+ 1:TREE::$(git rev-parse base^{tree})
42+ 1:TREE::$(git rev-parse base~1^{tree})
43+ 1:TREE::$(git rev-parse base~2^{tree})
44+ 2:TREE:right/:$(git rev-parse topic:right)
45+ 2:TREE:right/:$(git rev-parse base~1:right)
46+ 2:TREE:right/:$(git rev-parse base~2:right)
47+ 3:BLOB:right/d:$(git rev-parse base~1:right/d)
48+ 4:BLOB:right/c:$(git rev-parse base~2:right/c)
49+ 4:BLOB:right/c:$(git rev-parse topic:right/c)
50+ 5:TREE:left/:$(git rev-parse base:left)
51+ 5:TREE:left/:$(git rev-parse base~2:left)
52+ 6:BLOB:left/b:$(git rev-parse base~2:left/b)
53+ 6:BLOB:left/b:$(git rev-parse base:left/b)
54+ 7:BLOB:a:$(git rev-parse base~2:a)
5155 blobs:6
56+ commits:4
5257 trees:9
5358 EOF
5459
@@ -59,19 +64,23 @@ test_expect_success 'topic only' '
5964 test-tool path-walk -- topic >out &&
6065
6166 cat >expect <<-EOF &&
62- 0:TREE::$(git rev-parse topic^{tree})
63- 0:TREE::$(git rev-parse base~1^{tree})
64- 0:TREE::$(git rev-parse base~2^{tree})
65- 1:TREE:right/:$(git rev-parse topic:right)
66- 1:TREE:right/:$(git rev-parse base~1:right)
67- 1:TREE:right/:$(git rev-parse base~2:right)
68- 2:BLOB:right/d:$(git rev-parse base~1:right/d)
69- 3:BLOB:right/c:$(git rev-parse base~2:right/c)
70- 3:BLOB:right/c:$(git rev-parse topic:right/c)
71- 4:TREE:left/:$(git rev-parse base~2:left)
72- 5:BLOB:left/b:$(git rev-parse base~2:left/b)
73- 6:BLOB:a:$(git rev-parse base~2:a)
67+ 0:COMMIT::$(git rev-parse topic)
68+ 0:COMMIT::$(git rev-parse base~1)
69+ 0:COMMIT::$(git rev-parse base~2)
70+ 1:TREE::$(git rev-parse topic^{tree})
71+ 1:TREE::$(git rev-parse base~1^{tree})
72+ 1:TREE::$(git rev-parse base~2^{tree})
73+ 2:TREE:right/:$(git rev-parse topic:right)
74+ 2:TREE:right/:$(git rev-parse base~1:right)
75+ 2:TREE:right/:$(git rev-parse base~2:right)
76+ 3:BLOB:right/d:$(git rev-parse base~1:right/d)
77+ 4:BLOB:right/c:$(git rev-parse base~2:right/c)
78+ 4:BLOB:right/c:$(git rev-parse topic:right/c)
79+ 5:TREE:left/:$(git rev-parse base~2:left)
80+ 6:BLOB:left/b:$(git rev-parse base~2:left/b)
81+ 7:BLOB:a:$(git rev-parse base~2:a)
7482 blobs:5
83+ commits:3
7584 trees:7
7685 EOF
7786
@@ -82,15 +91,66 @@ test_expect_success 'topic, not base' '
8291 test-tool path-walk -- topic --not base >out &&
8392
8493 cat >expect <<-EOF &&
94+ 0:COMMIT::$(git rev-parse topic)
95+ 1:TREE::$(git rev-parse topic^{tree})
96+ 2:TREE:right/:$(git rev-parse topic:right)
97+ 3:BLOB:right/d:$(git rev-parse topic:right/d)
98+ 4:BLOB:right/c:$(git rev-parse topic:right/c)
99+ 5:TREE:left/:$(git rev-parse topic:left)
100+ 6:BLOB:left/b:$(git rev-parse topic:left/b)
101+ 7:BLOB:a:$(git rev-parse topic:a)
102+ blobs:4
103+ commits:1
104+ trees:3
105+ EOF
106+
107+ test_cmp_sorted expect out
108+ '
109+
110+ test_expect_success ' topic, not base, only blobs' '
111+ test-tool path-walk --no-trees --no-commits \
112+ -- topic --not base >out &&
113+
114+ cat >expect <<-EOF &&
115+ commits:0
116+ trees:0
117+ 0:BLOB:right/d:$(git rev-parse topic:right/d)
118+ 1:BLOB:right/c:$(git rev-parse topic:right/c)
119+ 2:BLOB:left/b:$(git rev-parse topic:left/b)
120+ 3:BLOB:a:$(git rev-parse topic:a)
121+ blobs:4
122+ EOF
123+
124+ test_cmp_sorted expect out
125+ '
126+
127+ # No, this doesn't make a lot of sense for the path-walk API,
128+ # but it is possible to do.
129+ test_expect_success ' topic, not base, only commits' '
130+ test-tool path-walk --no-blobs --no-trees \
131+ -- topic --not base >out &&
132+
133+ cat >expect <<-EOF &&
134+ 0:COMMIT::$(git rev-parse topic)
135+ commits:1
136+ trees:0
137+ blobs:0
138+ EOF
139+
140+ test_cmp_sorted expect out
141+ '
142+
143+ test_expect_success ' topic, not base, only trees' '
144+ test-tool path-walk --no-blobs --no-commits \
145+ -- topic --not base >out &&
146+
147+ cat >expect <<-EOF &&
148+ commits:0
85149 0:TREE::$(git rev-parse topic^{tree})
86150 1:TREE:right/:$(git rev-parse topic:right)
87- 2:BLOB:right/d:$(git rev-parse topic:right/d)
88- 3:BLOB:right/c:$(git rev-parse topic:right/c)
89- 4:TREE:left/:$(git rev-parse topic:left)
90- 5:BLOB:left/b:$(git rev-parse topic:left/b)
91- 6:BLOB:a:$(git rev-parse topic:a)
92- blobs:4
151+ 2:TREE:left/:$(git rev-parse topic:left)
93152 trees:3
153+ blobs:0
94154 EOF
95155
96156 test_cmp_sorted expect out
@@ -100,17 +160,20 @@ test_expect_success 'topic, not base, boundary' '
100160 test-tool path-walk -- --boundary topic --not base >out &&
101161
102162 cat >expect <<-EOF &&
103- 0:TREE::$(git rev-parse topic^{tree})
104- 0:TREE::$(git rev-parse base~1^{tree})
105- 1:TREE:right/:$(git rev-parse topic:right)
106- 1:TREE:right/:$(git rev-parse base~1:right)
107- 2:BLOB:right/d:$(git rev-parse base~1:right/d)
108- 3:BLOB:right/c:$(git rev-parse base~1:right/c)
109- 3:BLOB:right/c:$(git rev-parse topic:right/c)
110- 4:TREE:left/:$(git rev-parse base~1:left)
111- 5:BLOB:left/b:$(git rev-parse base~1:left/b)
112- 6:BLOB:a:$(git rev-parse base~1:a)
163+ 0:COMMIT::$(git rev-parse topic)
164+ 0:COMMIT::$(git rev-parse base~1)
165+ 1:TREE::$(git rev-parse topic^{tree})
166+ 1:TREE::$(git rev-parse base~1^{tree})
167+ 2:TREE:right/:$(git rev-parse topic:right)
168+ 2:TREE:right/:$(git rev-parse base~1:right)
169+ 3:BLOB:right/d:$(git rev-parse base~1:right/d)
170+ 4:BLOB:right/c:$(git rev-parse base~1:right/c)
171+ 4:BLOB:right/c:$(git rev-parse topic:right/c)
172+ 5:TREE:left/:$(git rev-parse base~1:left)
173+ 6:BLOB:left/b:$(git rev-parse base~1:left/b)
174+ 7:BLOB:a:$(git rev-parse base~1:a)
113175 blobs:5
176+ commits:2
114177 trees:5
115178 EOF
116179
0 commit comments