package com.beijunyi.parallelgit.utils;
import java.io.IOException;
import java.util.Arrays;
import java.util.Collections;
import com.beijunyi.parallelgit.AbstractParallelGitTest;
import org.eclipse.jgit.lib.AnyObjectId;
import org.eclipse.jgit.lib.PersonIdent;
import org.eclipse.jgit.revwalk.RevCommit;
import org.junit.Before;
import org.junit.Test;
import static org.junit.Assert.*;
public class CommitUtilsCreateCommitTest extends AbstractParallelGitTest {
@Before
public void setUp() throws IOException {
initRepository();
}
@Test
public void createCommitFromTree_theResultCommitRootTreeShouldBeTheSpecifiedTree() throws IOException {
writeSomethingToCache();
AnyObjectId treeId = CacheUtils.writeTree(cache, repo);
RevCommit commit = CommitUtils.createCommit(someCommitMessage(), treeId, null, repo);
assertEquals(treeId, commit.getTree());
}
@Test
public void createCommitFromCache_theResultCommitShouldHaveTheSameFilesAsInTheCache() throws IOException {
writeMultipleToCache("file1.txt", "file2.txt");
RevCommit commit = CommitUtils.createCommit(someCommitMessage(), cache, null, repo);
assertCacheEquals(cache, CacheUtils.forRevision(commit, repo));
}
@Test
public void createCommit_theResultCommitShouldHaveTheInputMessage() throws IOException {
writeSomethingToCache();
String expectedMessage = "test message";
RevCommit commit = CommitUtils.createCommit(expectedMessage, cache, null, repo);
assertEquals(expectedMessage, commit.getFullMessage());
}
@Test
public void createCommit_theResultCommitShouldHaveTheInputCommitter() throws IOException {
writeSomethingToCache();
PersonIdent expectedCommitter = new PersonIdent("test_user", "tester@email.com");
RevCommit commit = CommitUtils.createCommit(someCommitMessage(), cache, expectedCommitter, null, repo);
assertEquals(expectedCommitter, commit.getCommitterIdent());
}
@Test
public void createCommit_theResultCommitShouldHaveTheInputAuthor() throws IOException {
writeSomethingToCache();
PersonIdent expectedAuthor = new PersonIdent("test_user", "tester@email.com");
RevCommit commit = CommitUtils.createCommit(someCommitMessage(), cache, expectedAuthor, somePersonIdent(), Collections.<AnyObjectId>emptyList(), repo);
assertEquals(expectedAuthor, commit.getAuthorIdent());
}
@Test
public void createCommit_theResultCommitShouldHaveTheInputParents() throws IOException {
AnyObjectId[] expectedParents = new AnyObjectId[] {commitToMaster(), commitToMaster()};
writeSomethingToCache();
RevCommit commit = CommitUtils.createCommit(someCommitMessage(), cache, somePersonIdent(), somePersonIdent(), Arrays.asList(expectedParents), repo);
assertArrayEquals(expectedParents, commit.getParents());
}
}