diff options
author | Evgeny Mandrikov <138671+Godin@users.noreply.github.com> | 2021-06-14 11:34:48 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2021-06-14 11:34:48 +0200 |
commit | d5c0a83bb58933b488fffc06a54941ba9615de7f (patch) | |
tree | bade853197fe4f0bca52801e38ef387051c7b586 /org.jacoco.core.test/src | |
parent | 5d24b063ba56dd62558a9998a46687a8e78274f4 (diff) | |
download | jacoco-d5c0a83bb58933b488fffc06a54941ba9615de7f.tar.gz |
Add experimental support for Java 18 class files (#1198)
Diffstat (limited to 'org.jacoco.core.test/src')
3 files changed, 18 insertions, 16 deletions
diff --git a/org.jacoco.core.test/src/org/jacoco/core/analysis/AnalyzerTest.java b/org.jacoco.core.test/src/org/jacoco/core/analysis/AnalyzerTest.java index 5bebb124..00b0aebb 100644 --- a/org.jacoco.core.test/src/org/jacoco/core/analysis/AnalyzerTest.java +++ b/org.jacoco.core.test/src/org/jacoco/core/analysis/AnalyzerTest.java @@ -108,7 +108,7 @@ public class AnalyzerTest { @Test public void should_not_modify_class_bytes_to_support_next_version() throws Exception { - final byte[] originalBytes = createClass(Opcodes.V16); + final byte[] originalBytes = createClass(Opcodes.V17 + 1); final byte[] bytes = new byte[originalBytes.length]; System.arraycopy(originalBytes, 0, bytes, 0, originalBytes.length); final long expectedClassId = CRC64.classId(bytes); @@ -131,14 +131,14 @@ public class AnalyzerTest { */ @Test public void analyzeClass_should_throw_exception_for_unsupported_class_file_version() { - final byte[] bytes = createClass(Opcodes.V16 + 2); + final byte[] bytes = createClass(Opcodes.V17 + 2); try { analyzer.analyzeClass(bytes, "UnsupportedVersion"); fail("exception expected"); } catch (IOException e) { assertEquals("Error while analyzing UnsupportedVersion.", e.getMessage()); - assertEquals("Unsupported class file major version 62", + assertEquals("Unsupported class file major version 63", e.getCause().getMessage()); } } @@ -218,7 +218,7 @@ public class AnalyzerTest { */ @Test public void analyzeAll_should_throw_exception_for_unsupported_class_file_version() { - final byte[] bytes = createClass(Opcodes.V16 + 2); + final byte[] bytes = createClass(Opcodes.V17 + 2); try { analyzer.analyzeAll(new ByteArrayInputStream(bytes), "UnsupportedVersion"); @@ -226,7 +226,7 @@ public class AnalyzerTest { } catch (IOException e) { assertEquals("Error while analyzing UnsupportedVersion.", e.getMessage()); - assertEquals("Unsupported class file major version 62", + assertEquals("Unsupported class file major version 63", e.getCause().getMessage()); } } diff --git a/org.jacoco.core.test/src/org/jacoco/core/instr/InstrumenterTest.java b/org.jacoco.core.test/src/org/jacoco/core/instr/InstrumenterTest.java index a3a49063..44d16d36 100644 --- a/org.jacoco.core.test/src/org/jacoco/core/instr/InstrumenterTest.java +++ b/org.jacoco.core.test/src/org/jacoco/core/instr/InstrumenterTest.java @@ -99,7 +99,7 @@ public class InstrumenterTest { @Test public void should_not_modify_class_bytes_to_support_next_version() throws Exception { - final byte[] originalBytes = createClass(Opcodes.V16); + final byte[] originalBytes = createClass(Opcodes.V17 + 1); final byte[] bytes = new byte[originalBytes.length]; System.arraycopy(originalBytes, 0, bytes, 0, originalBytes.length); final long expectedClassId = CRC64.classId(bytes); @@ -122,14 +122,14 @@ public class InstrumenterTest { */ @Test public void instrument_should_throw_exception_for_unsupported_class_file_version() { - final byte[] bytes = createClass(Opcodes.V16 + 2); + final byte[] bytes = createClass(Opcodes.V17 + 2); try { instrumenter.instrument(bytes, "UnsupportedVersion"); fail("exception expected"); } catch (final IOException e) { assertEquals("Error while instrumenting UnsupportedVersion.", e.getMessage()); - assertEquals("Unsupported class file major version 62", + assertEquals("Unsupported class file major version 63", e.getCause().getMessage()); } } @@ -224,7 +224,7 @@ public class InstrumenterTest { */ @Test public void instrumentAll_should_throw_exception_for_unsupported_class_file_version() { - final byte[] bytes = createClass(Opcodes.V16 + 2); + final byte[] bytes = createClass(Opcodes.V17 + 2); try { instrumenter.instrumentAll(new ByteArrayInputStream(bytes), new ByteArrayOutputStream(), "UnsupportedVersion"); @@ -232,7 +232,7 @@ public class InstrumenterTest { } catch (final IOException e) { assertEquals("Error while instrumenting UnsupportedVersion.", e.getMessage()); - assertEquals("Unsupported class file major version 62", + assertEquals("Unsupported class file major version 63", e.getCause().getMessage()); } } diff --git a/org.jacoco.core.test/src/org/jacoco/core/internal/instr/InstrSupportTest.java b/org.jacoco.core.test/src/org/jacoco/core/internal/instr/InstrSupportTest.java index 6a47d55f..4db19bf5 100644 --- a/org.jacoco.core.test/src/org/jacoco/core/internal/instr/InstrSupportTest.java +++ b/org.jacoco.core.test/src/org/jacoco/core/internal/instr/InstrSupportTest.java @@ -43,8 +43,8 @@ public class InstrSupportTest { } @Test - public void classReaderFor_should_read_java_16_class() { - final byte[] bytes = createJava16Class(); + public void classReaderFor_should_read_java_18_class() { + final byte[] bytes = createJava18Class(); final ClassReader classReader = InstrSupport.classReaderFor(bytes); @@ -53,16 +53,16 @@ public class InstrSupportTest { public void visit(final int version, final int access, final String name, final String signature, final String superName, final String[] interfaces) { - assertEquals(Opcodes.V16, version); + assertEquals(Opcodes.V17 + 1, version); } }, 0); - assertArrayEquals(createJava16Class(), bytes); + assertArrayEquals(createJava18Class(), bytes); } - private static byte[] createJava16Class() { + private static byte[] createJava18Class() { final ClassWriter cw = new ClassWriter(0); - cw.visit(Opcodes.V16, 0, "Foo", null, "java/lang/Object", null); + cw.visit(Opcodes.V17 + 1, 0, "Foo", null, "java/lang/Object", null); cw.visitEnd(); return cw.toByteArray(); } @@ -128,6 +128,8 @@ public class InstrSupportTest { assertTrue(InstrSupport.needsFrames(Opcodes.V14)); assertTrue(InstrSupport.needsFrames(Opcodes.V15)); assertTrue(InstrSupport.needsFrames(Opcodes.V16)); + assertTrue(InstrSupport.needsFrames(Opcodes.V17)); + assertTrue(InstrSupport.needsFrames(Opcodes.V17 + 1)); assertTrue(InstrSupport.needsFrames(0x0100)); } |