package nl.minicom.gitolite.manager.git;
import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
import nl.minicom.gitolite.manager.exceptions.GitException;
import nl.minicom.gitolite.manager.exceptions.ServiceUnavailable;
import org.junit.Assert;
import org.junit.Test;
import com.google.common.io.Files;
public class JGitManagerTest {
@Test
public void testConstructorWithValidInputs() {
new JGitManager(Files.createTempDir(), null);
}
@Test(expected = NullPointerException.class)
public void testConstructorWithNullAsWorkingDirectory() {
new JGitManager(null, null);
}
@Test
public void testGetWorkingDirectory() {
File workingDirectory = Files.createTempDir();
JGitManager manager = new JGitManager(workingDirectory, null);
Assert.assertEquals(workingDirectory, manager.getWorkingDirectory());
}
@Test
public void testOpenExistingWorkingDirectory() throws IOException, GitException {
File dir = Files.createTempDir();
new JGitManager(dir, null).init();
new JGitManager(dir, null).open();
}
@Test
public void testRemoveFileFromWorkingDirectory() throws IOException, GitException {
File dir = Files.createTempDir();
JGitManager jGitManager = new JGitManager(dir, null);
jGitManager.init();
File file = new File(dir, "test.txt");
FileWriter writer = new FileWriter(file);
writer.write("Hello world");
writer.close();
jGitManager.commitChanges();
jGitManager.remove(file.getName());
jGitManager.commitChanges();
Assert.assertFalse(file.exists());
}
@Test
public void testCloningExistingRepo() throws ServiceUnavailable, GitException {
File location = Files.createTempDir();
new JGitManager(location, null).init();
GitManager git = new JGitManager(Files.createTempDir(), null);
git.clone(location.getAbsolutePath());
}
@Test
public void testInitializingNewRepo() throws GitException {
File dir = Files.createTempDir();
new JGitManager(dir, null).init();
Assert.assertTrue(new File(dir, ".git").exists());
}
@Test
public void testPullingFromExistingRepo() throws IOException, ServiceUnavailable, GitException {
File location = Files.createTempDir();
GitManager orig = new JGitManager(location, null);
orig.init();
orig.commitChanges();
GitManager git = new JGitManager(Files.createTempDir(), null);
git.clone(location.getAbsolutePath());
FileWriter writer = new FileWriter(new File(location, "test.txt"));
writer.write("Hello world");
writer.close();
orig.commitChanges();
Assert.assertTrue(git.pull());
}
@Test
public void testCommittingChangesToRepo() throws IOException, GitException {
File location = Files.createTempDir();
GitManager orig = new JGitManager(location, null);
orig.init();
orig.commitChanges();
}
@Test
public void testPushingToRemoteRepo() throws IOException, ServiceUnavailable, GitException {
File cloneDirectory = Files.createTempDir();
File workingDirectory = Files.createTempDir();
File location = Files.createTempDir();
GitManager orig = new JGitManager(location, null);
orig.init();
orig.commitChanges();
GitManager git = new JGitManager(workingDirectory, null);
git.clone(location.getAbsolutePath());
FileWriter writer = new FileWriter(new File(workingDirectory, "test.txt"));
writer.write("Hello world");
writer.close();
git.commitChanges();
git.push();
GitManager clone = new JGitManager(cloneDirectory, null);
clone.clone(location.getAbsolutePath());
Assert.assertTrue(new File(cloneDirectory, "test.txt").exists());
}
}