}
public void testExecuteTimeout() throws Exception {
Project project = new Project();
ProcessTester server = new ProcessTester();
XhExecTask task = new XhExecTask();
task.setProject(project);
task.setExecutable(JVM_CMD);
task.setTimeout(new Long(2000));
task.createArg().setValue("-cp");
task.createArg().setPath(new Path(project, getClassPath()));
task.createArg().setLine(ProcessTester.class.getName());
task.createArg().setLine("-p " + server.getPort());
task.createArg().setLine("-s user.dir");
task.createArg().setLine("-t 10");
try {
task.execute();
fail("Expected BuildException");
} catch (BuildException be) {
assertEquals("Wrong message", "Timeout: killed the sub-process", be.getMessage());
}
assertEquals("Wrong return value", 0, task.getReturnValue());
assertTrue("Client did not run", server.passed());
assertEquals("Wrong user dir", System.getProperty("user.dir"), server.getReceivedData());
}