org.gitective.tests.CommitUtilsTest.java Source code

Java tutorial

Introduction

Here is the source code for org.gitective.tests.CommitUtilsTest.java

Source

/*
 * Copyright (c) 2011 Kevin Sawicki <kevinsawicki@gmail.com>
 *
 * Permission is hereby granted, free of charge, to any person obtaining a copy
 * of this software and associated documentation files (the "Software"), to
 * deal in the Software without restriction, including without limitation the
 * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
 * sell copies of the Software, and to permit persons to whom the Software is
 * furnished to do so, subject to the following conditions:
 *
 * The above copyright notice and this permission notice shall be included in
 * all copies or substantial portions of the Software.
 *
 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
 * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
 * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
 * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
 * IN THE SOFTWARE.
 */
package org.gitective.tests;

import java.io.IOException;
import java.util.Collection;

import org.eclipse.jgit.lib.Constants;
import org.eclipse.jgit.lib.ObjectId;
import org.eclipse.jgit.lib.Ref;
import org.eclipse.jgit.lib.Repository;
import org.eclipse.jgit.revwalk.RevCommit;
import org.eclipse.jgit.storage.file.FileRepository;
import org.gitective.core.CommitUtils;
import org.gitective.core.GitException;
import org.junit.Test;

/**
 * Unit tests of {@link CommitUtils}
 */
public class CommitUtilsTest extends GitTestCase {

    /**
     * Test constructor
     */
    @Test
    public void constructor() {
        assertNotNull(new CommitUtils() {
        });
    }

    /**
     * Test getting the commit a tag points to
     *
     * @throws Exception
     */
    @Test
    public void tagRef() throws Exception {
        add("a.txt", "a");
        RevCommit commit = add("test.txt", "content");
        tag(testRepo, "tag1");
        Repository repo = new FileRepository(testRepo);
        RevCommit refCommit = CommitUtils.getRef(repo, "tag1");
        assertNotNull(refCommit);
        assertEquals(commit, refCommit);
        Collection<RevCommit> commits = CommitUtils.getTags(repo);
        assertNotNull(commits);
        assertEquals(1, commits.size());
        assertEquals(commit, commits.iterator().next());
    }

    /**
     * Test getting commit for tag that doesn't exist
     *
     * @throws Exception
     */
    @Test
    public void invalidRef() throws Exception {
        RevCommit commit = CommitUtils.getRef(new FileRepository(testRepo), "notatag");
        assertNull(commit);
    }

    /**
     * Test getting the commit a branch points to
     *
     * @throws Exception
     */
    @Test
    public void branchRef() throws Exception {
        add("a.txt", "a");
        RevCommit commit = add("test.txt", "content");
        Ref ref = branch(testRepo, "branch1");
        Repository repo = new FileRepository(testRepo);
        RevCommit refCommit = CommitUtils.getRef(repo, ref);
        assertNotNull(refCommit);
        assertEquals(commit, refCommit);
        Collection<RevCommit> commits = CommitUtils.getBranches(repo);
        assertNotNull(commits);
        assertEquals(1, commits.size());
        assertEquals(commit, commits.iterator().next());
    }

    /**
     * Get commit with null repository parameter
     */
    @Test(expected = IllegalArgumentException.class)
    public void getCommitWithNullRepository() {
        CommitUtils.getCommit(null, ObjectId.zeroId());
    }

    /**
     * Get commit with null repository parameter
     */
    @Test(expected = IllegalArgumentException.class)
    public void getCommitWithNullRepository2() {
        CommitUtils.getCommit(null, Constants.MASTER);
    }

    /**
     * Get commit with null object id parameter
     *
     * @throws Exception
     */
    @Test(expected = IllegalArgumentException.class)
    public void getCommitWithNullObjectId() throws Exception {
        CommitUtils.getCommit(new FileRepository(testRepo), (ObjectId) null);
    }

    /**
     * Get commit with null revision parameter
     *
     * @throws Exception
     */
    @Test(expected = IllegalArgumentException.class)
    public void getCommitWithNullRevision() throws Exception {
        CommitUtils.getCommit(new FileRepository(testRepo), (String) null);
    }

