package fitnesse.responders.run; import org.junit.Before; import org.junit.Test; import static org.junit.Assert.assertEquals; import fitnesse.FitNesse; import fitnesse.FitNesseContext; import fitnesse.responders.run.TestSystem.Descriptor; import fitnesse.testutil.FitNesseUtil; import fitnesse.wiki.InMemoryPage; import fitnesse.wiki.PageCrawler; import fitnesse.wiki.PathParser; import fitnesse.wiki.WikiPage; public class TestSystemTest { private FitNesseContext context; @Before public void setUp() { context = FitNesseUtil.makeTestContext(); } @Test public void testCommandPatternCSharp() throws Exception { String specifiedPageText = "!define COMMAND_PATTERN {%m -r fitSharp.Slim.Service.Runner,fitsharp.dll %p}\n"; WikiPage specifiedPage = makeTestPage(specifiedPageText); Descriptor defaultDescriptor2 = TestSystem.getDescriptor(specifiedPage.getData(), context.pageFactory, false); assertEquals("%m -r fitSharp.Slim.Service.Runner,fitsharp.dll %p", defaultDescriptor2.commandPattern); Descriptor defaultDescriptor3 = TestSystem.getDescriptor(specifiedPage.getData(), context.pageFactory, true); assertEquals("%m -r fitSharp.Slim.Service.Runner,fitsharp.dll %p", defaultDescriptor3.commandPattern); } @Test public void testCommandPatternJava() throws Exception { String pageText = "!define TEST_SYSTEM {slim}\n"; WikiPage page = makeTestPage(pageText); Descriptor defaultDescriptor = TestSystem.getDescriptor(page.getData(), context.pageFactory, false); String sep = System.getProperty("path.separator"); assertEquals("java -cp fitnesse.jar" + sep + "%p %m", defaultDescriptor.commandPattern); Descriptor debugDescriptor = TestSystem.getDescriptor(page.getData(), context.pageFactory, true); assertEquals( "java -Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=8000 -cp %p %m", debugDescriptor.commandPattern); String specifiedPageText = "!define COMMAND_PATTERN {java -specialParam -cp %p %m}\n" + "!define REMOTE_DEBUG_COMMAND {java -remoteDebug -cp %p %m}"; WikiPage specifiedPage = makeTestPage(specifiedPageText); Descriptor defaultDescriptor2 = TestSystem.getDescriptor(specifiedPage.getData(), context.pageFactory, false); assertEquals("java -specialParam -cp %p %m", defaultDescriptor2.commandPattern); Descriptor debugDescriptor2 = TestSystem.getDescriptor(specifiedPage.getData(), context.pageFactory, true); assertEquals("java -remoteDebug -cp %p %m", debugDescriptor2.commandPattern); } @Test public void testCommandPatternWithVariable() throws Exception { String specifiedPageText = "!define COMMAND_PATTERN (${MY_RUNNER} %p %m)\n" + "!define MY_RUNNER {rubyslim}\n"; WikiPage specifiedPage = makeTestPage(specifiedPageText); Descriptor myDescriptor = TestSystem.getDescriptor(specifiedPage.getData(), context.pageFactory, false); assertEquals("rubyslim %p %m", myDescriptor.commandPattern); } @Test public void testTestRunnerWithVariable() throws Exception { String specifiedPageText = "!define TEST_RUNNER (${MY_RUNNER}.rb)\n" + "!define MY_RUNNER {rubyslim}\n"; WikiPage specifiedPage = makeTestPage(specifiedPageText); Descriptor myDescriptor = TestSystem.getDescriptor(specifiedPage.getData(), context.pageFactory, false); assertEquals("rubyslim.rb", myDescriptor.testRunner); } @Test public void testRunnerCSharp() throws Exception { String specifiedPageText = "!define TEST_RUNNER {..\\fitnesse\\fitsharp\\Runner.exe}"; WikiPage specifiedPage = makeTestPage(specifiedPageText); Descriptor defaultDescriptor2 = TestSystem.getDescriptor(specifiedPage.getData(), context.pageFactory, false); assertEquals("..\\fitnesse\\fitsharp\\Runner.exe", defaultDescriptor2.testRunner); Descriptor defaultDescriptor3 = TestSystem.getDescriptor(specifiedPage.getData(), context.pageFactory, true); assertEquals("..\\fitnesse\\fitsharp\\runnerw.exe", defaultDescriptor3.testRunner); } @Test public void testRunnerDefault() throws Exception { String pageText = "!define TEST_SYSTEM {slim}\n"; WikiPage page = makeTestPage(pageText); Descriptor defaultDescriptor2 = TestSystem.getDescriptor(page.getData(), context.pageFactory, false); assertEquals("fitnesse.slim.SlimService", defaultDescriptor2.testRunner); Descriptor defaultDescriptor3 = TestSystem.getDescriptor(page.getData(), context.pageFactory, true); assertEquals("fitnesse.slim.SlimService", defaultDescriptor3.testRunner); String specifiedPageText = "!define REMOTE_DEBUG_RUNNER {Different runner}"; WikiPage specifiedPage = makeTestPage(specifiedPageText); Descriptor specifiedDescriptor = TestSystem.getDescriptor(specifiedPage.getData(), context.pageFactory, true); assertEquals("Different runner", specifiedDescriptor.testRunner); } WikiPage makeTestPage(String pageText) throws Exception { WikiPage root = InMemoryPage.makeRoot("RooT"); PageCrawler crawler = root.getPageCrawler(); return crawler.addPage(root, PathParser.parse("TestPage"), pageText); } @Test public void testTestRunnerWithRootPathVariable() throws Exception { String fitnesseRootpath = "/home/fitnesse"; FitNesseContext context = new FitNesseContext(); context.rootPath = fitnesseRootpath; new FitNesse(context, false); String specifiedPageText = "!define TEST_RUNNER (${FITNESSE_ROOTPATH}/rubyslim.rb)\n"; WikiPage specifiedPage = makeTestPage(specifiedPageText); Descriptor myDescriptor = TestSystem.getDescriptor(specifiedPage.getData(), context.pageFactory, false); assertEquals(fitnesseRootpath + "/rubyslim.rb", myDescriptor.testRunner); } }