craigmcc 01/12/26 13:55:55 Modified: . build.xml src/test/org/apache/struts/action TestActionServlet.java src/test/org/apache/struts/taglib/logic TestEqualTag.java TestNotPresentTag.java TestPresentTag.java Added: src/test/org/apache/struts/config TestApplicationConfig.java struts-config.xml Log: Add a basic unit test for parsing struts-config.xml and creating an ApplicationConfig object. Revision Changes Path 1.57 +60 -0 jakarta-struts/build.xml Index: build.xml =================================================================== RCS file: /home/cvs/jakarta-struts/build.xml,v retrieving revision 1.56 retrieving revision 1.57 diff -u -r1.56 -r1.57 --- build.xml 2001/09/19 03:01:26 1.56 +++ build.xml 2001/12/26 21:55:54 1.57 @@ -39,6 +39,8 @@ jdbc20ext.jar (required). The path to the JAR file for the JDBC 2.0 Optional Package APIs. + junit.jar (optional) JUnit for "test". + servlet.jar (required). The path to the Servlet API classes to compile against (currently, either version 2.2 or 2.3 supported). @@ -120,6 +122,9 @@ <!-- Source directory for core struts library --> <property name="src.share.dir" value="${src.dir}/share"/> + <!-- Source directory for non-Cactus unit tests --> + <property name="src.test.dir" value="${src.dir}/test"/> + <!-- Directory where core struts library configurations files are stored --> <property name="conf.share.dir" value="conf/share"/> @@ -142,6 +147,31 @@ </path> +<!-- ========== Test Execution Defaults =================================== --> + + + <!-- Construct unit test classpath --> + <path id="test.classpath"> + <pathelement location="${build.home}/library/classes"/> + <pathelement location="${build.home}/test/classes"/> + <pathelement location="${cactus.jar}"/> + <pathelement location="${commons-beanutils.jar}"/> + <pathelement location="${commons-collections.jar}"/> + <pathelement location="${commons-digester.jar}"/> + <pathelement location="${servlet.jar}"/> + <pathelement location="${junit.jar}"/> + <pathelement location="${jdbc20ext.jar}"/> + <pathelement location="${servlet.jar}"/> + <pathelement location="${xerces.jar}"/> + </path> + + <!-- Should all tests fail if one does? --> + <property name="test.failonerror" value="true"/> + + <!-- The test runner to execute --> + <property name="test.runner" value="junit.textui.TestRunner"/> + + <!-- ========== Executable Targets ======================================== --> @@ -458,5 +488,35 @@ <ant antfile="build-tests.xml" target="test.tomcat.40"/> </target> + + <!-- ========== Non-Cactus Unit Tests ================================= --> + + <target name="test" depends="test.compile,test.config" + description="Run all non-Cactus based unit tests"> + </target> + + <target name="test.compile"> + <mkdir dir="${build.home}/test/classes"/> + <javac srcdir="${src.test.dir}" + destdir="${build.home}/test/classes" + debug="${compile.debug}" + optimize="${compile.optimize}" + deprecation="${compile.deprecation}"> + <classpath refid="test.classpath"/> + </javac> + <copy todir="${build.home}/test/classes"> + <fileset dir="${src.test.dir}" excludes="**/*.java"/> + </copy> + </target> + + <target name="test.config"> + <echo message="Running Config Package tests ..."/> + <java classname="${test.runner}" fork="yes" + failonerror="${test.failonerror}"> + <arg value="org.apache.struts.config.TestApplicationConfig"/> + <classpath refid="test.classpath"/> + </java> + </target> + </project> 1.2 +1 -1 jakarta-struts/src/test/org/apache/struts/action/TestActionServlet.java Index: TestActionServlet.java =================================================================== RCS file: /home/cvs/jakarta-struts/src/test/org/apache/struts/action/TestActionServlet.java,v retrieving revision 1.1 retrieving revision 1.2 diff -u -r1.1 -r1.2 --- TestActionServlet.java 2001/05/06 12:07:32 1.1 +++ TestActionServlet.java 2001/12/26 21:55:55 1.2 @@ -57,7 +57,7 @@ import javax.servlet.*; import junit.framework.*; -import org.apache.commons.cactus.*; +import org.apache.cactus.*; /** * Suite of unit tests for the 1.1 jakarta-struts/src/test/org/apache/struts/config/TestApplicationConfig.java Index: TestApplicationConfig.java =================================================================== /* * The Apache Software License, Version 1.1 * * Copyright (c) 1999-2002 The Apache Software Foundation. All rights * reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1. Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * * 3. The end-user documentation included with the redistribution, if * any, must include the following acknowlegement: * "This product includes software developed by the * Apache Software Foundation (http://www.apache.org/)." * Alternately, this acknowlegement may appear in the software itself, * if and wherever such third-party acknowlegements normally appear. * * 4. The names "The Jakarta Project", "Struts", and "Apache Software * Foundation" must not be used to endorse or promote products derived * from this software without prior written permission. For written * permission, please contact [EMAIL PROTECTED] * * 5. Products derived from this software may not be called "Apache" * nor may "Apache" appear in their names without prior written * permission of the Apache Group. * * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE * DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. * ==================================================================== * * This software consists of voluntary contributions made by many * individuals on behalf of the Apache Software Foundation. For more * information on the Apache Software Foundation, please see * <http://www.apache.org/>. * */ package org.apache.struts.config; import java.io.InputStream; import java.net.URL; import junit.framework.Test; import junit.framework.TestCase; import junit.framework.TestSuite; import org.apache.commons.digester.Digester; import org.apache.struts.action.Action; /** * Unit tests for the <code>org.apache.struts.config</code> package. * * @author Craig R. McClanahan * @version $Revision: 1.1 $ $Date: 2001/12/26 21:55:55 $ */ public class TestApplicationConfig extends TestCase { // ----------------------------------------------------- Instance Variables /** * The ApplicationConfig we are testing. */ protected ApplicationConfig config = null; // ----------------------------------------------------------- Constructors /** * Construct a new instance of this test case. * * @param name Name of the test case */ public TestApplicationConfig(String name) { super(name); } // --------------------------------------------------------- Public Methods /** * Set up instance variables required by this test case. */ public void setUp() { config = new ApplicationConfig("", null); } /** * Return the tests included in this test suite. */ public static Test suite() { return (new TestSuite(TestApplicationConfig.class)); } /** * Tear down instance variables required by this test case. */ public void tearDown() { config = null; } // ------------------------------------------------ Individual Test Methods /** * Test parsing of a struts-config.xml file. */ public void testParse() { // Prepare a Digester for parsing a struts-config.xml file Digester digester = new Digester(); digester.push(config); digester.setDebug(0); digester.setNamespaceAware(true); digester.setValidating(true); digester.addRuleSet(new ConfigRuleSet()); digester.register ("-//Apache Software Foundation//DTD Struts Configuration 1.1//EN", this.getClass().getResource ("/org/apache/struts/resources/struts-config_1_1.dtd").toString()); // Parse the test struts-config.xml file try { InputStream input = this.getClass().getResourceAsStream ("/org/apache/struts/config/struts-config.xml"); assertNotNull("Got an input stream for struts-config.xml", input); digester.parse(input); input.close(); } catch (Throwable t) { t.printStackTrace(System.out); fail("Parsing threw exception: " + t); } // Perform assertion tests on the parsed information DataSourceConfig dsc = config.findDataSourceConfig(Action.DATA_SOURCE_KEY); assertNotNull("Found our data source configuration", dsc); assertEquals("Data source description", "Example Data Source Configuration", dsc.getDescription()); FormBeanConfig fbcs[] = config.findFormBeanConfigs(); assertNotNull("Found our form bean configurations", fbcs); assertEquals("Found three form bean configurations", 3, fbcs.length); ForwardConfig fcs[] = config.findForwardConfigs(); assertNotNull("Found our forward configurations", fcs); assertEquals("Found three forward configurations", 3, fcs.length); ActionConfig logon = config.findActionConfig("/logon"); assertNotNull("Found logon action configuration", logon); assertEquals("Found correct logon configuration", "logonForm", logon.getName()); } } 1.1 jakarta-struts/src/test/org/apache/struts/config/struts-config.xml Index: struts-config.xml =================================================================== <?xml version="1.0" encoding="ISO-8859-1" ?> <!DOCTYPE struts-config PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 1.1//EN" "http://jakarta.apache.org/struts/dtds/struts-config_1_1.dtd"> <!-- This is the Struts configuration file for the example application, using the proposed new syntax. NOTE: You would only flesh out the details in the "form-bean" declarations if you had a generator tool that used them to create the corresponding Java classes for you. Otherwise, you would need only the "form-bean" element itself, with the corresponding "name" and "type" attributes. --> <struts-config> <!-- ========== Data Source Configuration =============================== --> <data-sources> <data-source> <set-property property="autoCommit" value="false"/> <set-property property="description" value="Example Data Source Configuration"/> <set-property property="driverClass" value="org.postgresql.Driver"/> <set-property property="maxCount" value="4"/> <set-property property="minCount" value="2"/> <set-property property="password" value="mypassword"/> <set-property property="url" value="jdbc:postgresql://localhost/mydatabase"/> <set-property property="user" value="myusername"/> </data-source> </data-sources> <!-- ========== Form Bean Definitions =================================== --> <form-beans> <!-- Logon form bean --> <form-bean name="logonForm" type="org.apache.struts.webapp.example.LogonForm"/> <!-- Registration form bean --> <form-bean name="registrationForm" type="org.apache.struts.webapp.example.RegistrationForm"/> <!-- Subscription form bean --> <form-bean name="subscriptionForm" type="org.apache.struts.webapp.example.SubscriptionForm"/> </form-beans> <!-- ========== Global Forward Definitions ============================== --> <global-forwards> <forward name="logoff" path="/logoff.do"/> <forward name="logon" path="/logon.jsp"/> <forward name="success" path="/mainMenu.jsp"/> </global-forwards> <!-- ========== Action Mapping Definitions ============================== --> <action-mappings> <!-- Edit user registration --> <action path="/editRegistration" type="org.apache.struts.webapp.example.EditRegistrationAction" attribute="registrationForm" scope="request" validate="false"> <forward name="success" path="/registration.jsp"/> </action> <!-- Edit mail subscription --> <action path="/editSubscription" type="org.apache.struts.webapp.example.EditSubscriptionAction" attribute="subscriptionForm" scope="request" validate="false"> <forward name="failure" path="/mainMenu.jsp"/> <forward name="success" path="/subscription.jsp"/> </action> <!-- Process a user logoff --> <action path="/logoff" type="org.apache.struts.webapp.example.LogoffAction"> <forward name="success" path="/index.jsp"/> </action> <!-- Process a user logon --> <action path="/logon" type="org.apache.struts.webapp.example.LogonAction" name="logonForm" scope="request" input="/logon.jsp"> </action> <!-- Save user registration --> <action path="/saveRegistration" type="org.apache.struts.webapp.example.SaveRegistrationAction" name="registrationForm" scope="request" input="/registration.jsp"/> <!-- Save mail subscription --> <action path="/saveSubscription" type="org.apache.struts.webapp.example.SaveSubscriptionAction" name="subscriptionForm" scope="request" input="/subscription.jsp"> <forward name="success" path="/editRegistration.do?action=Edit"/> </action> <!-- Display the "walking tour" documentation --> <action path="/tour" forward="/tour.htm"> </action> <!-- The standard administrative actions available with Struts --> <!-- These would be either omitted or protected by security --> <!-- in a real application deployment --> <action path="/admin/addFormBean" type="org.apache.struts.actions.AddFormBeanAction"/> <action path="/admin/addForward" type="org.apache.struts.actions.AddForwardAction"/> <action path="/admin/addMapping" type="org.apache.struts.actions.AddMappingAction"/> <action path="/admin/reload" type="org.apache.struts.actions.ReloadAction"/> <action path="/admin/removeFormBean" type="org.apache.struts.actions.RemoveFormBeanAction"/> <action path="/admin/removeForward" type="org.apache.struts.actions.RemoveForwardAction"/> <action path="/admin/removeMapping" type="org.apache.struts.actions.RemoveMappingAction"/> </action-mappings> </struts-config> 1.2 +1 -1 jakarta-struts/src/test/org/apache/struts/taglib/logic/TestEqualTag.java Index: TestEqualTag.java =================================================================== RCS file: /home/cvs/jakarta-struts/src/test/org/apache/struts/taglib/logic/TestEqualTag.java,v retrieving revision 1.1 retrieving revision 1.2 diff -u -r1.1 -r1.2 --- TestEqualTag.java 2001/07/11 02:20:50 1.1 +++ TestEqualTag.java 2001/12/26 21:55:55 1.2 @@ -57,7 +57,7 @@ import javax.servlet.*; import junit.framework.*; -import org.apache.commons.cactus.*; +import org.apache.cactus.*; /** * Suite of unit tests for the 1.3 +1 -1 jakarta-struts/src/test/org/apache/struts/taglib/logic/TestNotPresentTag.java Index: TestNotPresentTag.java =================================================================== RCS file: /home/cvs/jakarta-struts/src/test/org/apache/struts/taglib/logic/TestNotPresentTag.java,v retrieving revision 1.2 retrieving revision 1.3 diff -u -r1.2 -r1.3 --- TestNotPresentTag.java 2001/07/11 03:33:57 1.2 +++ TestNotPresentTag.java 2001/12/26 21:55:55 1.3 @@ -60,7 +60,7 @@ import junit.framework.*; -import org.apache.commons.cactus.*; +import org.apache.cactus.*; /** * Suite of unit tests for the 1.3 +1 -1 jakarta-struts/src/test/org/apache/struts/taglib/logic/TestPresentTag.java Index: TestPresentTag.java =================================================================== RCS file: /home/cvs/jakarta-struts/src/test/org/apache/struts/taglib/logic/TestPresentTag.java,v retrieving revision 1.2 retrieving revision 1.3 diff -u -r1.2 -r1.3 --- TestPresentTag.java 2001/07/11 03:29:52 1.2 +++ TestPresentTag.java 2001/12/26 21:55:55 1.3 @@ -60,7 +60,7 @@ import junit.framework.*; -import org.apache.commons.cactus.*; +import org.apache.cactus.*; /** * Suite of unit tests for the
-- To unsubscribe, e-mail: <mailto:[EMAIL PROTECTED]> For additional commands, e-mail: <mailto:[EMAIL PROTECTED]>