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.pgm;
44
45 import static org.junit.Assert.assertEquals;
46
47 import org.eclipse.jgit.api.Git;
48 import org.eclipse.jgit.lib.CLIRepositoryTestCase;
49 import org.eclipse.jgit.lib.Repository;
50 import org.eclipse.jgit.lib.StoredConfig;
51 import org.eclipse.jgit.transport.RemoteConfig;
52 import org.eclipse.jgit.transport.URIish;
53 import org.junit.Before;
54 import org.junit.Test;
55
56 public class FetchTest extends CLIRepositoryTestCase {
57 private Git git;
58
59 private Git remoteGit;
60
61 @Override
62 @Before
63 public void setUp() throws Exception {
64 super.setUp();
65 git = new Git(db);
66 git.commit().setMessage("initial commit").call();
67
68 Repository remoteRepository = createWorkRepository();
69 remoteGit = new Git(remoteRepository);
70
71
72 final StoredConfig config = db.getConfig();
73 RemoteConfig remoteConfig = new RemoteConfig(config, "test");
74 URIish uri = new URIish(remoteRepository.getDirectory().toURI().toURL());
75 remoteConfig.addURI(uri);
76 remoteConfig.update(config);
77 config.save();
78
79 remoteGit.commit().setMessage("initial commit").call();
80 remoteGit.tag().setName("tag").call();
81 remoteGit.checkout().setName("other").setCreateBranch(true).call();
82 remoteGit.commit().setMessage("commit2").call();
83 remoteGit.tag().setName("foo").call();
84 }
85
86 @Test
87 public void testFetchDefault() throws Exception {
88 String[] result = execute("git fetch test refs/heads/master:refs/remotes/origin/master");
89 assertEquals(" * [new branch] master -> origin/master",
90 result[1]);
91 assertEquals(" * [new tag] tag -> tag", result[2]);
92 }
93
94 @Test
95 public void testFetchForceUpdate() throws Exception {
96 String[] result = execute(
97 "git fetch test refs/heads/master:refs/remotes/origin/master");
98 assertEquals(" * [new branch] master -> origin/master",
99 result[1]);
100 assertEquals(" * [new tag] tag -> tag", result[2]);
101 remoteGit.commit().setAmend(true).setMessage("amended").call();
102 result = execute(
103 "git fetch -f test refs/heads/master:refs/remotes/origin/master");
104 assertEquals("", result[0]);
105 }
106
107 @Test
108 public void testFetchNoTags() throws Exception {
109 String[] result = execute("git fetch --no-tags test refs/heads/master:refs/remotes/origin/master");
110 assertEquals(" * [new branch] master -> origin/master",
111 result[1]);
112 assertEquals("", result[2]);
113 }
114
115 @Test
116 public void testFetchAllTags() throws Exception {
117 String[] result = execute("git fetch --tags test refs/heads/master:refs/remotes/origin/master");
118 assertEquals(" * [new branch] master -> origin/master",
119 result[1]);
120 assertEquals(" * [new tag] foo -> foo", result[2]);
121 assertEquals(" * [new tag] tag -> tag", result[3]);
122 }
123 }