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