    /**
     * Get commit with empty revision parameter
     *
     * @throws Exception
     */
    @Test(expected = IllegalArgumentException.class)
    public void getCommitWithEmptyRevision() throws Exception {
        CommitUtils.getCommit(new FileRepository(testRepo), "");
    }

    /**
     * Get base with null repository parameter
     */
    @Test(expected = IllegalArgumentException.class)
    public void getBaseWithNullRepository() {
        CommitUtils.getBase(null, ObjectId.zeroId());
    }

    /**
     * Get base with null repository parameter
     */
    @Test(expected = IllegalArgumentException.class)
    public void getBaseWithNullRepository2() {
        CommitUtils.getBase(null, Constants.MASTER);
    }

    /**
     * Get base with null object ids
     *
     * @throws Exception
     */
    @Test(expected = IllegalArgumentException.class)
    public void getBaseWithNullIds() throws Exception {
        CommitUtils.getBase(new FileRepository(testRepo), (ObjectId[]) null);
    }

    /**
     * Get base with empty object ids
     *
     * @throws Exception
     */
    @Test(expected = IllegalArgumentException.class)
    public void getBaseWithEmptyIds() throws Exception {
        CommitUtils.getBase(new FileRepository(testRepo), new ObjectId[0]);
    }

    /**
     * Get base with null revisions
     *
     * @throws Exception
     */
    @Test(expected = IllegalArgumentException.class)
    public void getBaseWithNullRevisions() throws Exception {
        CommitUtils.getBase(new FileRepository(testRepo), (String[]) null);
    }

    /**
     * Get base with empty revision
     *
     * @throws Exception
     */
    @Test(expected = IllegalArgumentException.class)
    public void getBaseWithEmptyRevisions() throws Exception {
        CommitUtils.getBase(new FileRepository(testRepo), new String[0]);
    }

    /**
     * Get base with unknown revision
     *
     * @throws Exception
     */
    @Test(expected = GitException.class)
    public void getBaseWithUnknownRevision() throws Exception {
        CommitUtils.getBase(new FileRepository(testRepo), "notaref");
    }

    /**
     * Get ref with null repository
     */
    @Test(expected = IllegalArgumentException.class)
    public void getRefWithNullRepository() {
        CommitUtils.getRef(null, Constants.MASTER);
    }

    /**
     * Get ref with null repository
     */
    @Test(expected = IllegalArgumentException.class)
    public void getRefWithNullRepository2() {
        CommitUtils.getRef(null, (Ref) null);
    }

    /**
     * Get ref with null ref name
     *
     * @throws Exception
     */
    @Test(expected = IllegalArgumentException.class)
    public void getRefWithNullRef() throws Exception {
        CommitUtils.getRef(new FileRepository(testRepo), (Ref) null);
    }

    /**
     * Get ref with null ref name
     *
     * @throws Exception
     */
    @Test(expected = IllegalArgumentException.class)
    public void getRefWithNullRefName() throws Exception {
        CommitUtils.getRef(new FileRepository(testRepo), (String) null);
    }

    /**
     * Get ref with empty ref name
     *
     * @throws Exception
     */
    @Test(expected = IllegalArgumentException.class)
    public void getRefWithEmptyRefName() throws Exception {
        CommitUtils.getRef(new FileRepository(testRepo), "");
    }

    /**
     * Get tags with null repository
     */
    @Test(expected = IllegalArgumentException.class)
    public void getTagsWithNullRepository() {
        CommitUtils.getTags(null);
    }

    /**
     * Get branches with null repository
     */
    @Test(expected = IllegalArgumentException.class)
    public void getBranchesWithNullRepository() {
        CommitUtils.getBranches(null);
    }

    /**
     * Get ref with bad ref database
     *
     * @throws IOException
     */
    @Test(expected = GitException.class)
    public void getRefWithBadRepository() throws IOException {
        CommitUtils.getRef(new BadRepository(testRepo, new IOException()), Constants.MASTER);
    }

    /**
     * Get branches with bad ref database
     *
     * @throws IOException
     */
    @Test(expected = GitException.class)
    public void getBranchesWithBadRepository() throws IOException {
        CommitUtils.getBranches(new BadRepository(testRepo, new IOException()));
    }

