View Javadoc

1   package com.aragost.javahg.commands;
2   
3   import org.junit.Assert;
4   import org.junit.Test;
5   
6   import com.aragost.javahg.Changeset;
7   import com.aragost.javahg.Repository;
8   import com.aragost.javahg.merge.BackoutConflictResolvingContext;
9   import com.aragost.javahg.test.AbstractTestCase;
10  
11  public class BackoutCommandTest extends AbstractTestCase {
12  
13      @Test
14      public void testBackoutMerge() throws Exception {
15  
16          Repository repo = getTestRepository();
17          CommitCommand commitCmd = CommitCommand.on(repo).message("m")
18                  .user("user");
19  
20          writeFile("a", "boo");
21          writeFile("b", "bar");
22          AddCommand.on(repo).execute();
23          commitCmd.execute();
24  
25          writeFile("b", "booo");
26          Changeset backoutCs = commitCmd.execute();
27  
28          writeFile("a", "foo");
29          Changeset curCs = commitCmd.execute();
30  
31          BackoutCommand.on(repo).rev(backoutCs.getNode()).merge()
32                  .message("BackoutMerge").user("user").execute();
33  
34          Assert.assertEquals(curCs, repo.workingCopy().getParent1());
35          Assert.assertEquals(backoutCs, repo.workingCopy().getParent2()
36                  .getParent1());
37  
38          commitCmd.execute();
39  
40          Assert.assertEquals("bar", readFile("b"));
41          Assert.assertEquals(5, LogCommand.on(repo).execute().size());
42      }
43  
44      @Test
45      public void testBackoutUpdate() throws Exception {
46  
47          Repository repo = getTestRepository();
48          CommitCommand commitCmd = CommitCommand.on(repo).message("m")
49                  .user("user");
50  
51          writeFile("a", "boo");
52          writeFile("b", "bar");
53          AddCommand.on(repo).execute();
54          commitCmd.execute();
55  
56          writeFile("b", "booo");
57  
58          Changeset backoutCs = commitCmd.execute();
59  
60          writeFile("a", "foo");
61          Changeset curCs = commitCmd.execute();
62  
63          BackoutCommand.on(repo).rev(backoutCs.getNode())
64                  .message("BackoutMerge").user("user").execute();
65  
66          Assert.assertEquals(curCs, repo.workingCopy().getParent1());
67          Assert.assertNull(repo.workingCopy().getParent2());
68  
69          commitCmd.execute();
70          Assert.assertEquals("bar", readFile("b"));
71          Assert.assertEquals(4, LogCommand.on(repo).execute().size());
72      }
73  
74      @Test
75      public void testBackoutMergeConflict() throws Exception {
76  
77          Repository repo = getTestRepository();
78          CommitCommand commitCmd = CommitCommand.on(repo).message("m")
79                  .user("user");
80  
81          writeFile("a", "boo");
82          writeFile("b", "boo");
83          AddCommand.on(repo).execute();
84          commitCmd.execute();
85  
86          writeFile("a", "bar");
87          writeFile("b", "bar");
88          Changeset backoutCs = commitCmd.execute();
89  
90          writeFile("a", "foo");
91          writeFile("b", "foo");
92          commitCmd.execute();
93  
94          BackoutCommand command = BackoutCommand.on(repo)
95                  .rev(backoutCs.getNode()).merge().message("BackoutMerge")
96                  .user("user");
97          BackoutConflictResolvingContext ctx;
98  
99          ctx = command.execute();
100 
101         Assert.assertEquals(2, ctx.getMergeConflicts().size());
102     }
103 
104     @Test
105     public void testBackoutUpdateConflict() throws Exception {
106 
107         Repository repo = getTestRepository();
108         CommitCommand commitCmd = CommitCommand.on(repo).message("m")
109                 .user("user");
110 
111         writeFile("a", "boo");
112         writeFile("b", "boo");
113         AddCommand.on(repo).execute();
114         commitCmd.execute();
115 
116         writeFile("a", "bar");
117         writeFile("b", "bar");
118         Changeset backoutCs = commitCmd.execute();
119 
120         writeFile("a", "foo");
121         writeFile("b", "foo");
122         commitCmd.execute();
123 
124         BackoutCommand command = BackoutCommand.on(repo)
125                 .rev(backoutCs.getNode()).message("BackoutMerge").user("user");
126         BackoutConflictResolvingContext ctx;
127 
128         ctx = command.execute();
129 
130         Assert.assertEquals(2, ctx.getMergeConflicts().size());
131     }
132     
133     @Test
134     public void testBackoutTipMerge() throws Exception {
135 
136         Repository repo = getTestRepository();
137         CommitCommand commitCmd = CommitCommand.on(repo).message("m")
138                 .user("user");
139 
140         writeFile("a", "boo");
141         writeFile("b", "bar");
142         AddCommand.on(repo).execute();
143         commitCmd.execute();
144 
145         writeFile("b", "booo");
146         Changeset backoutCs = commitCmd.execute();
147 
148         BackoutCommand.on(repo).rev(backoutCs.getNode()).merge()
149                 .message("BackoutMerge").user("user").execute();
150 
151         Assert.assertEquals(backoutCs, repo.workingCopy().getParent1().getParent1());
152         Assert.assertEquals(null, repo.workingCopy().getParent2());        
153         Assert.assertEquals(null, repo.workingCopy().getParent1().getParent2());
154 
155         Assert.assertEquals("bar", readFile("b"));
156         Assert.assertEquals(3, LogCommand.on(repo).execute().size());
157     }
158     
159     @Test
160     public void testBackoutTipUpdate() throws Exception {
161 
162         Repository repo = getTestRepository();
163         CommitCommand commitCmd = CommitCommand.on(repo).message("m")
164                 .user("user");
165 
166         writeFile("a", "boo");
167         writeFile("b", "bar");
168         AddCommand.on(repo).execute();
169         commitCmd.execute();
170 
171         writeFile("b", "booo");
172         Changeset backoutCs = commitCmd.execute();
173 
174         BackoutCommand.on(repo).rev(backoutCs.getNode())
175                 .message("BackoutMerge").user("user").execute();
176 
177         Assert.assertEquals(backoutCs, repo.workingCopy().getParent1().getParent1());
178         Assert.assertEquals(null, repo.workingCopy().getParent2());        
179         Assert.assertEquals(null, repo.workingCopy().getParent1().getParent2());
180 
181         commitCmd.execute();
182 
183         Assert.assertEquals("bar", readFile("b"));
184         Assert.assertEquals(3, LogCommand.on(repo).execute().size());
185     }
186 }