1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44 package org.eclipse.jgit.revwalk;
45
46 import static org.junit.Assert.assertNull;
47 import static org.junit.Assert.fail;
48
49 import org.eclipse.jgit.revwalk.filter.RevFilter;
50 import org.eclipse.jgit.treewalk.filter.TreeFilter;
51 import org.junit.Test;
52
53 public class RevWalkMergeBaseTest extends RevWalkTestCase {
54 @Test
55 public void testNone() throws Exception {
56 final RevCommit c1 = commit(commit(commit()));
57 final RevCommit c2 = commit(commit(commit()));
58
59 rw.setRevFilter(RevFilter.MERGE_BASE);
60 markStart(c1);
61 markStart(c2);
62 assertNull(rw.next());
63 }
64
65 @Test
66 public void testDisallowTreeFilter() throws Exception {
67 final RevCommit c1 = commit();
68 final RevCommit c2 = commit();
69
70 rw.setRevFilter(RevFilter.MERGE_BASE);
71 rw.setTreeFilter(TreeFilter.ANY_DIFF);
72 markStart(c1);
73 markStart(c2);
74 try {
75 assertNull(rw.next());
76 fail("did not throw IllegalStateException");
77 } catch (IllegalStateException ise) {
78
79 }
80 }
81
82 @Test
83 public void testSimple() throws Exception {
84 final RevCommit a = commit();
85 final RevCommit b = commit(a);
86 final RevCommit c1 = commit(commit(commit(commit(commit(b)))));
87 final RevCommit c2 = commit(commit(commit(commit(commit(b)))));
88
89 rw.setRevFilter(RevFilter.MERGE_BASE);
90 markStart(c1);
91 markStart(c2);
92 assertCommit(b, rw.next());
93 assertNull(rw.next());
94 }
95
96 @Test
97 public void testMultipleHeads_SameBase1() throws Exception {
98 final RevCommit a = commit();
99 final RevCommit b = commit(a);
100 final RevCommit c1 = commit(commit(commit(commit(commit(b)))));
101 final RevCommit c2 = commit(commit(commit(commit(commit(b)))));
102 final RevCommit c3 = commit(commit(commit(b)));
103
104 rw.setRevFilter(RevFilter.MERGE_BASE);
105 markStart(c1);
106 markStart(c2);
107 markStart(c3);
108 assertCommit(b, rw.next());
109 assertNull(rw.next());
110 }
111
112 @Test
113 public void testMultipleHeads_SameBase2() throws Exception {
114 final RevCommit a = commit();
115 final RevCommit b = commit(a);
116 final RevCommit c = commit(b);
117 final RevCommit d1 = commit(commit(commit(commit(commit(b)))));
118 final RevCommit d2 = commit(commit(commit(commit(commit(c)))));
119 final RevCommit d3 = commit(commit(commit(c)));
120
121 rw.setRevFilter(RevFilter.MERGE_BASE);
122 markStart(d1);
123 markStart(d2);
124 markStart(d3);
125 assertCommit(b, rw.next());
126 assertNull(rw.next());
127 }
128
129 @Test
130 public void testCrissCross() throws Exception {
131
132
133
134
135
136 final RevCommit a = commit();
137 final RevCommit b = commit(a);
138 final RevCommit c = commit(a);
139 final RevCommit d = commit(b, c);
140 final RevCommit e = commit(c, b);
141
142 rw.setRevFilter(RevFilter.MERGE_BASE);
143 markStart(d);
144 markStart(e);
145 assertCommit(c, rw.next());
146 assertCommit(b, rw.next());
147 assertNull(rw.next());
148 }
149 }