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
