Package com.google.devtools.moe.client.dvcs

Source Code of com.google.devtools.moe.client.dvcs.AbstractDvcsCodebaseCreatorTest

// Copyright 2011 The MOE Authors All Rights Reserved.

package com.google.devtools.moe.client.dvcs;

import static org.easymock.EasyMock.expect;

import com.google.common.base.Suppliers;
import com.google.common.collect.ImmutableList;
import com.google.common.collect.ImmutableMap;
import com.google.common.collect.ImmutableSet;
import com.google.devtools.moe.client.AppContext;
import com.google.devtools.moe.client.FileSystem;
import com.google.devtools.moe.client.codebase.Codebase;
import com.google.devtools.moe.client.codebase.LocalClone;
import com.google.devtools.moe.client.project.RepositoryConfig;
import com.google.devtools.moe.client.repositories.Revision;
import com.google.devtools.moe.client.repositories.RevisionHistory;
import com.google.devtools.moe.client.testing.AppContextForTesting;

import junit.framework.TestCase;

import org.easymock.EasyMock;
import org.easymock.IMocksControl;

import java.io.File;
import java.util.Collections;

/**
* Tests for AbstractDvcsCodebaseCreator, esp. that create() archives at the right revision.
*
*/
public class AbstractDvcsCodebaseCreatorTest extends TestCase {

  private static final String MOCK_REPO_NAME = "mockrepo";

  private IMocksControl control;
  private LocalClone mockRepo;
  private RevisionHistory mockRevHistory;
  private RepositoryConfig mockRepoConfig;
  private AbstractDvcsCodebaseCreator codebaseCreator;

  @Override protected void setUp() throws Exception {
    super.setUp();

    AppContextForTesting.initForTest();
    control = EasyMock.createControl();
    AppContext.RUN.fileSystem = control.createMock(FileSystem.class);
    mockRepo = control.createMock(LocalClone.class);
    mockRevHistory = control.createMock(RevisionHistory.class);
    mockRepoConfig = control.createMock(RepositoryConfig.class);

    expect(mockRepo.getConfig()).andReturn(mockRepoConfig).anyTimes();
    expect(mockRepoConfig.getIgnoreFileRes()).andReturn(ImmutableList.<String>of());
    expect(mockRepo.getRepositoryName()).andReturn(MOCK_REPO_NAME);

    codebaseCreator = new AbstractDvcsCodebaseCreator(
        Suppliers.ofInstance(mockRepo),
        mockRevHistory,
        "public") {
          @Override protected LocalClone cloneAtLocalRoot(String localroot) {
            throw new UnsupportedOperationException();
          }
    };
  }

  public void testCreate_noGivenRev() throws Exception {
    String archiveTempDir = "/tmp/git_archive_mockrepo_head";
    // Short-circuit Utils.filterFilesByPredicate(ignore_files_re).
    expect(AppContext.RUN.fileSystem.findFiles(new File(archiveTempDir)))
        .andReturn(ImmutableSet.<File>of());

    expect(mockRevHistory.findHighestRevision(null))
        .andReturn(new Revision("mock head changeset ID", MOCK_REPO_NAME));
    expect(mockRepo.archiveAtRevision("mock head changeset ID"))
        .andReturn(new File(archiveTempDir));

    control.replay();

    Codebase codebase = codebaseCreator.create(Collections.<String, String>emptyMap());

    assertEquals(new File(archiveTempDir), codebase.getPath());
    assertEquals("public", codebase.getProjectSpace());
    assertEquals("mockrepo", codebase.getExpression().toString());

    control.verify();
  }

  public void testCreate_givenRev() throws Exception {
    String givenRev = "givenrev";
    String archiveTempDir = "/tmp/git_reclone_mockrepo_head_" + givenRev;
    // Short-circuit Utils.filterFilesByPredicate(ignore_files_re).
    expect(AppContext.RUN.fileSystem.findFiles(new File(archiveTempDir)))
        .andReturn(ImmutableSet.<File>of());

    expect(mockRevHistory.findHighestRevision(givenRev))
        .andReturn(new Revision(givenRev, MOCK_REPO_NAME));
    expect(mockRepo.archiveAtRevision(givenRev)).andReturn(new File(archiveTempDir));

    control.replay();

    Codebase codebase = codebaseCreator.create(ImmutableMap.of("revision", givenRev));

    assertEquals(new File(archiveTempDir), codebase.getPath());
    assertEquals("public", codebase.getProjectSpace());
    assertEquals("mockrepo(revision=" + givenRev + ")", codebase.getExpression().toString());

    control.verify();
  }
}
TOP

Related Classes of com.google.devtools.moe.client.dvcs.AbstractDvcsCodebaseCreatorTest

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.