Package org.eclipse.egit.core.test.op

Source Code of org.eclipse.egit.core.test.op.ListRemoteOperationTest

/*******************************************************************************
* Copyright (C) 2010, 2012 Mathias Kinzler <mathias.kinzler@sap.com> and others.
*
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/epl-v10.html
*******************************************************************************/
package org.eclipse.egit.core.test.op;

import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertNotNull;
import static org.junit.Assert.fail;

import java.io.File;
import java.lang.reflect.InvocationTargetException;

import org.eclipse.core.resources.IProject;
import org.eclipse.core.runtime.NullProgressMonitor;
import org.eclipse.egit.core.Activator;
import org.eclipse.egit.core.op.CloneOperation;
import org.eclipse.egit.core.op.ListRemoteOperation;
import org.eclipse.egit.core.test.DualRepositoryTestCase;
import org.eclipse.egit.core.test.TestRepository;
import org.eclipse.jgit.lib.Constants;
import org.eclipse.jgit.lib.RefUpdate;
import org.eclipse.jgit.lib.Repository;
import org.eclipse.jgit.transport.URIish;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;

public class ListRemoteOperationTest extends DualRepositoryTestCase {

  File workdir;

  File workdir2;

  String projectName = "ListRemoteTest";

  /**
   * Set up repository1 with branch "master", create some project and commit
   * it; then clone into repository2; finally create a branch "test" on top of
   * "master" in repository2
   *
   * @throws Exception
   */
  @Before
  public void setUp() throws Exception {

    workdir = testUtils.createTempDir("Repository1");
    workdir2 = testUtils.createTempDir("Repository2");

    repository1 = new TestRepository(new File(workdir, Constants.DOT_GIT));

    // now we create a project in repo1
    IProject project = testUtils.createProjectInLocalFileSystem(workdir,
        projectName);
    testUtils.addFileToProject(project, "folder1/file1.txt", "Hello world");

    repository1.connect(project);
    repository1.trackAllFiles(project);
    repository1.commit("Initial commit");

    // let's get rid of the project
    project.delete(false, false, null);

    // let's clone repository1 to repository2
    URIish uri = new URIish("file:///"
        + repository1.getRepository().getDirectory().toString());
    CloneOperation clop = new CloneOperation(uri, true, null, workdir2,
        "refs/heads/master", "origin", 0);
    clop.run(null);

    Repository existingRepo = Activator
        .getDefault()
        .getRepositoryCache()
        .lookupRepository(
            new File(workdir2, Constants.DOT_GIT));
    repository2 = new TestRepository(existingRepo);
    // we push to branch "test" of repository2
    RefUpdate createBranch = repository2.getRepository().updateRef(
        "refs/heads/test");
    createBranch.setNewObjectId(repository2.getRepository().resolve(
        "refs/heads/master"));
    createBranch.update();
  }

  @After
  public void tearDown() throws Exception {
    repository1.dispose();
    repository2.dispose();
    testUtils.deleteTempDirs();
  }

  /**
   * List the refs both ways
   *
   * @throws Exception
   */
  @Test
  public void testListRemote() throws Exception {

    URIish uri = new URIish("file:///"
        + repository2.getRepository().getDirectory().getPath());
    ListRemoteOperation lrop = new ListRemoteOperation(repository1
        .getRepository(), uri, 0);
    lrop.run(null);
    assertEquals(4, lrop.getRemoteRefs().size());
    assertNotNull(lrop.getRemoteRef("refs/heads/test"));

    uri = new URIish("file:///"
        + repository1.getRepository().getDirectory().getPath());
    lrop = new ListRemoteOperation(repository2.getRepository(), uri, 0);
    lrop.run(new NullProgressMonitor());
    assertEquals(2, lrop.getRemoteRefs().size());
    assertNotNull(lrop.getRemoteRef("refs/heads/master"));
  }

  /**
   * Call getRemoteRefs without having run the op
   *
   * @throws Exception
   */
  @Test
  public void testIllegalStateException() throws Exception {

    URIish uri = new URIish("file:///"
        + repository2.getRepository().getDirectory().getPath());
    ListRemoteOperation lrop = new ListRemoteOperation(repository1
        .getRepository(), uri, 0);
    try {
      lrop.getRemoteRefs();
      fail("Expected Exception not thrown");
    } catch (IllegalStateException e) {
      // expected
    }
  }

  /**
   * Test with illegal URI
   *
   * @throws Exception
   */
  @Test
  public void testIllegalURI() throws Exception {

    URIish uri = new URIish("file:///" + "no/path");
    ListRemoteOperation lrop = new ListRemoteOperation(repository1
        .getRepository(), uri, 0);
    try {
      lrop.run(new NullProgressMonitor());
      fail("Expected Exception not thrown");
    } catch (InvocationTargetException e) {
      // expected
    }
  }
}
TOP

Related Classes of org.eclipse.egit.core.test.op.ListRemoteOperationTest

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.