@@ -31,6 +31,7 @@ buildscript {
31
31
32
32
plugins {
33
33
id ' java-library'
34
+ id ' jvm-test-suite'
34
35
id ' com.github.johnrengelman.shadow' version ' 8.1.1' apply false
35
36
id ' com.github.ben-manes.versions' version ' 0.51.0'
36
37
}
@@ -56,7 +57,9 @@ def toolchainLauncher = javaToolchains.launcherFor {
56
57
def checkstyleVersion = ' 9.3'
57
58
def hamcrestVersion = ' 2.2'
58
59
def mockitoVersion = ' 4.11.0'
59
- def junitVersion = ' 5.10.2'
60
+ def junitVersion = ' 5.10.3'
61
+ def jqwikVersion = ' 1.9.0'
62
+ def jsonVersion = ' 20240303'
60
63
def jmhVersion = ' 1.37'
61
64
def agronaVersion = ' 1.21.2'
62
65
def agronaVersionRange = ' [1.21.2,2.0[' // allow any release >= 1.21.2 and < 2.0.0
@@ -172,6 +175,7 @@ jar.enabled = false
172
175
173
176
subprojects {
174
177
apply plugin : ' java-library'
178
+ apply plugin : ' jvm-test-suite'
175
179
apply plugin : ' checkstyle'
176
180
177
181
group = sbeGroup
@@ -224,22 +228,34 @@ subprojects {
224
228
}
225
229
}
226
230
227
- test {
228
- useJUnitPlatform()
231
+ testing {
232
+ suites {
233
+ test {
234
+ useJUnitJupiter junitVersion
229
235
230
- testLogging {
231
- for (def level : LogLevel . values())
232
- {
233
- def testLogging = get(level)
234
- testLogging. exceptionFormat = ' full'
235
- testLogging. events = [" FAILED" , " STANDARD_OUT" , " STANDARD_ERROR" ]
236
- }
237
- }
236
+ targets {
237
+ all {
238
+ testTask. configure {
239
+ useJUnitPlatform()
238
240
239
- javaLauncher. set(toolchainLauncher)
241
+ testLogging {
242
+ for (def level : LogLevel . values())
243
+ {
244
+ def testLogging = get(level)
245
+ testLogging. exceptionFormat = ' full'
246
+ testLogging. events = [" FAILED" , " STANDARD_OUT" , " STANDARD_ERROR" ]
247
+ }
248
+ }
249
+
250
+ javaLauncher. set(toolchainLauncher)
240
251
241
- systemProperty ' sbe.enable.ir.precedence.checks' , ' true'
242
- systemProperty ' sbe.enable.test.precedence.checks' , ' true'
252
+ systemProperty ' sbe.enable.ir.precedence.checks' , ' true'
253
+ systemProperty ' sbe.enable.test.precedence.checks' , ' true'
254
+ }
255
+ }
256
+ }
257
+ }
258
+ }
243
259
}
244
260
}
245
261
@@ -256,11 +272,6 @@ project(':sbe-tool') {
256
272
prefer(agronaVersion)
257
273
}
258
274
}
259
- testImplementation files(' build/classes/java/generated' )
260
- testImplementation " org.hamcrest:hamcrest:${ hamcrestVersion} "
261
- testImplementation " org.mockito:mockito-core:${ mockitoVersion} "
262
- testImplementation " org.junit.jupiter:junit-jupiter-params:${ junitVersion} "
263
- testRuntimeOnly " org.junit.jupiter:junit-jupiter-engine:${ junitVersion} "
264
275
}
265
276
266
277
def generatedDir = ' build/generated-src'
@@ -277,11 +288,55 @@ project(':sbe-tool') {
277
288
278
289
compileGeneratedJava {
279
290
dependsOn ' generateTestCodecs'
291
+ dependsOn ' generateTestDtos'
280
292
classpath + = sourceSets. main. runtimeClasspath
281
293
}
282
294
283
295
compileTestJava. dependsOn compileGeneratedJava
284
296
297
+ testing {
298
+ suites {
299
+ test {
300
+ dependencies {
301
+ implementation files(' build/classes/java/generated' )
302
+ implementation " org.hamcrest:hamcrest:${ hamcrestVersion} "
303
+ implementation " org.mockito:mockito-core:${ mockitoVersion} "
304
+ implementation " org.junit.jupiter:junit-jupiter-params:${ junitVersion} "
305
+ }
306
+ }
307
+
308
+ propertyTest(JvmTestSuite ) {
309
+ // We should be able to use _only_ the JQwik engine, but this issue is outstanding:
310
+ // https://github.com/gradle/gradle/issues/21299
311
+ useJUnitJupiter junitVersion
312
+
313
+ dependencies {
314
+ implementation project()
315
+ implementation(" net.jqwik:jqwik:${ jqwikVersion} " ) {
316
+ // Exclude JUnit 5 dependencies that are already provided due to useJUnitJupiter
317
+ exclude group : ' org.junit.platform' , module : ' junit-platform-commons'
318
+ exclude group : ' org.junit.platform' , module : ' junit-platform-engine'
319
+ }
320
+ implementation " org.json:json:${ jsonVersion} "
321
+ }
322
+
323
+
324
+ targets {
325
+ all {
326
+ testTask. configure {
327
+ minHeapSize = ' 2g'
328
+ maxHeapSize = ' 2g'
329
+
330
+ javaLauncher. set(toolchainLauncher)
331
+
332
+ systemProperty ' sbe.dll' , " ${ rootProject.projectDir} /csharp/sbe-dll/bin/Release/netstandard2.0/SBE.dll"
333
+ }
334
+ }
335
+ }
336
+ }
337
+ }
338
+ }
339
+
285
340
tasks. register(' generateTestCodecs' , JavaExec ) {
286
341
dependsOn ' compileJava'
287
342
mainClass. set(' uk.co.real_logic.sbe.SbeTool' )
@@ -298,6 +353,21 @@ project(':sbe-tool') {
298
353
' src/test/resources/field-order-check-schema.xml' ]
299
354
}
300
355
356
+ tasks. register(' generateTestDtos' , JavaExec ) {
357
+ dependsOn ' compileJava'
358
+ mainClass. set(' uk.co.real_logic.sbe.SbeTool' )
359
+ classpath = sourceSets. main. runtimeClasspath
360
+ systemProperties(
361
+ ' sbe.output.dir' : generatedDir,
362
+ ' sbe.target.language' : ' java' ,
363
+ ' sbe.validation.stop.on.error' : ' true' ,
364
+ ' sbe.validation.xsd' : validationXsdPath,
365
+ ' sbe.generate.precedence.checks' : ' true' ,
366
+ ' sbe.java.precedence.checks.property.name' : ' sbe.enable.test.precedence.checks' ,
367
+ ' sbe.java.generate.dtos' : ' true' )
368
+ args = [' src/test/resources/example-extension-schema.xml' ]
369
+ }
370
+
301
371
jar {
302
372
manifest. attributes(
303
373
' Specification-Title' : ' Simple Binary Encoding' ,
@@ -755,7 +825,7 @@ tasks.register('generateCSharpCodecsWithXIncludes', JavaExec) {
755
825
' sbe-samples/src/main/resources/example-extension-schema.xml' ]
756
826
}
757
827
758
- tasks. register(' generateCSharpCodecsTests ' , JavaExec ) {
828
+ tasks. register(' generateCSharpTestCodecs ' , JavaExec ) {
759
829
mainClass. set(' uk.co.real_logic.sbe.SbeTool' )
760
830
classpath = project(' :sbe-tool' ). sourceSets. main. runtimeClasspath
761
831
systemProperties(
@@ -774,9 +844,21 @@ tasks.register('generateCSharpCodecsTests', JavaExec) {
774
844
' sbe-benchmarks/src/main/resources/fix-message-samples.xml' ]
775
845
}
776
846
847
+ tasks. register(' generateCSharpTestDtos' , JavaExec ) {
848
+ mainClass. set(' uk.co.real_logic.sbe.SbeTool' )
849
+ classpath = project(' :sbe-tool' ). sourceSets. main. runtimeClasspath
850
+ systemProperties(
851
+ ' sbe.output.dir' : ' csharp/sbe-generated' ,
852
+ ' sbe.target.language' : ' uk.co.real_logic.sbe.generation.csharp.CSharpDtos' ,
853
+ ' sbe.xinclude.aware' : ' true' ,
854
+ ' sbe.validation.xsd' : validationXsdPath)
855
+ args = [' sbe-samples/src/main/resources/example-extension-schema.xml' ]
856
+ }
857
+
777
858
tasks. register(' generateCSharpCodecs' ) {
778
859
description = ' Generate csharp codecs'
779
- dependsOn ' generateCSharpCodecsTests' ,
860
+ dependsOn ' generateCSharpTestCodecs' ,
861
+ ' generateCSharpTestDtos' ,
780
862
' generateCSharpCodecsWithXIncludes'
781
863
}
782
864
0 commit comments