// License: GPL. For details, see LICENSE file.
package org.openstreetmap.josm.fixtures;
import static org.junit.Assert.fail;
import java.io.File;
import java.text.MessageFormat;
import java.util.Properties;
import java.util.logging.Level;
import java.util.logging.Logger;
import org.openstreetmap.josm.Main;
import org.openstreetmap.josm.data.osm.DataSetMergerTest;
import org.openstreetmap.josm.data.projection.Mercator;
import org.openstreetmap.josm.io.OsmApi;
import org.openstreetmap.josm.tools.I18n;
public class JOSMFixture {
static private final Logger logger = Logger.getLogger(JOSMFixture.class.getName());
static public JOSMFixture createUnitTestFixture() {
return new JOSMFixture("/test-unit-env.properties");
}
static public JOSMFixture createFunctionalTestFixture() {
return new JOSMFixture("/test-functional-env.properties");
}
private Properties testProperties;
private String testPropertiesResourceName;
public JOSMFixture(String testPropertiesResourceName) {
this.testPropertiesResourceName = testPropertiesResourceName;
}
public void init() {
testProperties = new Properties();
// load properties
//
try {
testProperties.load(DataSetMergerTest.class.getResourceAsStream(testPropertiesResourceName));
} catch(Exception e){
logger.log(Level.SEVERE, MessageFormat.format("failed to load property file ''{0}''", testPropertiesResourceName));
fail(MessageFormat.format("failed to load property file ''{0}''. \nMake sure the path ''$project_root/test/config'' is on the classpath.", testPropertiesResourceName));
}
// check josm.home
//
String josmHome = testProperties.getProperty("josm.home");
if (josmHome == null) {
fail(MessageFormat.format("property ''{0}'' not set in test environment", "josm.home"));
} else {
File f = new File(josmHome);
if (! f.exists() || ! f.canRead()) {
fail(MessageFormat.format("property ''{0}'' points to ''{1}'' which is either not existing or not readable.\nEdit ''{2}'' and update the value ''josm.home''. ", "josm.home", josmHome,testPropertiesResourceName ));
}
}
System.setProperty("josm.home", josmHome);
I18n.init();
// initialize the plaform hook, and
Main.determinePlatformHook();
// call the really early hook before we anything else
Main.platform.preStartupHook();
Main.pref.init(false);
// init projection
Main.proj = new Mercator();
// make sure we don't upload to or test against production
//
String url = OsmApi.getOsmApi().getBaseUrl().toLowerCase().trim();
if (url.startsWith("http://www.openstreetmap.org")
|| url.startsWith("http://api.openstreetmap.org")) {
fail(MessageFormat.format("configured server url ''{0}'' seems to be a productive url, aborting.", url));
}
}
}