We would definitely appreciate a write-up on how to integrate DFDL
testing in a maven project. I think this would make sense to go on our
website. We probably need a "How to Test with Daffodil" page or
something that can talk about various ways to test like with CLI, the
Standard Project Layout and sbt, or via Maven. If you could write up a
Maven description (either as an email or a PR request to our website [1]
using markdown syntax), we'd be happy to put it in the right spot.

- Steve

[1] https://github.com/stevedlawrence/incubator-daffodil-site

On 1/21/19 9:54 AM, Christofer Dutz wrote:
> Ok ... so now the last mystery is solved:
> 
> I am using self-activating profiles in maven which pull in all the "Java" 
> configuration as soon as it finds a "src/main/java" directory (And all the 
> C++ stuff as soon as it finds a "src/main/cpp" directory ...)
> Unfortunately my protocol module only had a "src/main/dfdl" directory so the 
> Maven defaults were used and they don't support Junit5 ...
> As soon as I provided an empty src/main/java directory auto-magically my 
> testsuite is now executed. If I intentionally mess things up, the build 
> fails, if I fix them again the build succeeds.
> 
> Perhaps it would be worth summing up what I did for the DFDL wiki, allowing 
> people like me to utilize the Daffodil TDML support in Maven with Java ... 
> what do you think?
> 
> Chris
> 
> 
> Am 21.01.19, 15:32 schrieb "Christofer Dutz" <[email protected]>:
> 
>     Hi all,
>     
>     ok ... so I just pushed a version that seems to be working ... now I get 
> exactly what I'm expecting (
>     
>     All except that Surefire seems to be detecting the test, however it seems 
> to be skipping its execution. 
>     
>     [INFO] -------------------------------------------------------
>     [INFO]  T E S T S
>     [INFO] -------------------------------------------------------
>     [INFO] Running org.apache.plc4x.protocols.TpktProtocolTest
>     [INFO] Tests run: 0, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 
> 0.003 s - in org.apache.plc4x.protocols.TpktProtocolTest
>     [INFO] 
>     [INFO] Results:
>     [INFO] 
>     [INFO] Tests run: 0, Failures: 0, Errors: 0, Skipped: 0
>     
>     Will dig deeper ... just wanted to stop you from wasting time in 
> investigating my previous issues __
>     
>     Chris
>     
>     
>     
>     Am 21.01.19, 14:19 schrieb "Christofer Dutz" <[email protected]>:
>     
>         Hi all,
>         
>         well I think I managed to setup the basic testing using Daffodil and 
> Junit5 with Maven … strangely the test is failing Surefire however still is 
> reporting the test to be successful.
>         However if I run it in IntelliJ I get failures.
>         
>         Here’s the module with the code (3 Protocols in src/main/dfdl, one 
> test in src/test/java and one testcase-xml in src/test/resources)
>         https://github.com/apache/incubator-plc4x/tree/develop/protocols
>         
>         The output I can see in IntelliJ is the following:
>         
>         Creating DFDL Test Suite for 
> file:/Users/christofer.dutz/Projects/Apache/PLC4X/protocols/target/test-classes/org/apache/plc4x/protocols/cotp-protocol.tdml
>         
>         org.apache.daffodil.tdml.TDMLException: Schema Definition Error: No 
> root element found for root in any available namespace
>         Schema context: SchemaSet Location in 
> file:/Users/christofer.dutz/Projects/Apache/PLC4X/protocols/target/classes/org/apache/plc4x/protocols/tpkt-protocol.dfdl.xsd
>         
>                         at 
> org.apache.daffodil.tdml.ParserTestCase.$anonfun$runProcessor$3(TDMLRunner.scala:716)
>                         at 
> scala.util.Either$LeftProjection.foreach(Either.scala:508)
>                         at 
> org.apache.daffodil.tdml.ParserTestCase.runProcessor(TDMLRunner.scala:716)
>                         at 
> org.apache.daffodil.tdml.TestCase.run(TDMLRunner.scala:665)
>                         at 
> org.apache.daffodil.tdml.DFDLTestSuite.runOneTestWithDataVolumes(TDMLRunner.scala:378)
>                         at 
> org.apache.daffodil.tdml.DFDLTestSuite.runOneTest(TDMLRunner.scala:366)
>                         at 
> org.apache.plc4x.protocols.CotpProtocolTest.simpleS7Message(CotpProtocolTest.java:35)
>                         at 
> sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
>                         at 
> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
>                         at 
> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
>                         at java.lang.reflect.Method.invoke(Method.java:498)
>                         at 
> org.junit.platform.commons.util.ReflectionUtils.invokeMethod(ReflectionUtils.java:513)
>                         at 
> org.junit.jupiter.engine.execution.ExecutableInvoker.invoke(ExecutableInvoker.java:115)
>                         at 
> org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.lambda$invokeTestMethod$6(TestMethodTestDescriptor.java:170)
>                         at 
> org.junit.jupiter.engine.execution.ThrowableCollector.execute(ThrowableCollector.java:40)
>                         at 
> org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.invokeTestMethod(TestMethodTestDescriptor.java:166)
>                         at 
> org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.execute(TestMethodTestDescriptor.java:113)
>                         at 
> org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.execute(TestMethodTestDescriptor.java:58)
>                         at 
> org.junit.platform.engine.support.hierarchical.HierarchicalTestExecutor$NodeExecutor.lambda$executeRecursively$3(HierarchicalTestExecutor.java:113)
>                         at 
> org.junit.platform.engine.support.hierarchical.SingleTestExecutor.executeSafely(SingleTestExecutor.java:66)
>                         at 
> org.junit.platform.engine.support.hierarchical.HierarchicalTestExecutor$NodeExecutor.executeRecursively(HierarchicalTestExecutor.java:108)
>                         at 
> org.junit.platform.engine.support.hierarchical.HierarchicalTestExecutor$NodeExecutor.execute(HierarchicalTestExecutor.java:79)
>                         at 
> org.junit.platform.engine.support.hierarchical.HierarchicalTestExecutor$NodeExecutor.lambda$executeRecursively$2(HierarchicalTestExecutor.java:121)
>                         at 
> java.util.stream.ForEachOps$ForEachOp$OfRef.accept(ForEachOps.java:184)
>                         at 
> java.util.stream.ReferencePipeline$2$1.accept(ReferencePipeline.java:175)
>                         at 
> java.util.Iterator.forEachRemaining(Iterator.java:116)
>                         at 
> java.util.Spliterators$IteratorSpliterator.forEachRemaining(Spliterators.java:1801)
>                         at 
> java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:481)
>                         at 
> java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:471)
>                         at 
> java.util.stream.ForEachOps$ForEachOp.evaluateSequential(ForEachOps.java:151)
>                         at 
> java.util.stream.ForEachOps$ForEachOp$OfRef.evaluateSequential(ForEachOps.java:174)
>                         at 
> java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234)
>                         at 
> java.util.stream.ReferencePipeline.forEach(ReferencePipeline.java:418)
>                         at 
> org.junit.platform.engine.support.hierarchical.HierarchicalTestExecutor$NodeExecutor.lambda$executeRecursively$3(HierarchicalTestExecutor.java:121)
>                         at 
> org.junit.platform.engine.support.hierarchical.SingleTestExecutor.executeSafely(SingleTestExecutor.java:66)
>                         at 
> org.junit.platform.engine.support.hierarchical.HierarchicalTestExecutor$NodeExecutor.executeRecursively(HierarchicalTestExecutor.java:108)
>                         at 
> org.junit.platform.engine.support.hierarchical.HierarchicalTestExecutor$NodeExecutor.execute(HierarchicalTestExecutor.java:79)
>                         at 
> org.junit.platform.engine.support.hierarchical.HierarchicalTestExecutor$NodeExecutor.lambda$executeRecursively$2(HierarchicalTestExecutor.java:121)
>                         at 
> java.util.stream.ForEachOps$ForEachOp$OfRef.accept(ForEachOps.java:184)
>                         at 
> java.util.stream.ReferencePipeline$2$1.accept(ReferencePipeline.java:175)
>                         at 
> java.util.Iterator.forEachRemaining(Iterator.java:116)
>                         at 
> java.util.Spliterators$IteratorSpliterator.forEachRemaining(Spliterators.java:1801)
>                         at 
> java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:481)
>                         at 
> java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:471)
>                         at 
> java.util.stream.ForEachOps$ForEachOp.evaluateSequential(ForEachOps.java:151)
>                         at 
> java.util.stream.ForEachOps$ForEachOp$OfRef.evaluateSequential(ForEachOps.java:174)
>                         at 
> java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234)
>                         at 
> java.util.stream.ReferencePipeline.forEach(ReferencePipeline.java:418)
>                         at 
> org.junit.platform.engine.support.hierarchical.HierarchicalTestExecutor$NodeExecutor.lambda$executeRecursively$3(HierarchicalTestExecutor.java:121)
>                         at 
> org.junit.platform.engine.support.hierarchical.SingleTestExecutor.executeSafely(SingleTestExecutor.java:66)
>                         at 
> org.junit.platform.engine.support.hierarchical.HierarchicalTestExecutor$NodeExecutor.executeRecursively(HierarchicalTestExecutor.java:108)
>                         at 
> org.junit.platform.engine.support.hierarchical.HierarchicalTestExecutor$NodeExecutor.execute(HierarchicalTestExecutor.java:79)
>                         at 
> org.junit.platform.engine.support.hierarchical.HierarchicalTestExecutor.execute(HierarchicalTestExecutor.java:55)
>                         at 
> org.junit.platform.engine.support.hierarchical.HierarchicalTestEngine.execute(HierarchicalTestEngine.java:43)
>                         at 
> org.junit.platform.launcher.core.DefaultLauncher.execute(DefaultLauncher.java:170)
>                         at 
> org.junit.platform.launcher.core.DefaultLauncher.execute(DefaultLauncher.java:154)
>                         at 
> org.junit.platform.launcher.core.DefaultLauncher.execute(DefaultLauncher.java:90)
>                         at 
> com.intellij.junit5.JUnit5IdeaTestRunner.startRunnerWithArgs(JUnit5IdeaTestRunner.java:74)
>                         at 
> com.intellij.rt.execution.junit.IdeaTestRunner$Repeater.startRunnerWithArgs(IdeaTestRunner.java:47)
>                         at 
> com.intellij.rt.execution.junit.JUnitStarter.prepareStreamsAndStart(JUnitStarter.java:242)
>                         at 
> com.intellij.rt.execution.junit.JUnitStarter.main(JUnitStarter.java:70)
>         Caused by: Schema Definition Error: No root element found for root in 
> any available namespace
>         Schema context: SchemaSet Location in 
> file:/Users/christofer.dutz/Projects/Apache/PLC4X/protocols/target/classes/org/apache/plc4x/protocols/tpkt-protocol.dfdl.xsd
>         
>         
>         What am I doing wrong?
>         
>         Chris
>         
>         
>     
>     
> 

Reply via email to