Skip to content

Commit d4539a8

Browse files
author
tom.johnson
committed
aeron-io#910 Use a unit test to highlight compilation errors rather than an entry in the build file. Note: this only fails when running with a Java 17 toolchain, not on Java 8 or 11.
1 parent 3779a25 commit d4539a8

File tree

3 files changed

+68
-10
lines changed

3 files changed

+68
-10
lines changed

build.gradle

+1-2
Original file line numberDiff line numberDiff line change
@@ -269,8 +269,7 @@ project(':sbe-tool') {
269269
'sbe.validation.stop.on.error': 'true',
270270
'sbe.validation.xsd': validationXsdPath)
271271
args = ['src/test/resources/json-printer-test-schema.xml',
272-
'src/test/resources/composite-elements-schema.xml',
273-
'src/test/resources/issue910.xml']
272+
'src/test/resources/composite-elements-schema.xml']
274273
}
275274

276275
jar {
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,59 @@
1+
package uk.co.real_logic.sbe.generation.java;
2+
3+
import java.util.Map;
4+
5+
import org.agrona.DirectBuffer;
6+
import org.agrona.MutableDirectBuffer;
7+
import org.agrona.generation.CompilerUtil;
8+
import org.agrona.generation.StringWriterOutputManager;
9+
import org.junit.jupiter.api.Test;
10+
import org.junit.jupiter.params.ParameterizedTest;
11+
import org.junit.jupiter.params.provider.ValueSource;
12+
13+
import static org.junit.jupiter.api.Assertions.assertNotNull;
14+
15+
16+
import uk.co.real_logic.sbe.SbeTool;
17+
import uk.co.real_logic.sbe.Tests;
18+
import uk.co.real_logic.sbe.ir.Ir;
19+
import uk.co.real_logic.sbe.xml.IrGenerator;
20+
import uk.co.real_logic.sbe.xml.MessageSchema;
21+
import uk.co.real_logic.sbe.xml.ParserOptions;
22+
23+
import static uk.co.real_logic.sbe.xml.XmlSchemaParser.parse;
24+
25+
public class QualifiedYieldTest
26+
{
27+
private static final Class<?> BUFFER_CLASS = MutableDirectBuffer.class;
28+
private static final String BUFFER_NAME = BUFFER_CLASS.getName();
29+
private static final Class<DirectBuffer> READ_ONLY_BUFFER_CLASS = DirectBuffer.class;
30+
private static final String READ_ONLY_BUFFER_NAME = READ_ONLY_BUFFER_CLASS.getName();
31+
32+
private final StringWriterOutputManager outputManager = new StringWriterOutputManager();
33+
34+
@Test
35+
void shouldGenerateValidJava() throws Exception
36+
{
37+
System.setProperty(SbeTool.KEYWORD_APPEND_TOKEN, "_");
38+
39+
final ParserOptions options = ParserOptions.builder().stopOnError(true).build();
40+
final MessageSchema schema = parse(Tests.getLocalResource("issue910.xml"), options);
41+
final IrGenerator irg = new IrGenerator();
42+
final Ir ir = irg.generate(schema);
43+
final JavaGenerator generator = new JavaGenerator(
44+
ir, BUFFER_NAME, READ_ONLY_BUFFER_NAME, false, false, false, outputManager);
45+
46+
outputManager.setPackageName(ir.applicableNamespace());
47+
generator.generateMessageHeaderStub();
48+
generator.generateTypeStubs();
49+
generator.generate();
50+
51+
final Map<String, CharSequence> sources = outputManager.getSources();
52+
53+
{
54+
final String fqClassName = ir.applicableNamespace() + "." + "Issue910FieldDecoder";
55+
final Class<?> aClass = CompilerUtil.compileInMemory(fqClassName, sources);
56+
assertNotNull(aClass);
57+
}
58+
}
59+
}

sbe-tool/src/test/resources/issue910.xml

+8-8
Original file line numberDiff line numberDiff line change
@@ -34,32 +34,32 @@
3434
<type name="Array" primitiveType="int32" length="5"/>
3535
<type name="CharArray" primitiveType="char" length="5"/>
3636
</types>
37-
<sbe:message name="issue910Field" id="1" description="issue 910 field test">
37+
<sbe:message name="Issue910Field" id="1" description="issue 910 field test">
3838
<field name="yield" type="uint64" id="1"/>
3939
</sbe:message>
40-
<sbe:message name="issue910Vardata" id="2" description="issue 910 vardata test">
40+
<sbe:message name="Issue910Vardata" id="2" description="issue 910 vardata test">
4141
<field name="yield" type="varDataEncoding" id="1"/>
4242
</sbe:message>
43-
<sbe:message name="issue910Group" id="3" description="issue 910 group test">
43+
<sbe:message name="Issue910Group" id="3" description="issue 910 group test">
4444
<group name="yield" id="1" dimensionType="groupSizeEncoding">
4545
<field name="whatever" type="uint64" id="1"/>
4646
</group>
4747
</sbe:message>
48-
<sbe:message name="issue910GroupField" id="4" description="issue 910 group field test">
48+
<sbe:message name="Issue910GroupField" id="4" description="issue 910 group field test">
4949
<group name="whatever" id="1" dimensionType="groupSizeEncoding">
5050
<field name="yield" type="uint64" id="1"/>
5151
</group>
5252
</sbe:message>
53-
<sbe:message name="issue910Enum" id="5" description="issue 910 enum test">
53+
<sbe:message name="Issue910Enum" id="5" description="issue 910 enum test">
5454
<field name="yield" type="Enum" id="1"/>
5555
</sbe:message>
56-
<sbe:message name="issue910Set" id="6" description="issue 910 set test">
56+
<sbe:message name="Issue910Set" id="6" description="issue 910 set test">
5757
<field name="yield" type="Set" id="1"/>
5858
</sbe:message>
59-
<sbe:message name="issue910Array" id="7" description="issue 910 array test">
59+
<sbe:message name="Issue910Array" id="7" description="issue 910 array test">
6060
<field name="yield" type="Array" id="1"/>
6161
</sbe:message>
62-
<sbe:message name="issue910CharArray" id="8" description="issue 910 char array test">
62+
<sbe:message name="Issue910CharArray" id="8" description="issue 910 char array test">
6363
<field name="yield" type="CharArray" id="1"/>
6464
</sbe:message>
6565
</sbe:messageSchema>

0 commit comments

Comments
 (0)