import org.argeo.slc.ant.spring.AbstractSpringArg;\r
import org.argeo.slc.ant.structure.SAwareTask;\r
import org.argeo.slc.core.deploy.DeployedSystem;\r
+import org.argeo.slc.core.process.SlcExecution;\r
+import org.argeo.slc.core.process.SlcExecutionAware;\r
import org.argeo.slc.core.structure.StructureAware;\r
+import org.argeo.slc.core.structure.tree.TreeSPath;\r
import org.argeo.slc.core.test.ExecutableTestRun;\r
+import org.argeo.slc.core.test.SimpleTestResult;\r
+import org.argeo.slc.core.test.SimpleTestRun;\r
import org.argeo.slc.core.test.TestData;\r
import org.argeo.slc.core.test.TestDefinition;\r
import org.argeo.slc.core.test.TestResult;\r
import org.argeo.slc.core.test.WritableTestRun;\r
+import org.argeo.slc.spring.SpringUtils;\r
\r
/** Ant task wrapping a test run. */\r
public class SlcTestTask extends SAwareTask {\r
\r
@Override\r
public void executeActions(String mode) throws BuildException {\r
+ // find test run\r
final String testRunBeanT;\r
if (testRunBean != null) {\r
testRunBeanT = testRunBean;\r
testRunBeanT = getProject().getUserProperty(\r
SlcAntConfig.DEFAULT_TEST_RUN_PROPERTY);\r
}\r
- WritableTestRun testRun = (WritableTestRun) getContext().getBean(\r
- testRunBeanT);\r
+ WritableTestRun testRun = null;\r
+\r
+ if (testRunBeanT != null) {\r
+ testRun = (WritableTestRun) getContext().getBean(testRunBeanT);\r
+ if (log.isTraceEnabled())\r
+ log.trace("Load test run bean from bean name " + testRunBeanT);\r
+ }\r
+\r
+ if (testRun == null) {\r
+ testRun = loadSingleFromContext(WritableTestRun.class);\r
+ if (testRun == null) {\r
+ testRun = new SimpleTestRun();\r
+ if (log.isTraceEnabled())\r
+ log.trace("Created simple test run");\r
+ } else {\r
+ if (log.isTraceEnabled())\r
+ log.trace("Load test run from scanning Spring context");\r
+ }\r
+ }\r
\r
// set overridden references\r
if (testDataArg != null) {\r
\r
// notify path to test result\r
TestResult result = testRun.getTestResult();\r
+ if (result == null) {\r
+ result = loadSingleFromContext(TestResult.class);\r
+ if (result == null) {\r
+ result = new SimpleTestResult();\r
+ if (log.isTraceEnabled())\r
+ log.trace("Created simple test result");\r
+ } else {\r
+ if (log.isTraceEnabled())\r
+ log.trace("Load test result from scanning Spring context");\r
+ }\r
+ testRun.setTestResult(result);\r
+ }\r
+\r
+ SlcExecution slcExecution = getSlcExecution();\r
+ if (result != null && slcExecution != null\r
+ && result instanceof SlcExecutionAware) {\r
+ ((SlcExecutionAware) result).notifySlcExecution(slcExecution);\r
+ }\r
+\r
if (result != null && result instanceof StructureAware) {\r
- ((StructureAware) result).notifyCurrentPath(getRegistry(),\r
- getPath());\r
+ ((StructureAware<TreeSPath>) result).notifyCurrentPath(\r
+ getRegistry(), getTreeSPath());\r
}\r
\r
((ExecutableTestRun) testRun).execute();\r
return testResultArg;\r
}\r
\r
+ protected <T> T loadSingleFromContext(Class<T> clss) {\r
+ return SpringUtils.loadSingleFromContext(getContext(), clss);\r
+ }\r
}\r
\r
class TestDefinitionArg extends AbstractSpringArg {\r