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.ant.tasks;
44
45 import static org.junit.Assert.assertTrue;
46
47 import java.io.File;
48 import java.io.IOException;
49
50 import org.apache.tools.ant.BuildException;
51 import org.apache.tools.ant.DefaultLogger;
52 import org.apache.tools.ant.Project;
53 import org.eclipse.jgit.junit.LocalDiskRepositoryTestCase;
54 import org.eclipse.jgit.lib.Repository;
55 import org.eclipse.jgit.lib.RepositoryCache;
56 import org.eclipse.jgit.util.FS;
57 import org.junit.Before;
58 import org.junit.Test;
59
60 public class GitCloneTaskTest extends LocalDiskRepositoryTestCase {
61
62 private GitCloneTask task;
63 private Project project;
64 private File dest;
65
66 @Before
67 public void before() throws IOException {
68 dest = createTempFile();
69 FS.getFileStoreAttributes(dest.toPath().getParent());
70 project = new Project();
71 project.init();
72 enableLogging();
73 project.addTaskDefinition("git-clone", GitCloneTask.class);
74 task = (GitCloneTask) project.createTask("git-clone");
75 task.setDest(dest);
76 }
77
78 @Test(expected = BuildException.class)
79 public void shouldRaiseErrorOnNoUrl() throws Exception {
80 task.execute();
81 }
82
83 @Test(expected = BuildException.class)
84 public void shouldRaiseErrorOnEmptyUrl() throws Exception {
85 task.setUri("");
86 task.execute();
87 }
88
89 @Test(expected = BuildException.class)
90 public void shouldRaiseErrorOnBadUrl() throws Exception {
91 task.setUri("foo://bar");
92 task.execute();
93 }
94
95 @Test(expected = BuildException.class)
96 public void shouldRaiseErrorOnBadSourceURL() throws Exception {
97 task.setUri("http://localhost:9090/does-not-exist.git");
98 task.execute();
99 }
100
101 @Test
102 public void shouldCloneAValidGitRepository() throws Exception {
103 Repository repo = createBareRepository();
104 File directory = repo.getDirectory();
105 task.setUri("file://" + directory.getAbsolutePath());
106 task.execute();
107
108 assertTrue(RepositoryCache.FileKey.isGitRepository(new File(dest, ".git"), FS.DETECTED));
109 }
110
111 @Test
112 public void shouldCreateABareCloneOfAValidGitRepository() throws Exception {
113 Repository repo = createBareRepository();
114 File directory = repo.getDirectory();
115 task.setUri("file://" + directory.getAbsolutePath());
116 task.setBare(true);
117 task.execute();
118
119 assertTrue(RepositoryCache.FileKey.isGitRepository(dest, FS.DETECTED));
120 }
121
122 private void enableLogging() {
123 DefaultLogger logger = new DefaultLogger();
124 logger.setOutputPrintStream(System.out);
125 logger.setErrorPrintStream(System.err);
126 logger.setMessageOutputLevel(Project.MSG_INFO);
127 project.addBuildListener(logger);
128 }
129
130 }