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 project = new Project();
69 project.init();
70 enableLogging();
71 project.addTaskDefinition("git-clone", GitCloneTask.class);
72 task = (GitCloneTask) project.createTask("git-clone");
73 dest = createTempFile();
74 task.setDest(dest);
75 }
76
77 @Test(expected = BuildException.class)
78 public void shouldRaiseErrorOnNoUrl() throws Exception {
79 task.execute();
80 }
81
82 @Test(expected = BuildException.class)
83 public void shouldRaiseErrorOnEmptyUrl() throws Exception {
84 task.setUri("");
85 task.execute();
86 }
87
88 @Test(expected = BuildException.class)
89 public void shouldRaiseErrorOnBadUrl() throws Exception {
90 task.setUri("foo://bar");
91 task.execute();
92 }
93
94 @Test(expected = BuildException.class)
95 public void shouldRaiseErrorOnBadSourceURL() throws Exception {
96 task.setUri("http://localhost:9090/does-not-exist.git");
97 task.execute();
98 }
99
100 @Test
101 public void shouldCloneAValidGitRepository() throws Exception {
102 Repository repo = createBareRepository();
103 File directory = repo.getDirectory();
104 task.setUri("file://" + directory.getAbsolutePath());
105 task.execute();
106
107 assertTrue(RepositoryCache.FileKey.isGitRepository(new File(dest, ".git"), FS.DETECTED));
108 }
109
110 @Test
111 public void shouldCreateABareCloneOfAValidGitRepository() throws Exception {
112 Repository repo = createBareRepository();
113 File directory = repo.getDirectory();
114 task.setUri("file://" + directory.getAbsolutePath());
115 task.setBare(true);
116 task.execute();
117
118 assertTrue(RepositoryCache.FileKey.isGitRepository(dest, FS.DETECTED));
119 }
120
121 private void enableLogging() {
122 DefaultLogger logger = new DefaultLogger();
123 logger.setOutputPrintStream(System.out);
124 logger.setErrorPrintStream(System.err);
125 logger.setMessageOutputLevel(Project.MSG_INFO);
126 project.addBuildListener(logger);
127 }
128
129 }