Package org.tmatesoft.hg.test

Source Code of org.tmatesoft.hg.test.Configuration

/*
* Copyright (c) 2011-2013 TMate Software Ltd
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; version 2 of the License.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
* GNU General Public License for more details.
*
* For information on how to redistribute this software under
* the terms of a license other than GNU General Public License
* contact TMate Software at support@hg4j.com
*/
package org.tmatesoft.hg.test;

import static org.junit.Assert.*;

import java.io.File;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;

import org.tmatesoft.hg.core.HgException;
import org.tmatesoft.hg.repo.HgLookup;
import org.tmatesoft.hg.repo.HgRemoteRepository;
import org.tmatesoft.hg.repo.HgRepository;

/**
*
* @author Artem Tikhomirov
* @author TMate Software Ltd.
*/
public class Configuration {
 
  private static Configuration inst;
  private File root;
  private final HgLookup lookup;
  private File tempDir;
  private List<String> remoteServers;
  private File testDataDir;
 
  private Configuration() {
    lookup = new HgLookup();
  }
 
  private File getRoot() {
    if (root == null) {
      String repo2 = System.getProperty("hg4j.tests.repos");
      assertNotNull("System property hg4j.tests.repos is undefined", repo2);
      root = new File(repo2);
      assertTrue(root.exists());
    }
    return root;
  }
 
  public static Configuration get() {
    if (inst == null) {
      inst = new Configuration();
    }
    return inst;
  }
 
  public HgRepository own() throws Exception {
    return lookup.detectFromWorkingDir();
  }

  // fails if repo not found
  public HgRepository find(String key) throws HgException {
    HgRepository rv = lookup.detect(new File(getRoot(), key));
    assertNotNull(rv);
    assertFalse(rv.isInvalid());
    return rv;
  }

  // easy override for manual test runs
  public void remoteServers(String... keys) {
    remoteServers = Arrays.asList(keys);
  }

  public List<HgRemoteRepository> allRemote() throws Exception {
    if (remoteServers == null) {
      String rr = System.getProperty("hg4j.tests.remote");
      assertNotNull("System property hg4j.tests.remote is undefined", rr);
      remoteServers = Arrays.asList(rr.split("\\s"));
    }
    ArrayList<HgRemoteRepository> rv = new ArrayList<HgRemoteRepository>(remoteServers.size());
    for (String key : remoteServers) {
      rv.add(lookup.detectRemote(key, null));
    }
    return rv;
  }

  /**
   * @return temporary directory to use in tests, may be configured from outside
   */
  public File getTempDir() {
    if (tempDir == null) {
      String td = System.getProperty("hg4j.tests.tmpdir", System.getProperty("java.io.tmpdir"));
      tempDir = new File(td);
    }
    return tempDir;
  }
 
  /**
   * @return location with various files used in tests
   */
  public File getTestDataDir() {
    if (testDataDir == null) {
      testDataDir = new File(System.getProperty("user.dir"), "test-data");
    }
    return testDataDir;
  }
}
TOP

Related Classes of org.tmatesoft.hg.test.Configuration

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.