Fix diagnostics matcher for Kotlin tests
Change-Id: Ib62930bbe4a35a0a0db363e90bdb0bab3d1a082a
diff --git a/src/main/java/com/android/tools/r8/R8Command.java b/src/main/java/com/android/tools/r8/R8Command.java
index f4a984e..62a6e97 100644
--- a/src/main/java/com/android/tools/r8/R8Command.java
+++ b/src/main/java/com/android/tools/r8/R8Command.java
@@ -706,8 +706,8 @@
+ ", which cannot be represented as a semantic version. Using"
+ " an artificial version newer than any known version for selecting"
+ " Proguard configurations embedded under META-INF/. This means that"
- + " all rules with a '-max-' qualifier will be excluded and all rules"
- + " with a -min- qualifier will be included.");
+ + " all rules with a '-upto-' qualifier will be excluded and all rules"
+ + " with a -from- qualifier will be included.");
}
return compilerVersion;
});
diff --git a/src/test/java/com/android/tools/r8/kotlin/ProcessKotlinReflectionLibTest.java b/src/test/java/com/android/tools/r8/kotlin/ProcessKotlinReflectionLibTest.java
index 0a93f62..93646a1 100644
--- a/src/test/java/com/android/tools/r8/kotlin/ProcessKotlinReflectionLibTest.java
+++ b/src/test/java/com/android/tools/r8/kotlin/ProcessKotlinReflectionLibTest.java
@@ -14,6 +14,7 @@
import com.android.tools.r8.TestShrinkerBuilder;
import com.android.tools.r8.ThrowableConsumer;
import com.android.tools.r8.ToolHelper;
+import com.android.tools.r8.kotlin.metadata.KotlinMetadataTestBase;
import com.android.tools.r8.shaking.ProguardKeepAttributes;
import java.util.Collection;
import org.junit.Test;
@@ -55,14 +56,16 @@
.addKeepAttributes(ProguardKeepAttributes.SIGNATURE)
.addKeepAttributes(ProguardKeepAttributes.INNER_CLASSES)
.addKeepAttributes(ProguardKeepAttributes.ENCLOSING_METHOD)
+ .allowDiagnosticMessages()
.allowUnusedDontWarnKotlinReflectJvmInternal(kotlinc.isNot(KOTLINC_1_3_72))
- .allowUnusedProguardConfigurationRules(kotlinc.isNot(KOTLINC_1_3_72))
.allowUnusedDontWarnJavaLangClassValue(
kotlinc.getCompilerVersion().isGreaterThan(KOTLINC_1_7_0))
+ .allowUnusedProguardConfigurationRules()
.apply(testBuilderConsumer)
.compile()
.apply(compileResultBuilder)
- .apply(assertUnusedKeepRuleForKotlinMetadata(kotlinc.isNot(KOTLINC_1_3_72)));
+ .apply(assertUnusedKeepRuleForKotlinMetadata(kotlinc.isNot(KOTLINC_1_3_72)))
+ .apply(KotlinMetadataTestBase::verifyExpectedWarningsFromKotlinReflectAndStdLib);
}
@Test
diff --git a/src/test/java/com/android/tools/r8/kotlin/metadata/KotlinMetadataTestBase.java b/src/test/java/com/android/tools/r8/kotlin/metadata/KotlinMetadataTestBase.java
index 07539ed..aaedc52 100644
--- a/src/test/java/com/android/tools/r8/kotlin/metadata/KotlinMetadataTestBase.java
+++ b/src/test/java/com/android/tools/r8/kotlin/metadata/KotlinMetadataTestBase.java
@@ -19,6 +19,7 @@
import com.android.tools.r8.kotlin.KotlinMetadataWriter;
import com.android.tools.r8.utils.DescriptorUtils;
import com.android.tools.r8.utils.IntBox;
+import com.android.tools.r8.utils.LibraryProvidedProguardRulesTestUtils;
import com.android.tools.r8.utils.codeinspector.ClassSubject;
import com.android.tools.r8.utils.codeinspector.CodeInspector;
import com.android.tools.r8.utils.codeinspector.FoundClassSubject;
@@ -176,6 +177,7 @@
compileResult.assertAllWarningMessagesMatch(
anyOf(
equalTo("Resource 'META-INF/MANIFEST.MF' already exists."),
- equalTo("Resource 'META-INF/versions/9/module-info.class' already exists.")));
+ equalTo("Resource 'META-INF/versions/9/module-info.class' already exists."),
+ LibraryProvidedProguardRulesTestUtils.getDiagnosticMessageMatcher()));
}
}
diff --git a/src/test/java/com/android/tools/r8/shaking/LibraryProvidedProguardRulesR8SpecificTest.java b/src/test/java/com/android/tools/r8/shaking/LibraryProvidedProguardRulesR8SpecificTest.java
index 884de68..1079641 100644
--- a/src/test/java/com/android/tools/r8/shaking/LibraryProvidedProguardRulesR8SpecificTest.java
+++ b/src/test/java/com/android/tools/r8/shaking/LibraryProvidedProguardRulesR8SpecificTest.java
@@ -4,15 +4,13 @@
package com.android.tools.r8.shaking;
-import static com.android.tools.r8.DiagnosticsMatcher.diagnosticMessage;
-import static org.hamcrest.CoreMatchers.allOf;
-import static org.hamcrest.CoreMatchers.containsString;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.fail;
import com.android.tools.r8.TestParameters;
import com.android.tools.r8.Version;
import com.android.tools.r8.utils.AndroidApiLevel;
+import com.android.tools.r8.utils.LibraryProvidedProguardRulesTestUtils;
import com.android.tools.r8.utils.SemanticVersion;
import com.android.tools.r8.utils.StringUtils;
import com.android.tools.r8.utils.ZipUtils.ZipBuilder;
@@ -237,13 +235,7 @@
1,
diagnostics.getWarnings().stream()
.filter(
- allOf(
- diagnosticMessage(containsString("Running R8 version main")),
- diagnosticMessage(
- containsString(
- "Using an artificial version newer than any known"
- + " version")))
- ::matches)
+ LibraryProvidedProguardRulesTestUtils.getDiagnosticMatcher()::matches)
.count()))
.inspectProguardConfiguration(
configuration ->
diff --git a/src/test/java/com/android/tools/r8/utils/LibraryProvidedProguardRulesTestUtils.java b/src/test/java/com/android/tools/r8/utils/LibraryProvidedProguardRulesTestUtils.java
new file mode 100644
index 0000000..b3f33be
--- /dev/null
+++ b/src/test/java/com/android/tools/r8/utils/LibraryProvidedProguardRulesTestUtils.java
@@ -0,0 +1,32 @@
+// Copyright (c) 2023, the R8 project authors. Please see the AUTHORS file
+// for details. All rights reserved. Use of this source code is governed by a
+// BSD-style license that can be found in the LICENSE file.
+
+package com.android.tools.r8.utils;
+
+import static com.android.tools.r8.DiagnosticsMatcher.diagnosticMessage;
+import static com.android.tools.r8.DiagnosticsMatcher.diagnosticType;
+import static org.hamcrest.CoreMatchers.allOf;
+import static org.hamcrest.CoreMatchers.equalTo;
+
+import com.android.tools.r8.Diagnostic;
+import com.android.tools.r8.Version;
+import org.hamcrest.Matcher;
+
+public class LibraryProvidedProguardRulesTestUtils {
+
+ public static Matcher<Diagnostic> getDiagnosticMatcher() {
+ return allOf(
+ diagnosticType(StringDiagnostic.class), diagnosticMessage(getDiagnosticMessageMatcher()));
+ }
+
+ public static Matcher<String> getDiagnosticMessageMatcher() {
+ return equalTo(
+ "Running R8 version "
+ + Version.getVersionString()
+ + ", which cannot be represented as a semantic version. Using an artificial version "
+ + "newer than any known version for selecting Proguard configurations embedded under "
+ + "META-INF/. This means that all rules with a '-upto-' qualifier will be excluded and "
+ + "all rules with a -from- qualifier will be included.");
+ }
+}