package hudson.drools; import junit.framework.Assert; import com.gargoylesoftware.htmlunit.html.HtmlAnchor; import com.gargoylesoftware.htmlunit.html.HtmlPage; public class ScriptTest extends DroolsTestCase { private DroolsProject project; @Override protected void setUp() throws Exception { super.setUp(); project = createProject("project", "script.rf"); } public void testScriptExecution() throws Exception { String source = "println \"script executed\""; DroolsManagement.getInstance().setScripts(new Script("script", source)); project.scheduleBuild(); waitForWorkflowComplete(project, 1); DroolsRun build = project.getLastBuild(); Assert.assertTrue(build.getLog().contains("script executed")); Assert.assertEquals(1, build.getScriptExecutions().size()); Assert.assertEquals(ScriptExecution.Result.COMPLETED, build .getScriptExecutions().get(0).getResult()); } public void testScriptExecutionFailed() throws Exception { String source = "throw new Exception()"; DroolsManagement.getInstance().setScripts(new Script("script", source)); project.scheduleBuild(); Thread.sleep(1000); DroolsRun build = project.getLastBuild(); Assert.assertTrue(build.getLog().contains("java.lang.Exception")); Assert.assertTrue(build.isRunning()); Assert.assertEquals(1, build.getScriptExecutions().size()); ScriptExecution scriptExecution = build.getScriptExecutions().get(0); Assert.assertEquals(ScriptExecution.Result.FAILED, scriptExecution .getResult()); HtmlPage page = new WebClient().goTo(build.getUrl()); HtmlAnchor anchor = (HtmlAnchor) page.getFirstByXPath("//a[@href='/" + scriptExecution.getUrl() + "/run']"); Assert.assertNotNull(anchor); DroolsManagement.getInstance().setScripts(new Script("script", "")); anchor.click(); waitForWorkflowComplete(project, 1); Assert.assertEquals(ScriptExecution.Result.COMPLETED, scriptExecution .getResult()); page = new WebClient().goTo(build.getUrl()); anchor = (HtmlAnchor) page.getFirstByXPath("//a[@href='/" + scriptExecution.getUrl() + "/run']"); Assert.assertNull(anchor); } public void testScriptParameters() throws Exception { StringBuilder source = new StringBuilder(); source.append("assert hudson != null\n"); source.append("assert session != null\n"); source.append("assert args != null\n"); source.append("assert out != null\n"); DroolsManagement.getInstance().setScripts( new Script("script", source.toString())); project.scheduleBuild(); waitForWorkflowComplete(project, 1); Assert.assertEquals(ScriptExecution.Result.COMPLETED, project .getLastBuild().getScriptExecutions().get(0).getResult()); } }