tests.modjy.java.org.python.util.PyServletTest Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of jython-standalone Show documentation
Show all versions of jython-standalone Show documentation
Jython is an implementation of the high-level, dynamic, object-oriented
language Python written in 100% Pure Java, and seamlessly integrated with
the Java platform. It thus allows you to run Python on any Java platform.
package org.python.util;
import javax.servlet.ServletException;
import org.python.core.PyFile;
import com.mockrunner.base.NestedApplicationException;
import com.mockrunner.mock.web.MockServletConfig;
import com.mockrunner.mock.web.MockServletContext;
import com.mockrunner.mock.web.WebMockObjectFactory;
import com.mockrunner.servlet.BasicServletTestCaseAdapter;
public class PyServletTest extends BasicServletTestCaseAdapter {
public void testGet() {
assertEquals("Basic text response", doGetAndRead("basic"));
}
public void testNoCallable() {
try {
doGetAndRead("empty");
fail("Using an empty file for PyServlet should raise a ServletException");
} catch (NestedApplicationException e) {
assertTrue(e.getRootCause() instanceof ServletException);
}
}
public void testReload() {
String originalBasic = readTestFile("basic");
try {
testGet();
writeToTestFile("basic", readTestFile("updated_basic"));
assertEquals("Updated text response", doGetAndRead("basic"));
} finally {
writeToTestFile("basic", originalBasic);
}
}
public void testInstanceCaching() {
assertEquals("1", doGetAndRead("increment"));
assertEquals("2", doGetAndRead("increment"));
}
@Override
protected void setUp() throws Exception {
super.setUp();
MockServletConfig cfg = getWebMockObjectFactory().getMockServletConfig();
cfg.setInitParameter("python.home", System.getProperty("JYTHON_HOME"));
createServlet(PyServlet.class);
}
protected String doGetAndRead(String testName) {
getWebMockObjectFactory().getMockRequest().setServletPath(getTestPath(testName));
doGet();
String result = getOutput();
clearOutput();
return result;
}
protected String getTestPath(String testName) {
return "/test/pyservlet/" + testName + ".py";
}
private String readTestFile(String testName) {
PyFile in = new PyFile(basePath + getTestPath(testName), "r", 4192);
String result = in.read().toString();
return result;
}
private void writeToTestFile(String testName, String newContents) {
PyFile out = new PyFile(basePath + getTestPath(testName), "w", 4192);
out.write(newContents);
out.close();
}
@Override
protected WebMockObjectFactory createWebMockObjectFactory() {
return new WebMockObjectFactory() {
@Override public MockServletContext createMockServletContext() {
return new MockServletContext() {
@Override public synchronized String getRealPath(String path) {
return basePath + path;
}
};
}
};
}
protected String basePath = System.getProperty("JYTHON_HOME") + "/Lib";
}