On Tue, 16 Sep 2025 23:51:06 GMT, Sergey Bylokhov <[email protected]> wrote:

> Additional checks were recently added to ICC_Profile (see 
> [JDK-8347377](https://bugs.openjdk.org/browse/JDK-8347377)). As a result, 
> objects previously stored as valid profiles may now throw an 
> IllegalArgumentException during serialization. Discussion about serialization 
> was started in https://github.com/openjdk/jdk/pull/23044 but it seems at the 
> end non-serialization related check was 
> [verified](https://github.com/openjdk/jdk/pull/23044/commits/a5201b5f353e8957a1274261372496768edbc7a2).
>  =(
> 
> The patch itself is simple, but I found that we do not have good test 
> coverage in this area. So I added two tests to cover all possible variants 
> specified by the serialization spec.

test/jdk/java/awt/color/ICC_Profile/Serialization/SerializationSpecTest/SerializationSpecTest.java
 line 64:

> 62:         test("wrongType_valid", InvalidObjectException.class);
> 63:         test("wrongType_invalid", InvalidObjectException.class);
> 64:         test("wrongType_wrongType", InvalidObjectException.class);

Since it is not clear what case is being tested from filename, adding a short 
description per test would be helpful in case someone wants to update or debug 
this test in future.

`test("invalid_valid", null, "invalid name with valid profile data"); `

And adding some logs to the test() method as below.

test/jdk/java/awt/color/ICC_Profile/Serialization/SerializationSpecTest/SerializationSpecTest.java
 line 89:

> 87:             throw new RuntimeException("Test failed");
> 88:         }
> 89:     }

Suggestion:

    private static void test(String test, Class<?> expected, String msg) {
        System.out.println("Testing: " + test);
        System.out.println("Description: " + msg);
        
        String fileName = test + ".ser";
        File file = new File(System.getProperty("test.src", "."), fileName);
        Class<?> actual = null;
        try (var fis = new FileInputStream(file);
             var ois = new ObjectInputStream(fis))
        {
            ois.readObject();
        } catch (Exception e) {
            actual = e.getClass();
        }
        if (actual != expected) {
            System.err.println("Test: " + test);
            System.err.println("Expected: " + expected);
            System.err.println("Actual: " + actual);
            throw new RuntimeException("Test failed");
        }
        System.out.println("Test Case: " + test + " passed \n");
    }

-------------

PR Review Comment: https://git.openjdk.org/jdk/pull/27326#discussion_r2377366130
PR Review Comment: https://git.openjdk.org/jdk/pull/27326#discussion_r2377370355

Reply via email to