Nice addition.
Thanks Scott !

--
Ashish

On Thu, Dec 24, 2009 at 6:10 AM,  <lekt...@apache.org> wrote:
> Author: lektran
> Date: Thu Dec 24 00:40:19 2009
> New Revision: 893662
>
> URL: http://svn.apache.org/viewvc?rev=893662&view=rev
> Log:
> Added the ability to include all tests from a given simple method document in 
> a test suite by only specifying the location and not the method name.  All 
> simple methods with a method name beginning with "test" will be included and 
> will be executed in the order present in the document.  Example usage:
>    <test-case case-name="auto-accounting-transaction-tests">
>        <simple-method-test 
> location="component://accounting/script/org/ofbiz/accounting/test/AutoAcctgTransTests.xml"/>
>    </test-case>
> Basically just mimics the behavior of the junit-test-suite tag but for simple 
> method tests
>
> Modified:
>    ofbiz/trunk/framework/minilang/src/org/ofbiz/minilang/SimpleMethod.java
>    ofbiz/trunk/framework/testtools/dtd/test-suite.xsd
>    ofbiz/trunk/framework/testtools/src/org/ofbiz/testtools/ModelTestSuite.java
>    
> ofbiz/trunk/framework/testtools/src/org/ofbiz/testtools/SimpleMethodTest.java
>
> Modified: 
> ofbiz/trunk/framework/minilang/src/org/ofbiz/minilang/SimpleMethod.java
> URL: 
> http://svn.apache.org/viewvc/ofbiz/trunk/framework/minilang/src/org/ofbiz/minilang/SimpleMethod.java?rev=893662&r1=893661&r2=893662&view=diff
> ==============================================================================
> --- ofbiz/trunk/framework/minilang/src/org/ofbiz/minilang/SimpleMethod.java 
> (original)
> +++ ofbiz/trunk/framework/minilang/src/org/ofbiz/minilang/SimpleMethod.java 
> Thu Dec 24 00:40:19 2009
> @@ -197,6 +197,43 @@
>         return simpleMethods;
>     }
>
> +    public static List<SimpleMethod> getSimpleMethodsList(String 
> xmlResource, ClassLoader loader) throws MiniLangException {
> +        List<SimpleMethod> simpleMethods = FastList.newInstance();
> +
> +        // Let the standard Map returning method take care of caching and 
> compilation
> +        Map<String, SimpleMethod> simpleMethodMap = 
> SimpleMethod.getSimpleMethods(xmlResource, loader);
> +
> +        // Load and traverse the document again to get a correctly ordered 
> list of methods
> +        URL xmlURL = null;
> +        try {
> +            xmlURL = FlexibleLocation.resolveLocation(xmlResource, loader);
> +        } catch (MalformedURLException e) {
> +            throw new MiniLangException("Could not find SimpleMethod XML 
> document in resource: " + xmlResource + "; error was: " + e.toString(), e);
> +        }
> +        // read in the file
> +        Document document = null;
> +        try {
> +            document = UtilXml.readXmlDocument(xmlURL, true, true);
> +        } catch (java.io.IOException e) {
> +            throw new MiniLangException("Could not read XML file", e);
> +        } catch (org.xml.sax.SAXException e) {
> +            throw new MiniLangException("Could not parse XML file", e);
> +        } catch (javax.xml.parsers.ParserConfigurationException e) {
> +            throw new MiniLangException("XML parser not setup correctly", e);
> +        }
> +
> +        if (document == null) {
> +            throw new MiniLangException("Could not find SimpleMethod XML 
> document: " + xmlURL.toString());
> +        }
> +
> +        Element rootElement = document.getDocumentElement();
> +        for (Element simpleMethodElement: 
> UtilXml.childElementList(rootElement, "simple-method")) {
> +            
> simpleMethods.add(simpleMethodMap.get(simpleMethodElement.getAttribute("method-name")));
> +        }
> +
> +        return simpleMethods;
> +    }
> +
>     public static Map<String, SimpleMethod> getSimpleMethods(URL xmlURL) 
> throws MiniLangException {
>         Map<String, SimpleMethod> simpleMethods = 
> simpleMethodsURLCache.get(xmlURL);
>
>
> Modified: ofbiz/trunk/framework/testtools/dtd/test-suite.xsd
> URL: 
> http://svn.apache.org/viewvc/ofbiz/trunk/framework/testtools/dtd/test-suite.xsd?rev=893662&r1=893661&r2=893662&view=diff
> ==============================================================================
> --- ofbiz/trunk/framework/testtools/dtd/test-suite.xsd (original)
> +++ ofbiz/trunk/framework/testtools/dtd/test-suite.xsd Thu Dec 24 00:40:19 
> 2009
> @@ -102,7 +102,14 @@
>     </xs:element>
>     <xs:attributeGroup name="attlist.simple-method-test">
>         <xs:attribute type="xs:string" name="location" use="required"/>
> -        <xs:attribute type="xs:string" name="name" use="required"/>
> +        <xs:attribute type="xs:string" name="name">
> +            <xs:annotation>
> +                <xs:documentation>
> +                    The method-name of the simple-method to execute.  If no 
> name is supplied then all simple-methods from
> +                    location with a method-name beginning with "test" will 
> be added as individual tests.
> +                </xs:documentation>
> +            </xs:annotation>
> +        </xs:attribute>
>     </xs:attributeGroup>
>
>     <xs:element name="entity-xml" substitutionGroup="TestCaseTypes">
>
> Modified: 
> ofbiz/trunk/framework/testtools/src/org/ofbiz/testtools/ModelTestSuite.java
> URL: 
> http://svn.apache.org/viewvc/ofbiz/trunk/framework/testtools/src/org/ofbiz/testtools/ModelTestSuite.java?rev=893662&r1=893661&r2=893662&view=diff
> ==============================================================================
> --- 
> ofbiz/trunk/framework/testtools/src/org/ofbiz/testtools/ModelTestSuite.java 
> (original)
> +++ 
> ofbiz/trunk/framework/testtools/src/org/ofbiz/testtools/ModelTestSuite.java 
> Thu Dec 24 00:40:19 2009
> @@ -35,6 +35,8 @@
>  import org.ofbiz.entity.Delegator;
>  import org.ofbiz.entity.DelegatorFactory;
>  import org.ofbiz.entity.testtools.EntityTestCase;
> +import org.ofbiz.minilang.MiniLangException;
> +import org.ofbiz.minilang.SimpleMethod;
>  import org.ofbiz.service.GenericDispatcher;
>  import org.ofbiz.service.LocalDispatcher;
>  import org.ofbiz.service.testtools.OFBizTestCase;
> @@ -113,7 +115,23 @@
>         } else if ("service-test".equals(nodeName)) {
>             this.testList.add(new ServiceTest(caseName, testElement));
>         } else if ("simple-method-test".equals(nodeName)) {
> -            this.testList.add(new SimpleMethodTest(caseName, testElement));
> +            if (UtilValidate.isNotEmpty(testElement.getAttribute("name"))) {
> +                this.testList.add(new SimpleMethodTest(caseName, 
> testElement));
> +            } else {
> +                String methodLocation = testElement.getAttribute("location");
> +                List<SimpleMethod> simpleMethods;
> +                try {
> +                    simpleMethods = 
> SimpleMethod.getSimpleMethodsList(methodLocation, null);
> +                    for (SimpleMethod simpleMethod : simpleMethods) {
> +                        String methodName = simpleMethod.getMethodName();
> +                        if (methodName.startsWith("test")) {
> +                            this.testList.add(new SimpleMethodTest(caseName 
> + "." + methodName, methodLocation, methodName));
> +                        }
> +                    }
> +                } catch (MiniLangException e) {
> +                    Debug.logError(e, module);
> +                }
> +            }
>         } else if ("entity-xml".equals(nodeName)) {
>             this.testList.add(new EntityXmlAssertTest(caseName, testElement));
>         } else if ("entity-xml-assert".equals(nodeName)) {
>
> Modified: 
> ofbiz/trunk/framework/testtools/src/org/ofbiz/testtools/SimpleMethodTest.java
> URL: 
> http://svn.apache.org/viewvc/ofbiz/trunk/framework/testtools/src/org/ofbiz/testtools/SimpleMethodTest.java?rev=893662&r1=893661&r2=893662&view=diff
> ==============================================================================
> --- 
> ofbiz/trunk/framework/testtools/src/org/ofbiz/testtools/SimpleMethodTest.java 
> (original)
> +++ 
> ofbiz/trunk/framework/testtools/src/org/ofbiz/testtools/SimpleMethodTest.java 
> Thu Dec 24 00:40:19 2009
> @@ -45,9 +45,13 @@
>      * @param modelTestSuite
>      */
>     public SimpleMethodTest(String caseName, Element mainElement) {
> +        this(caseName, mainElement.getAttribute("location"), 
> mainElement.getAttribute("name"));
> +    }
> +
> +    public SimpleMethodTest(String caseName, String methodLocation, String 
> methodName) {
>         super(caseName);
> -        this.methodLocation = mainElement.getAttribute("location");
> -        this.methodName = mainElement.getAttribute("name");
> +        this.methodLocation = methodLocation;
> +        this.methodName = methodName;
>     }
>
>     @Override
>
>
>

Reply via email to