scijava / scijava-common

A plugin framework and application container with built-in extensibility mechanism :electric_plug:
BSD 2-Clause "Simplified" License
87 stars 52 forks source link

mvn package fails Unit Test #474

Closed scuniff closed 11 months ago

scuniff commented 11 months ago

mvn package command works with JAVA_HOME set to JDK 1.8

It fails when JAVA_HOME points to JDK 12

Error message:

[INFO] [INFO] Results: [INFO] [ERROR] Failures: [ERROR] ObjectIndexTest.testToString:220 array lengths differed, expected.length=7 actual.length=9; arrays first differed at element [6]; expected:<[org.scijava.object.ObjectIndex$All]: {5, 2.5, 3}> but was:<[java.lang.constant.Constable]: {5, 2.5, 3}> [INFO] [ERROR] Tests run: 798, Failures: 1, Errors: 0, Skipped: 3

Apparently the Java class java.lang.constand.Constable was added in JDK 12.

This looks to be the code involved

https://github.com/scijava/scijava-common/blob/41f31366618fb6ab6ba5e612e61b5c9755d8dd43/src/test/java/org/scijava/object/ObjectIndexTest.java#L206C1-L221C1

public void testToString() {
    final ObjectIndex<Object> objectIndex =
        new ObjectIndex<>(Object.class);
    objectIndex.add(new Integer(5));
    objectIndex.add(new Float(2.5f));
    objectIndex.add(new Integer(3));
    final String[] expected =
        { "java.io.Serializable: {5, 2.5, 3}",
            "java.lang.Comparable: {5, 2.5, 3}", "java.lang.Float: {2.5}",
            "java.lang.Integer: {5, 3}", "java.lang.Number: {5, 2.5, 3}",
            "java.lang.Object: {5, 2.5, 3}",
            "org.scijava.object.ObjectIndex$All: {5, 2.5, 3}" };
    final String[] actual =
        objectIndex.toString().split(System.getProperty("line.separator"));
    assertArrayEquals(expected, actual);
}