package net.jsunit;
import junit.framework.Test;
import junit.framework.TestCase;
import junit.framework.TestSuite;
import net.jsunit.configuration.CompositeConfigurationSource;
import net.jsunit.configuration.ConfigurationSource;
import net.jsunit.configuration.DelegatingConfigurationSource;
import net.jsunit.configuration.ServerConfiguration;
import net.jsunit.model.Browser;
import net.jsunit.model.TestRunResult;
public class StandaloneTest extends TestCase {
protected JsUnitServer server;
private TestRunManager testRunManager;
private ConfigurationSource configurationSource;
private String overrideURL;
public StandaloneTest(String name) {
super(name);
this.configurationSource = configurationSource();
}
public StandaloneTest(ConfigurationSource source) {
super(source.browserFileNames());
this.configurationSource = source;
}
public static Test suite() {
TestSuite suite = new TestSuite();
ConfigurationSource originalSource = CompositeConfigurationSource.resolve();
ServerConfiguration configuration = new ServerConfiguration(originalSource);
for (final Browser browser : configuration.getBrowsers())
suite.addTest(new StandaloneTest(new DelegatingConfigurationSource(originalSource) {
public String browserFileNames() {
return browser.getFullFileName();
}
}));
return suite;
}
public void setUp() throws Exception {
super.setUp();
server = new JsUnitServer(new ServerConfiguration(configurationSource));
server.start();
testRunManager = createTestRunManager();
}
protected ConfigurationSource configurationSource() {
return CompositeConfigurationSource.resolve();
}
protected TestRunManager createTestRunManager() {
return new TestRunManager(server, overrideURL);
}
public void tearDown() throws Exception {
if (server != null)
server.dispose();
super.tearDown();
}
public void runTest() throws Exception {
testStandaloneRun();
}
public void testStandaloneRun() throws Exception {
testRunManager.runTests();
TestRunResult result = testRunManager.getTestRunResult();
if (!result.wasSuccessful()) {
StringBuffer buffer = new StringBuffer();
result.addErrorStringTo(buffer);
System.err.println(buffer.toString());
fail(result.displayString());
}
}
public JsUnitServer getServer() {
return server;
}
public void setOverrideURL(String url) {
this.overrideURL = url;
}
}