    /**
     * Get tags with bad ref database
     *
     * @throws IOException
     */
    @Test(expected = GitException.class)
    public void getTagsWithBadRepository() throws IOException {
        CommitUtils.getTags(new BadRepository(testRepo, new IOException()));
    }

    /**
     * Get commit for ref with null id
     *
     * @throws Exception
     */
    @Test
    public void getRefWithNullId() throws Exception {
        Ref ref = new Ref() {

            public boolean isSymbolic() {
                return false;
            }

            public boolean isPeeled() {
                return false;
            }

            public Ref getTarget() {
                return null;
            }

            public Storage getStorage() {
                return null;
            }

            public ObjectId getPeeledObjectId() {
                return null;
            }

            public ObjectId getObjectId() {
                return null;
            }

            public String getName() {
                return null;
            }

            public Ref getLeaf() {
                return null;
            }
        };
        assertNull(CommitUtils.getRef(new FileRepository(testRepo), ref));
    }

    /**
     * Get commit for ref with zero id
     *
     * @throws Exception
     */
    @Test(expected = GitException.class)
    public void getRefWithZeroId() throws Exception {
        Ref ref = new Ref() {

            public boolean isSymbolic() {
                return false;
            }

            public boolean isPeeled() {
                return false;
            }

            public Ref getTarget() {
                return null;
            }

            public Storage getStorage() {
                return null;
            }

            public ObjectId getPeeledObjectId() {
                return null;
            }

            public ObjectId getObjectId() {
                return ObjectId.zeroId();
            }

            public String getName() {
                return null;
            }

            public Ref getLeaf() {
                return null;
            }
        };
        CommitUtils.getRef(new FileRepository(testRepo), ref);
    }

    /**
     * Get commit base with zero id
     *
     * @throws Exception
     */
    @Test(expected = GitException.class)
    public void getBaseWithZeroId() throws Exception {
        CommitUtils.getBase(new FileRepository(testRepo), ObjectId.zeroId());
    }

    /**
     * Get commit with zero id
     *
     * @throws Exception
     */
    @Test(expected = GitException.class)
    public void getCommitWithZeroId() throws Exception {
        CommitUtils.getCommit(new FileRepository(testRepo), ObjectId.zeroId());
    }

    /**
     * Get last commit that changed path
     *
     * @throws Exception
     */
    @Test
    public void getLastCommit() throws Exception {
        RevCommit commit1 = add("file1.txt", "content1");
        RevCommit commit2 = add("file2.txt", "content2");
        assertEquals(commit1, CommitUtils.getLastCommit(new FileRepository(testRepo), "file1.txt"));
        assertEquals(commit2, CommitUtils.getLastCommit(new FileRepository(testRepo), "file2.txt"));
    }

    /**
     * Get last commit with null repository
     */
    @Test(expected = IllegalArgumentException.class)
    public void getLastCommitNullRepository() {
        CommitUtils.getLastCommit(null, "d/f.txt");
    }

    /**
     * Get last commit with null path
     *
     * @throws Exception
     */
    @Test(expected = IllegalArgumentException.class)
    public void getLastCommitNullPath() throws Exception {
        CommitUtils.getLastCommit(new FileRepository(testRepo), null);
    }

    /**
     * Get last commit with empty path
     *
     * @throws Exception
     */
    @Test(expected = IllegalArgumentException.class)
    public void getLastCommitEmptyPath() throws Exception {
        CommitUtils.getLastCommit(new FileRepository(testRepo), "");
    }

    /**
     * Get last commit with null revision
     *
     * @throws Exception
     */
    @Test(expected = IllegalArgumentException.class)
    public void getLastCommitNullRevision() throws Exception {
        CommitUtils.getLastCommit(new FileRepository(testRepo), null, "d/f.txt");
    }

    /**
     * Get last commit with empty revision
     *
     * @throws Exception
     */
    @Test(expected = IllegalArgumentException.class)
    public void getLastCommitEmptyRevision() throws Exception {
        CommitUtils.getLastCommit(new FileRepository(testRepo), "", "d/f.txt");
    }
}