Update tests after running Java 17 tests for real

Bug: b/337801526
Change-Id: Ibb70d7fce06fb23e3a7141a2ec0bfcee0380df1f
diff --git a/src/test/examplesJava17/records/RecordBlogTest.java b/src/test/examplesJava17/records/RecordBlogTest.java
index 1128f07..c28b92b 100644
--- a/src/test/examplesJava17/records/RecordBlogTest.java
+++ b/src/test/examplesJava17/records/RecordBlogTest.java
@@ -33,7 +33,7 @@
       ImmutableMap.<String, String>builder()
           .put("-dontobfuscate\n-dontoptimize", "RecordBlog$Person[name=%s, age=42]")
           .put("", "a[a=%s]")
-          .put("-keep,allowshrinking class " + CLASS, "RecordBlog$Person[a=%s]")
+          .put("-keep,allowshrinking class " + CLASS, "RecordBlog$Person[a=%s, b=42]")
           .put(
               "-keepclassmembers,allowshrinking,allowoptimization class "
                   + CLASS
diff --git a/src/test/examplesJava17/records/RecordProfileRewritingTest.java b/src/test/examplesJava17/records/RecordProfileRewritingTest.java
index 13c5b5a..13c487d 100644
--- a/src/test/examplesJava17/records/RecordProfileRewritingTest.java
+++ b/src/test/examplesJava17/records/RecordProfileRewritingTest.java
@@ -241,9 +241,30 @@
         equalsMethodSubject,
         ifThen(!recordDesugaringIsOff, invokesMethod(equalsHelperMethodSubject)));
 
+    // Objects.hashCode(Object) (used by helper generated for record hashCode).
+    ClassSubject objectsHashCodeClassSubject =
+        inspector.clazz(SyntheticItemsTestUtils.syntheticBackportClass(PERSON_REFERENCE, 0));
+    assertThat(
+        objectsHashCodeClassSubject,
+        isAbsentIf(recordDesugaringIsOff || canUseJavaUtilObjects(parameters)));
+    MethodSubject objectsHashCodeMethodSubject = objectsHashCodeClassSubject.uniqueMethod();
+    assertThat(objectsHashCodeMethodSubject, isAbsentIf(objectsHashCodeClassSubject.isAbsent()));
+
+    // Objects.equals(Object, Object) (used by helper generated for record compare).
+    ClassSubject objectsEqualsClassSubject =
+        inspector.clazz(SyntheticItemsTestUtils.syntheticBackportClass(PERSON_REFERENCE, 1));
+    assertThat(
+        objectsEqualsClassSubject,
+        isAbsentIf(recordDesugaringIsOff || canUseJavaUtilObjects(parameters)));
+    MethodSubject objectsEqualsMethodSubject = objectsEqualsClassSubject.uniqueMethod();
+    assertThat(objectsEqualsMethodSubject, isAbsentIf(objectsEqualsClassSubject.isAbsent()));
+    assertEquals(objectsHashCodeClassSubject.isPresent(), objectsEqualsClassSubject.isPresent());
+
     // int hashCode()
     ClassSubject hashCodeHelperClassSubject =
-        inspector.clazz(SyntheticItemsTestUtils.syntheticRecordHelperClass(PERSON_REFERENCE, 0));
+        inspector.clazz(
+            SyntheticItemsTestUtils.syntheticRecordHelperClass(
+                PERSON_REFERENCE, objectsHashCodeClassSubject.isAbsent() ? 0 : 2));
     assertThat(hashCodeHelperClassSubject, isAbsentIf(recordDesugaringIsOff));
 
     MethodSubject hashCodeHelperMethodSubject = hashCodeHelperClassSubject.uniqueMethod();
@@ -254,14 +275,13 @@
     assertThat(hashCodeMethodSubject, isPresent());
     assertThat(
         hashCodeMethodSubject,
-        ifThen(!recordDesugaringIsOff, invokesMethod(getFieldsAsObjectsMethodSubject)));
-    assertThat(
-        hashCodeMethodSubject,
         ifThen(!recordDesugaringIsOff, invokesMethod(hashCodeHelperMethodSubject)));
 
     // String toString()
     ClassSubject toStringHelperClassSubject =
-        inspector.clazz(SyntheticItemsTestUtils.syntheticRecordHelperClass(PERSON_REFERENCE, 1));
+        inspector.clazz(
+            SyntheticItemsTestUtils.syntheticRecordHelperClass(
+                PERSON_REFERENCE, objectsHashCodeClassSubject.isAbsent() ? 1 : 3));
     assertThat(toStringHelperClassSubject, isAbsentIf(recordDesugaringIsOff));
 
     MethodSubject toStringHelperMethodSubject = toStringHelperClassSubject.uniqueMethod();
@@ -288,6 +308,12 @@
             hashCodeMethodSubject,
             toStringMethodSubject)
         .applyIf(
+            !recordDesugaringIsOff && !canUseJavaUtilObjects(parameters),
+            i ->
+                i.assertContainsClassRules(objectsHashCodeClassSubject, objectsEqualsClassSubject)
+                    .assertContainsMethodRules(
+                        objectsHashCodeMethodSubject, objectsEqualsMethodSubject))
+        .applyIf(
             canMergeRecordTag && !partialDesugaring,
             i -> i.assertContainsMethodRule(personDefaultInstanceInitializerSubject))
         .applyIf(
diff --git a/src/test/java/com/android/tools/r8/JdkClassFileProviderTest.java b/src/test/java/com/android/tools/r8/JdkClassFileProviderTest.java
index 8bd6851..85caa5c 100644
--- a/src/test/java/com/android/tools/r8/JdkClassFileProviderTest.java
+++ b/src/test/java/com/android/tools/r8/JdkClassFileProviderTest.java
@@ -108,7 +108,11 @@
     assertJavaUtilConcurrentFlowSubscriber(provider);
     CfVersion version = extractClassFileVersion(readJavaLangObject(provider));
     // When not passing an explicit JAVA_HOME the underlying test runner JDK is used.
-    assertEquals(CfVersion.V11, version);
+    String classFileVersion = System.getProperty("java.class.version");
+    int dotIndex = classFileVersion.indexOf('.');
+    assertTrue(dotIndex > 0);
+    assertEquals(
+        CfVersion.fromRaw(Integer.parseInt(classFileVersion.substring(0, dotIndex))), version);
     assert provider instanceof AutoCloseable;
     ((AutoCloseable) provider).close();
   }
diff --git a/src/test/testbase/java/com/android/tools/r8/TestBase.java b/src/test/testbase/java/com/android/tools/r8/TestBase.java
index 58fd949..9722064 100644
--- a/src/test/testbase/java/com/android/tools/r8/TestBase.java
+++ b/src/test/testbase/java/com/android/tools/r8/TestBase.java
@@ -1781,7 +1781,7 @@
   }
 
   public static boolean canUseJavaUtilObjects(TestParameters parameters) {
-    return parameters.isCfRuntime()
+    return (parameters.isCfRuntime() && parameters.getApiLevel() == null)
         || parameters.getApiLevel().isGreaterThanOrEqualTo(AndroidApiLevel.K);
   }