This is an automated email from the ASF dual-hosted git repository. pgil pushed a commit to branch trunk in repository https://gitbox.apache.org/repos/asf/ofbiz-framework.git
The following commit(s) were added to refs/heads/trunk by this push: new f790b7a Implemented: Reintroduce groovy-test-suite test case (OFBIZ-12320) f790b7a is described below commit f790b7a6ef97bfe04674ae0eab10840275a1c70e Author: Gil Portenseigne <p...@apache.org> AuthorDate: Wed Sep 15 14:47:23 2021 +0200 Implemented: Reintroduce groovy-test-suite test case (OFBIZ-12320) This test case engine allow writing test in groovy script that do not need compilation. --- .../base/groovyScripts/test/SimpleTests.groovy | 41 ++++++++++++++++ framework/base/testdef/basetests.xml | 2 +- framework/testtools/dtd/test-suite.xsd | 22 +++++++++ .../ofbiz/testtools/GroovyScriptTestCase.java | 54 ++++++++++++++++++++++ .../org/apache/ofbiz/testtools/ModelTestSuite.java | 18 ++++++++ 5 files changed, 136 insertions(+), 1 deletion(-) diff --git a/framework/base/groovyScripts/test/SimpleTests.groovy b/framework/base/groovyScripts/test/SimpleTests.groovy new file mode 100644 index 0000000..16800c1 --- /dev/null +++ b/framework/base/groovyScripts/test/SimpleTests.groovy @@ -0,0 +1,41 @@ +/******************************************************************************* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + *******************************************************************************/ +import org.apache.ofbiz.testtools.GroovyScriptTestCase + +class BaseTest extends GroovyScriptTestCase { + void testTrue() { + assert 1, 1 + } + + void testFalse() { + assertNotSame 1, 0 + } + + void testDelegator() { + assert delegator + } + + void testDispatcher() { + assert dispatcher + } + + void testSecurity() { + assert security + } +} diff --git a/framework/base/testdef/basetests.xml b/framework/base/testdef/basetests.xml index 718b0d4..4736c63 100644 --- a/framework/base/testdef/basetests.xml +++ b/framework/base/testdef/basetests.xml @@ -25,6 +25,6 @@ <junit-test-suite class-name="org.apache.ofbiz.base.util.test.UtilObjectTests"/> <junit-test-suite class-name="org.apache.ofbiz.base.util.string.test.FlexibleStringExpanderTests"/> <junit-test-suite class-name="org.apache.ofbiz.base.util.collections.test.FlexibleMapAccessorTests"/> - <junit-test-suite class-name="org.apache.ofbiz.base.SimpleTests"/> + <groovy-test-suite name="simple" location="component://base/groovyScripts/test/SimpleTests.groovy"/> </test-group> </test-suite> diff --git a/framework/testtools/dtd/test-suite.xsd b/framework/testtools/dtd/test-suite.xsd index 04ffbf1..e9ee0e2 100644 --- a/framework/testtools/dtd/test-suite.xsd +++ b/framework/testtools/dtd/test-suite.xsd @@ -84,6 +84,28 @@ under the License. </xs:attribute> </xs:attributeGroup> + <xs:element name="groovy-test-suite" substitutionGroup="TestCaseTypes"> + <xs:annotation> + <xs:documentation> + Used for JUnit test suites written as a Groovy class. See http://groovy-lang.org/testing.html + </xs:documentation> + </xs:annotation> + <xs:complexType> + <xs:attributeGroup ref="attlist.groovy-test-suite"/> + </xs:complexType> + </xs:element> + <xs:attributeGroup name="attlist.groovy-test-suite"> + <xs:attribute type="xs:string" name="name"/> + <xs:attribute type="xs:string" name="location" use="required"> + <xs:annotation> + <xs:documentation> + Give the location where is groovy file that contaions the test suite. + You can use a flexible url location like component://mycomponent/groovyScripts/test/MySuiteTest.groovy + </xs:documentation> + </xs:annotation> + </xs:attribute> + </xs:attributeGroup> + <xs:element name="service-test" substitutionGroup="TestCaseTypes"> <xs:complexType> <xs:attributeGroup ref="attlist.service-test"/> diff --git a/framework/testtools/src/main/java/org/apache/ofbiz/testtools/GroovyScriptTestCase.java b/framework/testtools/src/main/java/org/apache/ofbiz/testtools/GroovyScriptTestCase.java new file mode 100644 index 0000000..5b8b689 --- /dev/null +++ b/framework/testtools/src/main/java/org/apache/ofbiz/testtools/GroovyScriptTestCase.java @@ -0,0 +1,54 @@ +/******************************************************************************* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + *******************************************************************************/ +package org.apache.ofbiz.testtools; + +import groovy.util.GroovyTestCase; +import org.apache.ofbiz.entity.Delegator; +import org.apache.ofbiz.security.Security; +import org.apache.ofbiz.service.LocalDispatcher; + +/** + * This test case engine allow writing test in groovy script that do not need compilation. + */ +public class GroovyScriptTestCase extends GroovyTestCase { + + private Delegator delegator; + private LocalDispatcher dispatcher; + private Security security; + + public final void setDelegator(Delegator delegator) { + this.delegator = delegator; + } + public final Delegator getDelegator() { + return delegator; + } + + public final LocalDispatcher getDispatcher() { + return dispatcher; + } + public final void setDispatcher(LocalDispatcher dispatcher) { + this.dispatcher = dispatcher; + } + public final void setSecurity(Security security) { + this.security = security; + } + public final Security getSecurity() { + return security; + } +} diff --git a/framework/testtools/src/main/java/org/apache/ofbiz/testtools/ModelTestSuite.java b/framework/testtools/src/main/java/org/apache/ofbiz/testtools/ModelTestSuite.java index 9477322..f5639a5 100644 --- a/framework/testtools/src/main/java/org/apache/ofbiz/testtools/ModelTestSuite.java +++ b/framework/testtools/src/main/java/org/apache/ofbiz/testtools/ModelTestSuite.java @@ -25,6 +25,8 @@ import java.util.List; import org.apache.commons.lang.RandomStringUtils; import org.apache.ofbiz.base.util.Debug; +import org.apache.ofbiz.base.util.GeneralException; +import org.apache.ofbiz.base.util.GroovyUtil; import org.apache.ofbiz.base.util.ObjectType; import org.apache.ofbiz.base.util.UtilGenerics; import org.apache.ofbiz.base.util.UtilMisc; @@ -104,6 +106,14 @@ public class ModelTestSuite { String errMsg = "Unable to load test suite class : " + className; Debug.logError(e, errMsg, MODULE); } + } else if ("groovy-test-suite".equals(nodeName)) { + try { + Class<? extends TestCase> testClass = + UtilGenerics.cast(GroovyUtil.getScriptClassFromLocation(testElement.getAttribute("location"))); + this.testList.add(new TestSuite(testClass, testElement.getAttribute("name"))); + } catch (GeneralException e) { + Debug.logError(e, MODULE); + } } else if ("service-test".equals(nodeName)) { this.testList.add(new ServiceTest(caseName, testElement)); } else if ("simple-method-test".equals(nodeName)) { @@ -193,6 +203,14 @@ public class ModelTestSuite { if (test instanceof OFBizTestCase) { ((OFBizTestCase) test).setDispatcher(dispatcher); } + } else if (test instanceof GroovyScriptTestCase) { + prepareGroovyScriptTestCase((GroovyScriptTestCase) test); } } + + private void prepareGroovyScriptTestCase(GroovyScriptTestCase test) { + test.setDelegator(delegator); + test.setDispatcher(dispatcher); + test.setSecurity(dispatcher.getSecurity()); + } }