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 > > >