Package org.gitective.tests

Source Code of org.gitective.tests.CommitUtilsTest

/*
* 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");
  }
}
TOP

Related Classes of org.gitective.tests.CommitUtilsTest

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.