@@ -31,6 +31,7 @@ buildscript {
3131
3232plugins {
3333 id ' java-library'
34+ id ' jvm-test-suite'
3435 id ' com.github.johnrengelman.shadow' version ' 8.1.1' apply false
3536 id ' com.github.ben-manes.versions' version ' 0.51.0'
3637}
@@ -57,6 +58,8 @@ def checkstyleVersion = '9.3'
5758def hamcrestVersion = ' 2.2'
5859def mockitoVersion = ' 4.11.0'
5960def junitVersion = ' 5.10.2'
61+ def jqwikVersion = ' 1.8.1'
62+ def jsonVersion = ' 20230618'
6063def jmhVersion = ' 1.37'
6164def agronaVersion = ' 1.21.2'
6265def agronaVersionRange = ' [1.21.2,2.0[' // allow any release >= 1.21.2 and < 2.0.0
@@ -164,6 +167,7 @@ jar.enabled = false
164167
165168subprojects {
166169 apply plugin : ' java-library'
170+ apply plugin : ' jvm-test-suite'
167171 apply plugin : ' checkstyle'
168172
169173 group = sbeGroup
@@ -216,22 +220,34 @@ subprojects {
216220 }
217221 }
218222
219- test {
220- useJUnitPlatform()
223+ testing {
224+ suites {
225+ test {
226+ useJUnitJupiter junitVersion
221227
222- testLogging {
223- for (def level : LogLevel . values())
224- {
225- def testLogging = get(level)
226- testLogging. exceptionFormat = ' full'
227- testLogging. events = [" FAILED" , " STANDARD_OUT" , " STANDARD_ERROR" ]
228- }
229- }
228+ targets {
229+ all {
230+ testTask. configure {
231+ useJUnitPlatform()
230232
231- javaLauncher. set(toolchainLauncher)
233+ testLogging {
234+ for (def level : LogLevel . values())
235+ {
236+ def testLogging = get(level)
237+ testLogging. exceptionFormat = ' full'
238+ testLogging. events = [" FAILED" , " STANDARD_OUT" , " STANDARD_ERROR" ]
239+ }
240+ }
241+
242+ javaLauncher. set(toolchainLauncher)
232243
233- systemProperty ' sbe.enable.ir.precedence.checks' , ' true'
234- systemProperty ' sbe.enable.test.precedence.checks' , ' true'
244+ systemProperty ' sbe.enable.ir.precedence.checks' , ' true'
245+ systemProperty ' sbe.enable.test.precedence.checks' , ' true'
246+ }
247+ }
248+ }
249+ }
250+ }
235251 }
236252}
237253
@@ -248,11 +264,6 @@ project(':sbe-tool') {
248264 prefer(agronaVersion)
249265 }
250266 }
251- testImplementation files(' build/classes/java/generated' )
252- testImplementation " org.hamcrest:hamcrest:${ hamcrestVersion} "
253- testImplementation " org.mockito:mockito-core:${ mockitoVersion} "
254- testImplementation " org.junit.jupiter:junit-jupiter-params:${ junitVersion} "
255- testRuntimeOnly " org.junit.jupiter:junit-jupiter-engine:${ junitVersion} "
256267 }
257268
258269 def generatedDir = ' build/generated-src'
@@ -269,11 +280,55 @@ project(':sbe-tool') {
269280
270281 compileGeneratedJava {
271282 dependsOn ' generateTestCodecs'
283+ dependsOn ' generateTestDtos'
272284 classpath + = sourceSets. main. runtimeClasspath
273285 }
274286
275287 compileTestJava. dependsOn compileGeneratedJava
276288
289+ testing {
290+ suites {
291+ test {
292+ dependencies {
293+ implementation files(' build/classes/java/generated' )
294+ implementation " org.hamcrest:hamcrest:${ hamcrestVersion} "
295+ implementation " org.mockito:mockito-core:${ mockitoVersion} "
296+ implementation " org.junit.jupiter:junit-jupiter-params:${ junitVersion} "
297+ }
298+ }
299+
300+ propertyTest(JvmTestSuite ) {
301+ // We should be able to use _only_ the JQwik engine, but this issue is outstanding:
302+ // https://github.com/gradle/gradle/issues/21299
303+ useJUnitJupiter junitVersion
304+
305+ dependencies {
306+ implementation project()
307+ implementation(" net.jqwik:jqwik:${ jqwikVersion} " ) {
308+ // Exclude JUnit 5 dependencies that are already provided due to useJUnitJupiter
309+ exclude group : ' org.junit.platform' , module : ' junit-platform-commons'
310+ exclude group : ' org.junit.platform' , module : ' junit-platform-engine'
311+ }
312+ implementation " org.json:json:${ jsonVersion} "
313+ }
314+
315+
316+ targets {
317+ all {
318+ testTask. configure {
319+ minHeapSize = ' 2g'
320+ maxHeapSize = ' 2g'
321+
322+ javaLauncher. set(toolchainLauncher)
323+
324+ systemProperty ' sbe.dll' , " ${ rootProject.projectDir} /csharp/sbe-dll/bin/Release/netstandard2.0/SBE.dll"
325+ }
326+ }
327+ }
328+ }
329+ }
330+ }
331+
277332 tasks. register(' generateTestCodecs' , JavaExec ) {
278333 dependsOn ' compileJava'
279334 mainClass. set(' uk.co.real_logic.sbe.SbeTool' )
@@ -290,6 +345,21 @@ project(':sbe-tool') {
290345 ' src/test/resources/field-order-check-schema.xml' ]
291346 }
292347
348+ tasks. register(' generateTestDtos' , JavaExec ) {
349+ dependsOn ' compileJava'
350+ mainClass. set(' uk.co.real_logic.sbe.SbeTool' )
351+ classpath = sourceSets. main. runtimeClasspath
352+ systemProperties(
353+ ' sbe.output.dir' : generatedDir,
354+ ' sbe.target.language' : ' java' ,
355+ ' sbe.validation.stop.on.error' : ' true' ,
356+ ' sbe.validation.xsd' : validationXsdPath,
357+ ' sbe.generate.precedence.checks' : ' true' ,
358+ ' sbe.java.precedence.checks.property.name' : ' sbe.enable.test.precedence.checks' ,
359+ ' sbe.java.generate.dtos' : ' true' )
360+ args = [' src/test/resources/example-extension-schema.xml' ]
361+ }
362+
293363 jar {
294364 manifest. attributes(
295365 ' Specification-Title' : ' Simple Binary Encoding' ,
@@ -735,7 +805,7 @@ tasks.register('generateCSharpCodecsWithXIncludes', JavaExec) {
735805 ' sbe-samples/src/main/resources/example-extension-schema.xml' ]
736806}
737807
738- tasks. register(' generateCSharpCodecsTests ' , JavaExec ) {
808+ tasks. register(' generateCSharpTestCodecs ' , JavaExec ) {
739809 mainClass. set(' uk.co.real_logic.sbe.SbeTool' )
740810 classpath = project(' :sbe-tool' ). sourceSets. main. runtimeClasspath
741811 systemProperties(
@@ -754,9 +824,21 @@ tasks.register('generateCSharpCodecsTests', JavaExec) {
754824 ' sbe-benchmarks/src/main/resources/fix-message-samples.xml' ]
755825}
756826
827+ tasks. register(' generateCSharpTestDtos' , JavaExec ) {
828+ mainClass. set(' uk.co.real_logic.sbe.SbeTool' )
829+ classpath = project(' :sbe-tool' ). sourceSets. main. runtimeClasspath
830+ systemProperties(
831+ ' sbe.output.dir' : ' csharp/sbe-generated' ,
832+ ' sbe.target.language' : ' uk.co.real_logic.sbe.generation.csharp.CSharpDtos' ,
833+ ' sbe.xinclude.aware' : ' true' ,
834+ ' sbe.validation.xsd' : validationXsdPath)
835+ args = [' sbe-samples/src/main/resources/example-extension-schema.xml' ]
836+ }
837+
757838tasks. register(' generateCSharpCodecs' ) {
758839 description = ' Generate csharp codecs'
759- dependsOn ' generateCSharpCodecsTests' ,
840+ dependsOn ' generateCSharpTestCodecs' ,
841+ ' generateCSharpTestDtos' ,
760842 ' generateCSharpCodecsWithXIncludes'
761843}
762844
0 commit comments