JDK 14 RFR of JDK-8235514: Update record serialization tests to not use hard coded source versions

Chris Hegarty chris.hegarty at oracle.com
Sat Dec 7 08:50:30 UTC 2019


Thanks for doing this Joe. The changes look good.

-Chris.

> On 6 Dec 2019, at 21:15, Joe Darcy <joe.darcy at oracle.com> wrote:
> 
> Hello,
> 
> Please review the patch below to update to the records serialization tests to avoid hard-coded values for the -source argument during programmatic invocations of the compiler.
> 
> Thanks,
> 
> -Joe
> 
> diff -r 3b9efbac1b50 test/jdk/java/io/Serializable/records/BadCanonicalCtrTest.java
> --- a/test/jdk/java/io/Serializable/records/BadCanonicalCtrTest.java Fri Dec 06 12:13:25 2019 -0800
> +++ b/test/jdk/java/io/Serializable/records/BadCanonicalCtrTest.java Fri Dec 06 13:13:45 2019 -0800
> @@ -59,6 +59,7 @@
>   * constructor cannot be found during deserialization.
>   */
>  public class BadCanonicalCtrTest {
> +    private static final String VERSION = Integer.toString(Runtime.version().feature());
> 
>      // ClassLoader for creating instances of the records to test with.
>      ClassLoader goodRecordClassLoader;
> @@ -79,7 +80,7 @@
>          {
>              byte[] byteCode = InMemoryJavaCompiler.compile("R1",
>                      "public record R1 () implements java.io.Serializable { }",
> -                    "--enable-preview", "-source", "14");
> +                    "--enable-preview", "-source", VERSION);
>              goodRecordClassLoader = new ByteCodeLoader("R1", byteCode, BadCanonicalCtrTest.class.getClassLoader());
>              byte[] bc1 = removeConstructor(byteCode);
>              missingCtrClassLoader = new ByteCodeLoader("R1", bc1, BadCanonicalCtrTest.class.getClassLoader());
> @@ -89,7 +90,7 @@
>          {
>              byte[] byteCode = InMemoryJavaCompiler.compile("R2",
>                      "public record R2 (int x, int y) implements java.io.Serializable { }",
> -                    "--enable-preview", "-source", "14");
> +                    "--enable-preview", "-source", VERSION);
>              goodRecordClassLoader = new ByteCodeLoader("R2", byteCode, goodRecordClassLoader);
>              byte[] bc1 = removeConstructor(byteCode);
>              missingCtrClassLoader = new ByteCodeLoader("R2", bc1, missingCtrClassLoader);
> @@ -101,7 +102,7 @@
>                      "public record R3 (long l) implements java.io.Externalizable {" +
>                      "    public void writeExternal(java.io.ObjectOutput out) { }" +
>                      "    public void readExternal(java.io.ObjectInput in)    { } }",
> -                    "--enable-preview", "-source", "14");
> +                    "--enable-preview", "-source", VERSION);
>              goodRecordClassLoader = new ByteCodeLoader("R3", byteCode, goodRecordClassLoader);
>              byte[] bc1 = removeConstructor(byteCode);
>              missingCtrClassLoader = new ByteCodeLoader("R3", bc1, missingCtrClassLoader);
> diff -r 3b9efbac1b50 test/jdk/java/io/Serializable/records/ProhibitedMethods.java
> --- a/test/jdk/java/io/Serializable/records/ProhibitedMethods.java Fri Dec 06 12:13:25 2019 -0800
> +++ b/test/jdk/java/io/Serializable/records/ProhibitedMethods.java Fri Dec 06 13:13:45 2019 -0800
> @@ -69,6 +69,7 @@
>   * record objects.
>   */
>  public class ProhibitedMethods {
> +    private static final String VERSION = Integer.toString(Runtime.version().feature());
> 
>      public interface ThrowingExternalizable extends Externalizable {
>          default void writeExternal(ObjectOutput out) {
> @@ -106,7 +107,7 @@
>          {
>              byte[] byteCode = InMemoryJavaCompiler.compile("Foo",
>                      "public record Foo () implements java.io.Serializable { }",
> -                    "--enable-preview", "-source", "14");
> +                    "--enable-preview", "-source", VERSION);
>              byteCode = addWriteObject(byteCode);
>              byteCode = addReadObject(byteCode);
>              byteCode = addReadObjectNoData(byteCode);
> @@ -115,7 +116,7 @@
>          {
>              byte[] byteCode = InMemoryJavaCompiler.compile("Bar",
>                      "public record Bar (int x, int y) implements java.io.Serializable { }",
> -                    "--enable-preview", "-source", "14");
> +                    "--enable-preview", "-source", VERSION);
>              byteCode = addWriteObject(byteCode);
>              byteCode = addReadObject(byteCode);
>              byteCode = addReadObjectNoData(byteCode);
> @@ -125,7 +126,7 @@
>              byte[] byteCode = InMemoryJavaCompiler.compile("Baz",
>                      "import java.io.Serializable;" +
>                      "public record Baz<U extends Serializable,V extends Serializable>(U u, V v) implements Serializable { }",
> -                    "--enable-preview", "-source", "14");
> +                    "--enable-preview", "-source", VERSION);
>              byteCode = addWriteObject(byteCode);
>              byteCode = addReadObject(byteCode);
>              byteCode = addReadObjectNoData(byteCode);
> diff -r 3b9efbac1b50 test/jdk/java/io/Serializable/records/SerialPersistentFieldsTest.java
> --- a/test/jdk/java/io/Serializable/records/SerialPersistentFieldsTest.java Fri Dec 06 12:13:25 2019 -0800
> +++ b/test/jdk/java/io/Serializable/records/SerialPersistentFieldsTest.java Fri Dec 06 13:13:45 2019 -0800
> @@ -64,6 +64,7 @@
>   * Checks that the serialPersistentFields declaration is effectively ignored.
>   */
>  public class SerialPersistentFieldsTest {
> +    private static final String VERSION = Integer.toString(Runtime.version().feature());
> 
>      ClassLoader serializableRecordLoader;
> 
> @@ -85,7 +86,7 @@
>          {  // R1
>              byte[] byteCode = InMemoryJavaCompiler.compile("R1",
>                      "public record R1 () implements java.io.Serializable { }",
> -                    "--enable-preview", "-source", "14");
> +                    "--enable-preview", "-source", VERSION);
>              ObjectStreamField[] serialPersistentFields = {
>                      new ObjectStreamField("s", String.class),
>                      new ObjectStreamField("i", int.class),
> @@ -98,7 +99,7 @@
>          {  // R2
>              byte[] byteCode = InMemoryJavaCompiler.compile("R2",
>                      "public record R2 (int x) implements java.io.Serializable { }",
> -                    "--enable-preview", "-source", "14");
> +                    "--enable-preview", "-source", VERSION);
>              ObjectStreamField[] serialPersistentFields = {
>                      new ObjectStreamField("s", String.class)
>              };
> @@ -108,7 +109,7 @@
>          {  // R3
>              byte[] byteCode = InMemoryJavaCompiler.compile("R3",
>                      "public record R3 (int x, int y) implements java.io.Serializable { }",
> -                    "--enable-preview", "-source", "14");
> +                    "--enable-preview", "-source", VERSION);
>              ObjectStreamField[] serialPersistentFields = new ObjectStreamField[0];
>              byteCode = addSerialPersistentFields(byteCode, serialPersistentFields);
>              serializableRecordLoader = new ByteCodeLoader("R3", byteCode, serializableRecordLoader);
> @@ -117,7 +118,7 @@
>              byte[] byteCode = InMemoryJavaCompiler.compile("R4",
>                      "import java.io.Serializable;" +
>                      "public record R4<U extends Serializable,V extends Serializable>(U u, V v) implements Serializable { }",
> -                    "--enable-preview", "-source", "14");
> +                    "--enable-preview", "-source", VERSION);
>              ObjectStreamField[] serialPersistentFields = {
>                      new ObjectStreamField("v", String.class)
>              };
> @@ -134,7 +135,7 @@
>                      "    @Override public void readExternal(ObjectInput in) {\n" +
>                      "        throw new AssertionError(\"should not reach here\");\n" +
>                      "    }  }",
> -                    "--enable-preview", "-source", "14");
> +                    "--enable-preview", "-source", VERSION);
>              ObjectStreamField[] serialPersistentFields = {
>                      new ObjectStreamField("v", String.class)
>              };
> 



More information about the core-libs-dev mailing list