@@ -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
}
@@ -57,6 +58,8 @@ def checkstyleVersion = '9.3'
57
58
def hamcrestVersion = ' 2.2'
58
59
def mockitoVersion = ' 4.11.0'
59
60
def junitVersion = ' 5.10.2'
61
+ def jqwikVersion = ' 1.8.1'
62
+ def jsonVersion = ' 20230618'
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
@@ -164,6 +167,7 @@ jar.enabled = false
164
167
165
168
subprojects {
166
169
apply plugin : ' java-library'
170
+ apply plugin : ' jvm-test-suite'
167
171
apply plugin : ' checkstyle'
168
172
169
173
group = sbeGroup
@@ -216,22 +220,34 @@ subprojects {
216
220
}
217
221
}
218
222
219
- test {
220
- useJUnitPlatform()
223
+ testing {
224
+ suites {
225
+ test {
226
+ useJUnitJupiter junitVersion
221
227
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()
230
232
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)
232
243
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
+ }
235
251
}
236
252
}
237
253
@@ -248,11 +264,6 @@ project(':sbe-tool') {
248
264
prefer(agronaVersion)
249
265
}
250
266
}
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} "
256
267
}
257
268
258
269
def generatedDir = ' build/generated-src'
@@ -269,11 +280,55 @@ project(':sbe-tool') {
269
280
270
281
compileGeneratedJava {
271
282
dependsOn ' generateTestCodecs'
283
+ dependsOn ' generateTestDtos'
272
284
classpath + = sourceSets. main. runtimeClasspath
273
285
}
274
286
275
287
compileTestJava. dependsOn compileGeneratedJava
276
288
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
+
277
332
tasks. register(' generateTestCodecs' , JavaExec ) {
278
333
dependsOn ' compileJava'
279
334
mainClass. set(' uk.co.real_logic.sbe.SbeTool' )
@@ -290,6 +345,21 @@ project(':sbe-tool') {
290
345
' src/test/resources/field-order-check-schema.xml' ]
291
346
}
292
347
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
+
293
363
jar {
294
364
manifest. attributes(
295
365
' Specification-Title' : ' Simple Binary Encoding' ,
@@ -735,7 +805,7 @@ tasks.register('generateCSharpCodecsWithXIncludes', JavaExec) {
735
805
' sbe-samples/src/main/resources/example-extension-schema.xml' ]
736
806
}
737
807
738
- tasks. register(' generateCSharpCodecsTests ' , JavaExec ) {
808
+ tasks. register(' generateCSharpTestCodecs ' , JavaExec ) {
739
809
mainClass. set(' uk.co.real_logic.sbe.SbeTool' )
740
810
classpath = project(' :sbe-tool' ). sourceSets. main. runtimeClasspath
741
811
systemProperties(
@@ -754,9 +824,21 @@ tasks.register('generateCSharpCodecsTests', JavaExec) {
754
824
' sbe-benchmarks/src/main/resources/fix-message-samples.xml' ]
755
825
}
756
826
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
+
757
838
tasks. register(' generateCSharpCodecs' ) {
758
839
description = ' Generate csharp codecs'
759
- dependsOn ' generateCSharpCodecsTests' ,
840
+ dependsOn ' generateCSharpTestCodecs' ,
841
+ ' generateCSharpTestDtos' ,
760
842
' generateCSharpCodecsWithXIncludes'
761
843
}
762
844
0 commit comments