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 package org.eclipse.jgit.api;
44
45 import static org.junit.Assert.assertEquals;
46 import static org.junit.Assert.assertNotNull;
47 import static org.junit.Assert.assertTrue;
48
49 import java.util.Collection;
50 import java.util.Iterator;
51
52 import org.eclipse.jgit.junit.RepositoryTestCase;
53 import org.eclipse.jgit.lib.Constants;
54 import org.eclipse.jgit.lib.ObjectId;
55 import org.eclipse.jgit.lib.RefUpdate;
56 import org.eclipse.jgit.lib.RefUpdate.Result;
57 import org.eclipse.jgit.revwalk.RevCommit;
58 import org.junit.Test;
59
60
61
62
63 public class StashListCommandTest extends RepositoryTestCase {
64
65 @Test
66 public void noStashRef() throws Exception {
67 StashListCommand command = Git.wrap(db).stashList();
68 Collection<RevCommit> stashed = command.call();
69 assertNotNull(stashed);
70 assertTrue(stashed.isEmpty());
71 }
72
73 @Test
74 public void emptyStashReflog() throws Exception {
75 Git git = Git.wrap(db);
76 writeTrashFile("file.txt", "content");
77 git.add().addFilepattern("file.txt").call();
78 RevCommit commit = git.commit().setMessage("create file").call();
79
80 RefUpdate update = db.updateRef(Constants.R_STASH);
81 update.setNewObjectId(commit);
82 update.disableRefLog();
83 assertEquals(Result.NEW, update.update());
84
85 StashListCommand command = Git.wrap(db).stashList();
86 Collection<RevCommit> stashed = command.call();
87 assertNotNull(stashed);
88 assertTrue(stashed.isEmpty());
89 }
90
91 @Test
92 public void singleStashedCommit() throws Exception {
93 Git git = Git.wrap(db);
94 writeTrashFile("file.txt", "content");
95 git.add().addFilepattern("file.txt").call();
96 RevCommit commit = git.commit().setMessage("create file").call();
97
98 assertEquals(Result.NEW, newStashUpdate(commit).update());
99
100 StashListCommand command = git.stashList();
101 Collection<RevCommit> stashed = command.call();
102 assertNotNull(stashed);
103 assertEquals(1, stashed.size());
104 assertEquals(commit, stashed.iterator().next());
105 }
106
107 @Test
108 public void multipleStashedCommits() throws Exception {
109 Git git = Git.wrap(db);
110
111 writeTrashFile("file.txt", "content");
112 git.add().addFilepattern("file.txt").call();
113 RevCommit commit1 = git.commit().setMessage("create file").call();
114
115 writeTrashFile("file.txt", "content2");
116 git.add().addFilepattern("file.txt").call();
117 RevCommit commit2 = git.commit().setMessage("edit file").call();
118
119 assertEquals(Result.NEW, newStashUpdate(commit1).update());
120 assertEquals(Result.FAST_FORWARD, newStashUpdate(commit2).update());
121
122 StashListCommand command = git.stashList();
123 Collection<RevCommit> stashed = command.call();
124 assertNotNull(stashed);
125 assertEquals(2, stashed.size());
126 Iterator<RevCommit> iter = stashed.iterator();
127 assertEquals(commit2, iter.next());
128 assertEquals(commit1, iter.next());
129 }
130
131 private RefUpdate newStashUpdate(ObjectId newId) throws Exception {
132 RefUpdate ru = db.updateRef(Constants.R_STASH);
133 ru.setNewObjectId(newId);
134 ru.setForceRefLog(true);
135 return ru;
136 }
137 }