// Copyright (C) 2003-2009 by Object Mentor, Inc. All rights reserved.
// Released under the terms of the CPL Common Public License version 1.0.
package fitnesse.testutil;
import java.io.IOException;
import util.FileUtil;
import fitnesse.FitNesse;
import fitnesse.FitNesseContext;
import fitnesse.responders.ResponderFactory;
import fitnesse.wiki.InMemoryPage;
import fitnesse.wiki.VirtualCouplingExtension;
import fitnesse.wiki.VirtualCouplingPage;
import fitnesse.wiki.WikiPage;
public class FitNesseUtil {
private static FitNesse instance = null;
public static final int port = 1999;
public static FitNesseContext context;
public static final String URL = "http://localhost:" + port + "/";
public static void startFitnesse(WikiPage root) {
context = makeTestContext(root);
context.responderFactory = new ResponderFactory(context.rootPagePath);
context.port = port;
startFitnesseWithContext(context);
}
public static void startFitnesseWithContext(FitNesseContext context) {
instance = new FitNesse(context);
instance.start();
}
public static void stopFitnesse() throws IOException {
instance.stop();
FileUtil.deleteFileSystemDirectory("TestDir");
}
public static void bindVirtualLinkToPage(WikiPage host, WikiPage proxy) {
VirtualCouplingPage coupling = new VirtualCouplingPage(host, proxy);
((VirtualCouplingExtension) host.getExtension(VirtualCouplingExtension.NAME)).setVirtualCoupling(coupling);
}
public static FitNesseContext makeTestContext() {
return makeTestContext(InMemoryPage.makeRoot("root"));
}
public static FitNesseContext makeTestContext(WikiPage root) {
FitNesseContext context = new FitNesseContext(root);
// Ensure Velocity is configured with the default root directory name (FitNesseRoot)
context.pageFactory.getVelocityEngine();
context.rootDirectoryName = "TestDir";
context.setRootPagePath();
return context;
}
public static void destroyTestContext() {
FileUtil.deleteFileSystemDirectory("TestDir");
}
}