Adding <c:catch> JSTL test cases

This commit is contained in:
Joakim Erdfelt 2015-07-23 16:11:16 -07:00
parent 0476d4d28d
commit 06cb0ca897
8 changed files with 103 additions and 18 deletions

4
.gitignore vendored
View File

@ -43,3 +43,7 @@ bin/
# merge tooling # merge tooling
*.orig *.orig
# test generated content
*/src/test/*/WEB-INF/lib/test*.jar

View File

@ -20,19 +20,7 @@ package org.eclipse.jetty.jstl;
import java.io.File; import java.io.File;
import java.net.URI; import java.net.URI;
import java.net.URL;
import java.net.URLClassLoader;
import java.util.ArrayList;
import java.util.List;
import org.apache.tomcat.InstanceManager;
import org.apache.tomcat.SimpleInstanceManager;
import org.eclipse.jetty.annotations.ServletContainerInitializersStarter;
import org.eclipse.jetty.apache.jsp.JettyJasperInitializer;
import org.eclipse.jetty.jsp.JettyJspServlet;
import org.eclipse.jetty.plus.annotation.ContainerInitializer;
import org.eclipse.jetty.servlet.DefaultServlet;
import org.eclipse.jetty.servlet.ServletHolder;
import org.eclipse.jetty.webapp.WebAppContext; import org.eclipse.jetty.webapp.WebAppContext;
/** /**

View File

@ -25,19 +25,21 @@ import java.io.File;
import java.io.IOException; import java.io.IOException;
import java.net.URI; import java.net.URI;
import javax.servlet.jsp.JspException;
import org.eclipse.jetty.server.Server; import org.eclipse.jetty.server.Server;
import org.eclipse.jetty.server.ServerConnector; import org.eclipse.jetty.server.ServerConnector;
import org.eclipse.jetty.toolchain.test.FS; import org.eclipse.jetty.toolchain.test.FS;
import org.eclipse.jetty.toolchain.test.JAR;
import org.eclipse.jetty.toolchain.test.MavenTestingUtils; import org.eclipse.jetty.toolchain.test.MavenTestingUtils;
import org.eclipse.jetty.toolchain.test.SimpleRequest; import org.eclipse.jetty.toolchain.test.SimpleRequest;
import org.eclipse.jetty.webapp.WebAppContext;
import org.eclipse.jetty.webapp.Configuration; import org.eclipse.jetty.webapp.Configuration;
import org.eclipse.jetty.webapp.WebAppContext;
import org.junit.AfterClass; import org.junit.AfterClass;
import org.junit.BeforeClass; import org.junit.BeforeClass;
import org.junit.Ignore; import org.junit.Ignore;
import org.junit.Test; import org.junit.Test;
@Ignore
public class JstlTest public class JstlTest
{ {
private static Server server; private static Server server;
@ -55,6 +57,14 @@ public class JstlTest
// Setup WebAppContext // Setup WebAppContext
File testWebAppDir = MavenTestingUtils.getProjectDir("src/test/webapp"); File testWebAppDir = MavenTestingUtils.getProjectDir("src/test/webapp");
// Prepare WebApp libs
File libDir = new File(testWebAppDir, "WEB-INF/lib");
FS.ensureDirExists(libDir);
File testTagLibDir = MavenTestingUtils.getProjectDir("src/test/taglibjar");
JAR.create(testTagLibDir,new File(libDir, "testtaglib.jar"));
// Configure WebAppContext
Configuration.ClassList classlist = Configuration.ClassList Configuration.ClassList classlist = Configuration.ClassList
.setServerDefault(server); .setServerDefault(server);
@ -62,7 +72,6 @@ public class JstlTest
"org.eclipse.jetty.webapp.JettyWebXmlConfiguration", "org.eclipse.jetty.webapp.JettyWebXmlConfiguration",
"org.eclipse.jetty.annotations.AnnotationConfiguration"); "org.eclipse.jetty.annotations.AnnotationConfiguration");
WebAppContext context = new WebAppContext(); WebAppContext context = new WebAppContext();
context.setContextPath("/"); context.setContextPath("/");
@ -99,8 +108,28 @@ public class JstlTest
assertThat("Response should be JSP processed", resp, not(containsString("<c:url"))); assertThat("Response should be JSP processed", resp, not(containsString("<c:url")));
assertThat("Response", resp, containsString("[c:url value] = /ref.jsp;jsessionid=")); assertThat("Response", resp, containsString("[c:url value] = /ref.jsp;jsessionid="));
assertThat("Response", resp, containsString("[c:url param] = ref.jsp;key=value;jsessionid=")); assertThat("Response", resp, containsString("[c:url param] = ref.jsp;key=value;jsessionid="));
}
System.err.println("Response:"); @Test
System.err.println(resp); public void testCatchBasic() throws IOException
{
SimpleRequest req = new SimpleRequest(baseUri);
String resp = req.getString("/catch-basic.jsp");
assertThat("Response should be JSP processed", resp, not(containsString("<c:catch")));
assertThat("Response", resp, containsString("[c:catch] exception : " + JspException.class.getName()));
assertThat("Response", resp, containsString("[c:catch] exception.message : In &lt;parseNumber&gt;"));
}
@Test
@Ignore
public void testCatchTaglib() throws IOException
{
SimpleRequest req = new SimpleRequest(baseUri);
String resp = req.getString("/catch-taglib.jsp");
System.out.println("resp = " + resp);
assertThat("Response should be JSP processed", resp, not(containsString("<c:catch")));
assertThat("Response should be JSP processed", resp, not(containsString("<jtest:errortest")));
assertThat("Response", resp, containsString("[jtest:errorhandler] exception : "));
assertThat("Response", resp, containsString("[jtest:errorhandler] exception.message : "));
} }
} }

View File

@ -0,0 +1,21 @@
<?xml version="1.0" encoding="UTF-8" ?>
<taglib xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-jsptaglibrary_2_0.xsd"
version="2.0">
<description>eclipse jetty test taglib</description>
<tlib-version>1.0</tlib-version>
<short-name>jtest</short-name>
<uri>org.eclipse.jetty.jstl.jtest</uri>
<tag-file>
<name>errortest</name>
<path>/META-INF/tags/errortest.tag</path>
</tag-file>
<tag-file>
<name>errorhandler</name>
<path>/META-INF/tags/errorhandler.tag</path>
</tag-file>
</taglib>

View File

@ -0,0 +1,13 @@
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<c:catch var="error">
<jsp:doBody />
</c:catch>
<c:if test="${error != null}">
[jtest:errorhandler] exception : ${error}
[jtest:errorhandler] exception.message : ${error.message}
</c:if>
<c:if test="${error == null}">
[jtest:errorhandler] exception is null
</c:if>

View File

@ -0,0 +1,3 @@
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<c:out value="content from jtest:errortest tag"/>

View File

@ -0,0 +1,16 @@
<%@ page contentType="text/plain; charset=UTF-8" %>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<%@ taglib uri="http://java.sun.com/jsp/jstl/fmt" prefix="fmt" %>
Title: JSTL c:catch test
<c:catch var ="catchException">
<fmt:parseNumber var="parsedNum" value="aaa" />
</c:catch>
<c:if test = "${catchException != null}">
[c:catch] exception : ${catchException}
[c:catch] exception.message : ${catchException.message}
</c:if>
<c:if test = "${catchException == null}">
[c:catch] exception is null
</c:if>

View File

@ -0,0 +1,11 @@
<%@ page contentType="text/plain; charset=UTF-8" %>
<%@ taglib uri="org.eclipse.jetty.jstl.jtest" prefix="jtest" %>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<%@ taglib uri="http://java.sun.com/jsp/jstl/fmt" prefix="fmt" %>
Title: JSTL c:catch test
<jtest:errortest>
<fmt:parseNumber var="parsedNum" value="aaa" />
</jtest:errortest>
parsedNum = <c:out value="${parsedNum}"/>