Cleanup and remove GMS Core tests
Change-Id: I758d22cc5a3e0f3a9fe59517222dc160f1c44788
diff --git a/src/test/java/com/android/tools/r8/TestCompilerBuilder.java b/src/test/java/com/android/tools/r8/TestCompilerBuilder.java
index 97a95be8..121e7c4 100644
--- a/src/test/java/com/android/tools/r8/TestCompilerBuilder.java
+++ b/src/test/java/com/android/tools/r8/TestCompilerBuilder.java
@@ -65,6 +65,7 @@
private MainDexClassesCollector mainDexClassesCollector;
private StringConsumer mainDexListConsumer;
protected int minApiLevel = ToolHelper.getMinApiLevelForDexVm().getLevel();
+ private boolean optimizeMultidexForLinearAlloc = false;
private Consumer<InternalOptions> optionsConsumer = DEFAULT_OPTIONS;
private ByteArrayOutputStream stdout = null;
private PrintStream oldStdout = null;
@@ -167,6 +168,7 @@
: "Don't set the API level directly through BaseCompilerCommand.Builder in tests";
builder.setMinApiLevel(minApiLevel);
}
+ builder.setOptimizeMultidexForLinearAlloc(optimizeMultidexForLinearAlloc);
if (useDefaultRuntimeLibrary) {
if (backend == Backend.DEX) {
assert builder.isMinApiLevelSet();
@@ -308,6 +310,11 @@
return self();
}
+ public T setOptimizeMultidexForLinearAlloc() {
+ this.optimizeMultidexForLinearAlloc = true;
+ return self();
+ }
+
public T disableDesugaring() {
builder.setDisableDesugaring(true);
return self();
diff --git a/src/test/java/com/android/tools/r8/internal/D8GMSCoreV10DeployJarVerificationTest.java b/src/test/java/com/android/tools/r8/internal/D8GMSCoreV10DeployJarVerificationTest.java
deleted file mode 100644
index 7f685c5..0000000
--- a/src/test/java/com/android/tools/r8/internal/D8GMSCoreV10DeployJarVerificationTest.java
+++ /dev/null
@@ -1,95 +0,0 @@
-// Copyright (c) 2017, 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.internal;
-
-import com.android.tools.r8.CompilationMode;
-import com.android.tools.r8.D8Command;
-import com.android.tools.r8.R8RunArtTestsTest.CompilerUnderTest;
-import com.android.tools.r8.ToolHelper;
-import com.android.tools.r8.utils.AndroidApiLevel;
-import com.android.tools.r8.utils.AndroidApp;
-import java.nio.file.Paths;
-import org.junit.Test;
-
-public class D8GMSCoreV10DeployJarVerificationTest extends GMSCoreDeployJarVerificationTest {
-
- @Test
- public void buildDebugFromDeployJar() throws Exception {
- buildFromDeployJar(
- CompilerUnderTest.D8, CompilationMode.DEBUG,
- GMSCoreCompilationTestBase.GMSCORE_V10_DIR, false);
- }
-
- @Test
- public void buildReleaseFromDeployJar() throws Exception {
- buildFromDeployJar(
- CompilerUnderTest.D8, CompilationMode.RELEASE,
- GMSCoreCompilationTestBase.GMSCORE_V10_DIR, false);
- }
-
- @Test
- public void testDeterminismDebugLegacyMultidexFromDeployJar() throws Exception {
- D8Command.Builder builder =
- D8Command.builder()
- .addProgramFiles(Paths.get(GMSCORE_V10_DIR + DEPLOY_JAR))
- .addLibraryFiles(ToolHelper.getAndroidJar(AndroidApiLevel.K.getLevel()))
- .setMode(CompilationMode.DEBUG)
- .setMinApiLevel(AndroidApiLevel.K.getLevel())
- .addMainDexListFiles(Paths.get(GMSCORE_V10_DIR + "main_dex_list.txt"));
-
- AndroidApp app1 = runAndCheckVerification(builder, null);
- D8Command.Builder builder2 =
- D8Command.builder()
- .addProgramFiles(Paths.get(GMSCORE_V10_DIR + DEPLOY_JAR))
- .addLibraryFiles(ToolHelper.getAndroidJar(AndroidApiLevel.K.getLevel()))
- .setMode(CompilationMode.DEBUG)
- .setMinApiLevel(AndroidApiLevel.K.getLevel())
- .addMainDexListFiles(Paths.get(GMSCORE_V10_DIR + "main_dex_list.txt"));
-
- AndroidApp app2 = runAndCheckVerification(builder2, null);
- // Verify that the result of the two compilations was the same.
- assertIdenticalApplications(app1, app2);
- }
-
- @Test
- public void buildDebugLegagyMultidexForDexOptFromDeployJar() throws Exception {
- D8Command.Builder builder =
- D8Command.builder()
- .addProgramFiles(Paths.get(GMSCORE_V10_DIR + DEPLOY_JAR))
- .addLibraryFiles(ToolHelper.getAndroidJar(AndroidApiLevel.K.getLevel()))
- .setMode(CompilationMode.DEBUG)
- .setMinApiLevel(AndroidApiLevel.K.getLevel())
- .setOptimizeMultidexForLinearAlloc(true)
- .addMainDexListFiles(Paths.get(GMSCORE_V10_DIR + "main_dex_list.txt"));
-
- runAndCheckVerification(builder, null);
- }
-
- @Test
- public void buildReleaseLegagyMultidexFromDeployJar() throws Exception {
- D8Command.Builder builder =
- D8Command.builder()
- .addProgramFiles(Paths.get(GMSCORE_V10_DIR + DEPLOY_JAR))
- .addLibraryFiles(ToolHelper.getAndroidJar(AndroidApiLevel.K.getLevel()))
- .setMode(CompilationMode.DEBUG)
- .setMinApiLevel(AndroidApiLevel.K.getLevel())
- .addMainDexListFiles(Paths.get(GMSCORE_V10_DIR + "main_dex_list.txt"));
-
- runAndCheckVerification(builder, null);
- }
-
- @Test
- public void buildReleaseLegagyMultidexForDexOptFromDeployJar() throws Exception {
- D8Command.Builder builder =
- D8Command.builder()
- .addProgramFiles(Paths.get(GMSCORE_V10_DIR + DEPLOY_JAR))
- .addLibraryFiles(ToolHelper.getAndroidJar(AndroidApiLevel.K.getLevel()))
- .setMode(CompilationMode.DEBUG)
- .setMinApiLevel(AndroidApiLevel.K.getLevel())
- .setOptimizeMultidexForLinearAlloc(true)
- .addMainDexListFiles(Paths.get(GMSCORE_V10_DIR + "main_dex_list.txt"));
-
- runAndCheckVerification(builder, null);
- }
-}
diff --git a/src/test/java/com/android/tools/r8/internal/D8GMSCoreV9DeployJarVerificationTest.java b/src/test/java/com/android/tools/r8/internal/D8GMSCoreV9DeployJarVerificationTest.java
deleted file mode 100644
index 25f4412..0000000
--- a/src/test/java/com/android/tools/r8/internal/D8GMSCoreV9DeployJarVerificationTest.java
+++ /dev/null
@@ -1,25 +0,0 @@
-// Copyright (c) 2017, 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.internal;
-
-import com.android.tools.r8.CompilationMode;
-import com.android.tools.r8.R8RunArtTestsTest.CompilerUnderTest;
-import org.junit.Test;
-
-public class D8GMSCoreV9DeployJarVerificationTest extends GMSCoreDeployJarVerificationTest {
-
- @Test
- public void buildDebugFromDeployJar() throws Exception {
- buildFromDeployJar(
- CompilerUnderTest.D8, CompilationMode.DEBUG,
- GMSCoreCompilationTestBase.GMSCORE_V9_DIR, true);
- }
-
- @Test
- public void buildReleaseFromDeployJar() throws Exception {
- buildFromDeployJar(
- CompilerUnderTest.D8, CompilationMode.RELEASE,
- GMSCoreCompilationTestBase.GMSCORE_V9_DIR, true);
- }
-}
diff --git a/src/test/java/com/android/tools/r8/internal/GMSCoreCompilationTestBase.java b/src/test/java/com/android/tools/r8/internal/GMSCoreCompilationTestBase.java
index de9b402..4ed740b 100644
--- a/src/test/java/com/android/tools/r8/internal/GMSCoreCompilationTestBase.java
+++ b/src/test/java/com/android/tools/r8/internal/GMSCoreCompilationTestBase.java
@@ -3,61 +3,8 @@
// BSD-style license that can be found in the LICENSE file.
package com.android.tools.r8.internal;
-import com.android.tools.r8.CompilationFailedException;
-import com.android.tools.r8.CompilationMode;
-import com.android.tools.r8.R8RunArtTestsTest.CompilerUnderTest;
-import com.android.tools.r8.utils.InternalOptions;
-import com.google.common.collect.ImmutableList;
-import java.io.IOException;
-import java.nio.file.Paths;
-import java.util.concurrent.ExecutionException;
-import java.util.function.Consumer;
-
public abstract class GMSCoreCompilationTestBase extends CompilationTestBase {
- public static final String GMSCORE_V4_DIR = "third_party/gmscore/v4/";
- public static final String GMSCORE_V5_DIR = "third_party/gmscore/v5/";
- public static final String GMSCORE_V6_DIR = "third_party/gmscore/v6/";
- public static final String GMSCORE_V7_DIR = "third_party/gmscore/v7/";
- public static final String GMSCORE_V8_DIR = "third_party/gmscore/v8/";
- public static final String GMSCORE_V9_DIR = "third_party/gmscore/gmscore_v9/";
- public static final String GMSCORE_V10_DIR = "third_party/gmscore/gmscore_v10/";
- public static final String GMSCORE_LATEST_DIR = "third_party/gmscore/latest/";
-
- public static final int GMSCORE_V9_MAX_SIZE = 35000000;
- public static final int GMSCORE_V10_MAX_SIZE = 35000000;
- public static final int GMSCORE_LATEST_MAX_SIZE = 35000000;
-
- static final String GMSCORE_APK = "GMSCore.apk";
-
// Files pertaining to the full GMSCore build.
- static final String PG_MAP = "GmsCore_prod_alldpi_release_all_locales_proguard.map";
static final String PG_CONF = "GmsCore_prod_alldpi_release_all_locales_proguard.config";
static final String DEPLOY_JAR = "GmsCore_prod_alldpi_release_all_locales_deploy.jar";
- static final String REFERENCE_APK = "noshrink_x86_GmsCore_prod_alldpi_release_unsigned.apk";
-
- public void runR8AndCheckVerification(CompilationMode mode, String version)
- throws ExecutionException, IOException, CompilationFailedException {
- runR8AndCheckVerification(mode, version, null);
- }
-
- public void runR8AndCheckVerification(
- CompilationMode mode, String version, Consumer<InternalOptions> optionsConsumer)
- throws ExecutionException, IOException, CompilationFailedException {
- runAndCheckVerification(CompilerUnderTest.R8, mode, version, optionsConsumer);
- }
-
- private void runAndCheckVerification(
- CompilerUnderTest compiler,
- CompilationMode mode,
- String version,
- Consumer<InternalOptions> optionsConsumer)
- throws ExecutionException, IOException, CompilationFailedException {
- runAndCheckVerification(
- compiler,
- mode,
- version + GMSCORE_APK,
- null,
- optionsConsumer,
- ImmutableList.of(Paths.get(version, GMSCORE_APK).toString()));
- }
}
diff --git a/src/test/java/com/android/tools/r8/internal/GMSCoreDeployJarVerificationTest.java b/src/test/java/com/android/tools/r8/internal/GMSCoreDeployJarVerificationTest.java
deleted file mode 100644
index 634ff6f..0000000
--- a/src/test/java/com/android/tools/r8/internal/GMSCoreDeployJarVerificationTest.java
+++ /dev/null
@@ -1,59 +0,0 @@
-// Copyright (c) 2016, 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.internal;
-
-import com.android.tools.r8.CompilationFailedException;
-import com.android.tools.r8.CompilationMode;
-import com.android.tools.r8.DexIndexedConsumer;
-import com.android.tools.r8.R8RunArtTestsTest.CompilerUnderTest;
-import com.android.tools.r8.shaking.ProguardRuleParserException;
-import com.android.tools.r8.utils.AndroidApp;
-import com.android.tools.r8.utils.InternalOptions;
-import java.io.IOException;
-import java.util.Collections;
-import java.util.concurrent.ExecutionException;
-import java.util.function.Consumer;
-import java.util.function.Supplier;
-
-public class GMSCoreDeployJarVerificationTest extends GMSCoreCompilationTestBase {
-
- public AndroidApp buildFromDeployJar(
- CompilerUnderTest compiler, CompilationMode mode, String base, boolean hasReference)
- throws ExecutionException, IOException, ProguardRuleParserException,
- CompilationFailedException {
- return runAndCheckVerification(
- compiler, mode, hasReference ? base + REFERENCE_APK : null, null, base + DEPLOY_JAR);
- }
-
-
- public AndroidApp buildFromDeployJar(
- CompilerUnderTest compiler, CompilationMode mode, String base, boolean hasReference,
- Consumer<InternalOptions> optionsConsumer)
- throws ExecutionException, IOException, ProguardRuleParserException,
- CompilationFailedException {
- return runAndCheckVerification(
- compiler,
- mode,
- hasReference ? base + REFERENCE_APK : null,
- null,
- optionsConsumer,
- Collections.singletonList(base + DEPLOY_JAR));
- }
-
- public AndroidApp buildFromDeployJar(
- CompilerUnderTest compiler, CompilationMode mode, String base, boolean hasReference,
- Consumer<InternalOptions> optionsConsumer, Supplier<DexIndexedConsumer> consumerSupplier)
- throws ExecutionException, IOException, ProguardRuleParserException,
- CompilationFailedException {
- return runAndCheckVerification(
- compiler,
- mode,
- hasReference ? base + REFERENCE_APK : null,
- null,
- optionsConsumer,
- consumerSupplier,
- Collections.singletonList(base + DEPLOY_JAR));
- }
-
-}
diff --git a/src/test/java/com/android/tools/r8/internal/GMSCoreLatestTest.java b/src/test/java/com/android/tools/r8/internal/GMSCoreLatestTest.java
new file mode 100644
index 0000000..3beab34
--- /dev/null
+++ b/src/test/java/com/android/tools/r8/internal/GMSCoreLatestTest.java
@@ -0,0 +1,133 @@
+// Copyright (c) 2019, 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.internal;
+
+import static org.hamcrest.CoreMatchers.containsString;
+import static org.hamcrest.core.AnyOf.anyOf;
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertNull;
+
+import com.android.tools.r8.R8FullTestBuilder;
+import com.android.tools.r8.R8TestCompileResult;
+import com.android.tools.r8.TestParameters;
+import com.android.tools.r8.TestParametersCollection;
+import com.android.tools.r8.ThrowableConsumer;
+import com.android.tools.r8.ToolHelper.DexVm.Version;
+import com.android.tools.r8.utils.AndroidApiLevel;
+import com.android.tools.r8.utils.AssertionUtils;
+import com.google.common.collect.Sets;
+import java.nio.file.Path;
+import java.nio.file.Paths;
+import java.util.Collections;
+import java.util.Map;
+import java.util.concurrent.ConcurrentHashMap;
+import org.junit.BeforeClass;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.junit.runners.Parameterized;
+
+@RunWith(Parameterized.class)
+public class GMSCoreLatestTest extends GMSCoreCompilationTestBase {
+
+ private static final Path base = Paths.get("third_party/gmscore/latest/");
+
+ private static Path sanitizedLibrary;
+ private static Path sanitizedProguardConfiguration;
+
+ private final TestParameters parameters;
+
+ @Parameterized.Parameters(name = "{0}")
+ public static TestParametersCollection data() {
+ return getTestParameters()
+ .withDexRuntime(Version.V9_0_0)
+ .withApiLevel(AndroidApiLevel.L)
+ .build();
+ }
+
+ public GMSCoreLatestTest(TestParameters parameters) {
+ this.parameters = parameters;
+ }
+
+ @BeforeClass
+ public static void setup() throws Exception {
+ LibrarySanitizer librarySanitizer =
+ new LibrarySanitizer(getStaticTemp())
+ .addProguardConfigurationFiles(base.resolve(PG_CONF))
+ .sanitize();
+ sanitizedLibrary = librarySanitizer.getSanitizedLibrary();
+ sanitizedProguardConfiguration = librarySanitizer.getSanitizedProguardConfiguration();
+ }
+
+ @Test
+ public void testR8Determinism() throws Exception {
+ Map<String, String> idsRoundOne = new ConcurrentHashMap<>();
+ R8TestCompileResult compileResult =
+ compileWithR8(
+ builder ->
+ builder.addOptionsModification(
+ options ->
+ options.testing.processingContextsConsumer =
+ id -> assertNull(idsRoundOne.put(id, id))));
+
+ compileResult.runDex2Oat(parameters.getRuntime()).assertNoVerificationErrors();
+
+ Map<String, String> idsRoundTwo = new ConcurrentHashMap<>();
+ R8TestCompileResult otherCompileResult =
+ compileWithR8(
+ builder ->
+ builder.addOptionsModification(
+ options ->
+ options.testing.processingContextsConsumer =
+ id -> {
+ AssertionUtils.assertNotNull(idsRoundOne.get(id));
+ assertNull(idsRoundTwo.put(id, id));
+ }));
+
+ // Verify that the result of the two compilations was the same.
+ assertEquals(
+ Collections.emptySet(),
+ Sets.symmetricDifference(idsRoundOne.keySet(), idsRoundTwo.keySet()));
+ assertIdenticalApplications(compileResult.getApp(), otherCompileResult.getApp());
+ assertEquals(compileResult.getProguardMap(), otherCompileResult.getProguardMap());
+ }
+
+ private R8TestCompileResult compileWithR8(ThrowableConsumer<R8FullTestBuilder> configuration)
+ throws Exception {
+ // Program files are included in Proguard configuration.
+ return testForR8(Backend.DEX)
+ .addLibraryFiles(sanitizedLibrary)
+ .addKeepRuleFiles(sanitizedProguardConfiguration)
+ .addDontWarn(
+ "android.hardware.location.IActivityRecognitionHardware",
+ "android.hardware.location.IFusedLocationHardware",
+ "android.location.FusedBatchOptions",
+ "android.location.GeocoderParams$1",
+ "android.location.ILocationManager",
+ "android.media.IRemoteDisplayCallback",
+ "android.media.RemoteDisplayState$RemoteDisplayInfo",
+ "com.android.internal.location.ProviderProperties",
+ "com.android.internal.location.ProviderRequest",
+ "com.google.protobuf.java_com_google_android_libraries_performance_primes_release"
+ + "_gmscore__primes_bcdd2915GeneratedExtensionRegistryLite$Loader")
+ .allowDiagnosticMessages()
+ .allowUnusedProguardConfigurationRules()
+ .setMinApi(parameters.getApiLevel())
+ .apply(configuration)
+ .compile()
+ .assertAllInfoMessagesMatch(
+ anyOf(
+ containsString("Ignoring option: -optimizations"),
+ containsString(
+ "Invalid parameter counts in MethodParameter attributes. "
+ + "This is likely due to Proguard having removed a parameter."),
+ containsString("Methods with invalid MethodParameter attributes:"),
+ containsString("Proguard configuration rule does not match anything")))
+ .assertAllWarningMessagesMatch(
+ anyOf(
+ containsString(
+ "Expected stack map table for method with non-linear control flow. "
+ + "In later version of R8, the method may be assumed not reachable."),
+ containsString("Ignoring option: -outjars")));
+ }
+}
diff --git a/src/test/java/com/android/tools/r8/internal/GMSCoreV10Test.java b/src/test/java/com/android/tools/r8/internal/GMSCoreV10Test.java
new file mode 100644
index 0000000..30716fb
--- /dev/null
+++ b/src/test/java/com/android/tools/r8/internal/GMSCoreV10Test.java
@@ -0,0 +1,212 @@
+// Copyright (c) 2017, 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.internal;
+
+import static com.android.tools.r8.utils.AssertionUtils.assertNotNull;
+import static org.hamcrest.CoreMatchers.containsString;
+import static org.hamcrest.core.AnyOf.anyOf;
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertNull;
+
+import com.android.tools.r8.D8TestBuilder;
+import com.android.tools.r8.D8TestCompileResult;
+import com.android.tools.r8.R8FullTestBuilder;
+import com.android.tools.r8.R8TestCompileResult;
+import com.android.tools.r8.TestCompilerBuilder;
+import com.android.tools.r8.TestParameters;
+import com.android.tools.r8.TestParametersCollection;
+import com.android.tools.r8.ThrowableConsumer;
+import com.android.tools.r8.ToolHelper.DexVm.Version;
+import com.android.tools.r8.utils.AndroidApiLevel;
+import com.google.common.collect.Sets;
+import java.nio.file.Path;
+import java.nio.file.Paths;
+import java.util.Collections;
+import java.util.Map;
+import java.util.concurrent.ConcurrentHashMap;
+import org.junit.BeforeClass;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.junit.runners.Parameterized;
+
+@RunWith(Parameterized.class)
+public class GMSCoreV10Test extends GMSCoreCompilationTestBase {
+
+ private static final Path base = Paths.get("third_party/gmscore/gmscore_v10/");
+
+ private static Path sanitizedLibrary;
+ private static Path sanitizedProguardConfiguration;
+
+ private final TestParameters parameters;
+
+ @Parameterized.Parameters(name = "{0}")
+ public static TestParametersCollection data() {
+ return getTestParameters()
+ .withDexRuntime(Version.V9_0_0)
+ .withApiLevel(AndroidApiLevel.L)
+ .build();
+ }
+
+ public GMSCoreV10Test(TestParameters parameters) {
+ this.parameters = parameters;
+ }
+
+ @BeforeClass
+ public static void setup() throws Exception {
+ LibrarySanitizer librarySanitizer =
+ new LibrarySanitizer(getStaticTemp())
+ .addProguardConfigurationFiles(base.resolve(PG_CONF))
+ .sanitize();
+ sanitizedLibrary = librarySanitizer.getSanitizedLibrary();
+ sanitizedProguardConfiguration = librarySanitizer.getSanitizedProguardConfiguration();
+ }
+
+ @Test
+ public void testR8Determinism() throws Exception {
+ Map<String, String> idsRoundOne = new ConcurrentHashMap<>();
+ R8TestCompileResult compileResult =
+ compileWithR8(
+ builder ->
+ builder.addOptionsModification(
+ options ->
+ options.testing.processingContextsConsumer =
+ id -> assertNull(idsRoundOne.put(id, id))));
+
+ compileResult.runDex2Oat(parameters.getRuntime()).assertNoVerificationErrors();
+
+ Map<String, String> idsRoundTwo = new ConcurrentHashMap<>();
+ R8TestCompileResult otherCompileResult =
+ compileWithR8(
+ builder ->
+ builder.addOptionsModification(
+ options ->
+ options.testing.processingContextsConsumer =
+ id -> {
+ assertNotNull(idsRoundOne.get(id));
+ assertNull(idsRoundTwo.put(id, id));
+ }));
+
+ // Verify that the result of the two compilations was the same.
+ assertEquals(
+ Collections.emptySet(),
+ Sets.symmetricDifference(idsRoundOne.keySet(), idsRoundTwo.keySet()));
+ assertIdenticalApplications(compileResult.getApp(), otherCompileResult.getApp());
+ assertEquals(compileResult.getProguardMap(), otherCompileResult.getProguardMap());
+ }
+
+ @Test
+ public void testR8ForceJumboStringProcessing() throws Exception {
+ compileWithR8(
+ builder ->
+ builder.addOptionsModification(
+ options -> options.testing.forceJumboStringProcessing = true))
+ .runDex2Oat(parameters.getRuntime())
+ .assertNoVerificationErrors();
+ }
+
+ @Test
+ public void testD8Debug() throws Exception {
+ compileWithD8Debug(ThrowableConsumer.empty());
+ }
+
+ @Test
+ public void testD8DebugLegacyMultidex() throws Exception {
+ compileWithD8Debug(
+ builder ->
+ builder
+ .addMainDexListFiles(base.resolve("main_dex_list.txt"))
+ .setMinApi(AndroidApiLevel.K))
+ .runDex2Oat(parameters.getRuntime())
+ .assertNoVerificationErrors();
+ }
+
+ @Test
+ public void testD8DebugLegacyMultidexDexOpt() throws Exception {
+ compileWithD8Debug(
+ builder ->
+ builder
+ .addMainDexListFiles(base.resolve("main_dex_list.txt"))
+ .setMinApi(AndroidApiLevel.K)
+ .setOptimizeMultidexForLinearAlloc())
+ .runDex2Oat(parameters.getRuntime())
+ .assertNoVerificationErrors();
+ }
+
+ @Test
+ public void testD8Release() throws Exception {
+ compileWithD8Release(ThrowableConsumer.empty())
+ .runDex2Oat(parameters.getRuntime())
+ .assertNoVerificationErrors();
+ }
+
+ @Test
+ public void testD8ReleaseLegacyMultidex() throws Exception {
+ compileWithD8Release(
+ builder ->
+ builder
+ .addMainDexListFiles(base.resolve("main_dex_list.txt"))
+ .setMinApi(AndroidApiLevel.K))
+ .runDex2Oat(parameters.getRuntime())
+ .assertNoVerificationErrors();
+ }
+
+ @Test
+ public void buildD8ReleaseLegacyMultidexDexOpt() throws Exception {
+ compileWithD8Release(
+ builder ->
+ builder
+ .addMainDexListFiles(base.resolve("main_dex_list.txt"))
+ .setMinApi(AndroidApiLevel.K)
+ .setOptimizeMultidexForLinearAlloc())
+ .runDex2Oat(parameters.getRuntime())
+ .assertNoVerificationErrors();
+ }
+
+ private D8TestCompileResult compileWithD8Debug(ThrowableConsumer<D8TestBuilder> configuration)
+ throws Exception {
+ return compileWithD8(configuration.andThen(TestCompilerBuilder::debug));
+ }
+
+ private D8TestCompileResult compileWithD8Release(ThrowableConsumer<D8TestBuilder> configuration)
+ throws Exception {
+ return compileWithD8(configuration.andThen(TestCompilerBuilder::release));
+ }
+
+ private D8TestCompileResult compileWithD8(ThrowableConsumer<D8TestBuilder> configuration)
+ throws Exception {
+ return testForD8()
+ .addProgramFiles(base.resolve(DEPLOY_JAR))
+ .setMinApi(AndroidApiLevel.L)
+ .apply(configuration)
+ .compile();
+ }
+
+ private R8TestCompileResult compileWithR8(ThrowableConsumer<R8FullTestBuilder> configuration)
+ throws Exception {
+ // Program files are included in Proguard configuration.
+ return testForR8(Backend.DEX)
+ .addLibraryFiles(sanitizedLibrary)
+ .addKeepRuleFiles(sanitizedProguardConfiguration)
+ .addDontWarn(
+ "android.hardware.location.IActivityRecognitionHardware",
+ "android.hardware.location.IFusedLocationHardware",
+ "android.location.FusedBatchOptions",
+ "android.location.GeocoderParams$1",
+ "android.location.ILocationManager",
+ "android.media.IRemoteDisplayCallback",
+ "android.media.RemoteDisplayState$RemoteDisplayInfo",
+ "com.android.internal.location.ProviderProperties",
+ "com.android.internal.location.ProviderRequest")
+ .allowDiagnosticMessages()
+ .allowUnusedProguardConfigurationRules()
+ .setMinApi(parameters.getApiLevel())
+ .apply(configuration)
+ .compile()
+ .assertAllInfoMessagesMatch(
+ anyOf(
+ containsString("Ignoring option: -optimizations"),
+ containsString("Proguard configuration rule does not match anything")))
+ .assertAllWarningMessagesMatch(containsString("Ignoring option: -outjars"));
+ }
+}
diff --git a/src/test/java/com/android/tools/r8/internal/LibrarySanitizer.java b/src/test/java/com/android/tools/r8/internal/LibrarySanitizer.java
index 4a256bb..e43dd8e 100644
--- a/src/test/java/com/android/tools/r8/internal/LibrarySanitizer.java
+++ b/src/test/java/com/android/tools/r8/internal/LibrarySanitizer.java
@@ -14,6 +14,7 @@
import java.io.IOException;
import java.nio.file.Path;
import java.util.ArrayList;
+import java.util.Arrays;
import java.util.List;
import org.junit.rules.TemporaryFolder;
@@ -56,6 +57,10 @@
return this;
}
+ LibrarySanitizer addProguardConfigurationFiles(Path... proguardConfigurationFiles) {
+ return addProguardConfigurationFiles(Arrays.asList(proguardConfigurationFiles));
+ }
+
public Path getSanitizedLibrary() {
return sanitizedLibrary;
}
diff --git a/src/test/java/com/android/tools/r8/internal/R8GMSCoreDeterministicTest.java b/src/test/java/com/android/tools/r8/internal/R8GMSCoreDeterministicTest.java
deleted file mode 100644
index cba792d..0000000
--- a/src/test/java/com/android/tools/r8/internal/R8GMSCoreDeterministicTest.java
+++ /dev/null
@@ -1,70 +0,0 @@
-// Copyright (c) 2016, 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.internal;
-
-import static junit.framework.TestCase.assertEquals;
-
-import com.android.tools.r8.CompilationFailedException;
-import com.android.tools.r8.DexIndexedConsumer;
-import com.android.tools.r8.OutputMode;
-import com.android.tools.r8.R8Command;
-import com.android.tools.r8.ToolHelper;
-import com.android.tools.r8.utils.AndroidApiLevel;
-import com.android.tools.r8.utils.AndroidApp;
-import com.android.tools.r8.utils.IROrdering.NondeterministicIROrdering;
-import java.nio.file.Path;
-import java.nio.file.Paths;
-import org.junit.Test;
-
-public class R8GMSCoreDeterministicTest extends GMSCoreCompilationTestBase {
-
- private static class CompilationResult {
- AndroidApp app;
- String proguardMap;
- }
-
- private CompilationResult doRun() throws CompilationFailedException {
- R8Command command =
- R8Command.builder()
- .setDisableTreeShaking(true)
- .setDisableMinification(true)
- .addProgramFiles(Paths.get(GMSCORE_V7_DIR, GMSCORE_APK))
- .setProgramConsumer(DexIndexedConsumer.emptyConsumer())
- .setMinApiLevel(AndroidApiLevel.L.getLevel())
- .build();
- CompilationResult result = new CompilationResult();
- result.app =
- ToolHelper.runR8(
- command,
- options -> {
- // For this test just do random shuffle.
- options.testing.irOrdering = NondeterministicIROrdering.getInstance();
- // Only use one thread to process to process in the order decided by the callback.
- options.threadCount = 1;
- // Ignore the missing classes.
- options.ignoreMissingClasses = true;
- // Store the generated Proguard map.
- options.proguardMapConsumer =
- ToolHelper.consumeString(proguardMap -> result.proguardMap = proguardMap);
- });
- return result;
- }
-
- @Test
- public void deterministic() throws Exception {
- // Run two independent compilations.
- CompilationResult result1 = doRun();
- CompilationResult result2 = doRun();
-
- // Check that the generated bytecode runs through the dex2oat verifier with no errors.
- Path combinedInput = temp.getRoot().toPath().resolve("all.jar");
- Path oatFile = temp.getRoot().toPath().resolve("all.oat");
- result1.app.writeToZip(combinedInput, OutputMode.DexIndexed);
- ToolHelper.runDex2Oat(combinedInput, oatFile);
-
- // Verify that the result of the two compilations was the same.
- assertIdenticalApplications(result1.app, result2.app);
- assertEquals(result1.proguardMap, result2.proguardMap);
- }
-}
diff --git a/src/test/java/com/android/tools/r8/internal/R8GMSCoreFixedPointTest.java b/src/test/java/com/android/tools/r8/internal/R8GMSCoreFixedPointTest.java
deleted file mode 100644
index 67979ba..0000000
--- a/src/test/java/com/android/tools/r8/internal/R8GMSCoreFixedPointTest.java
+++ /dev/null
@@ -1,48 +0,0 @@
-// Copyright (c) 2016, 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.internal;
-
-import com.android.tools.r8.CompilationMode;
-import com.android.tools.r8.ToolHelper;
-import com.android.tools.r8.utils.AndroidApiLevel;
-import com.android.tools.r8.utils.AndroidApp;
-import com.android.tools.r8.utils.InternalOptions;
-import java.nio.file.Paths;
-import org.junit.Test;
-
-public class R8GMSCoreFixedPointTest extends GMSCoreCompilationTestBase {
-
- @Test
- public void fixedPoint() throws Exception {
- // First compilation.
- AndroidApp app = ToolHelper.builderFromProgramDirectory(Paths.get(GMSCORE_V7_DIR)).build();
-
- AndroidApp app1 =
- ToolHelper.runR8(
- ToolHelper.prepareR8CommandBuilder(app)
- .setMode(CompilationMode.DEBUG)
- .setMinApiLevel(AndroidApiLevel.L.getLevel())
- .build(),
- this::configure);
-
- // Second compilation.
- // Add option --skip-outline-opt for second compilation. The second compilation can find
- // additional outlining opportunities as member rebinding from the first compilation can move
- // methods.
- // See b/33410508 and b/33475705.
- AndroidApp app2 =
- ToolHelper.runR8(
- ToolHelper.prepareR8CommandBuilder(app1)
- .setMode(CompilationMode.DEBUG)
- .setMinApiLevel(AndroidApiLevel.L.getLevel())
- .build(),
- this::configure);
-
- assertIdenticalApplicationsUpToCode(app1, app2, false);
- }
-
- private void configure(InternalOptions options) {
- options.ignoreMissingClasses = true;
- }
-}
diff --git a/src/test/java/com/android/tools/r8/internal/R8GMSCoreLatestTreeShakeJarVerificationTest.java b/src/test/java/com/android/tools/r8/internal/R8GMSCoreLatestTreeShakeJarVerificationTest.java
deleted file mode 100644
index d4e1e43..0000000
--- a/src/test/java/com/android/tools/r8/internal/R8GMSCoreLatestTreeShakeJarVerificationTest.java
+++ /dev/null
@@ -1,71 +0,0 @@
-// Copyright (c) 2019, 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.internal;
-
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertNotNull;
-import static org.junit.Assert.assertNull;
-
-import com.android.tools.r8.CompilationMode;
-import com.android.tools.r8.ToolHelper;
-import com.android.tools.r8.utils.AndroidApp;
-import com.google.common.collect.ImmutableList;
-import com.google.common.collect.Sets;
-import java.util.Collections;
-import java.util.List;
-import java.util.Map;
-import java.util.concurrent.ConcurrentHashMap;
-import org.junit.Test;
-
-public class R8GMSCoreLatestTreeShakeJarVerificationTest
- extends R8GMSCoreTreeShakeJarVerificationTest {
-
- private String proguardMap1 = null;
- private String proguardMap2 = null;
-
- @Test
- public void buildAndTreeShakeFromDeployJar() throws Exception {
- List<String> additionalProguardConfiguration =
- ImmutableList.of(
- ToolHelper.PROGUARD_SETTINGS_FOR_INTERNAL_APPS + "GmsCore_proguard.config");
- Map<String, String> idsRoundOne = new ConcurrentHashMap<>();
- AndroidApp app1 =
- buildAndTreeShakeFromDeployJar(
- CompilationMode.RELEASE,
- GMSCORE_LATEST_DIR,
- false,
- GMSCORE_LATEST_MAX_SIZE,
- additionalProguardConfiguration,
- options -> {
- options.testing.processingContextsConsumer =
- id -> assertNull(idsRoundOne.put(id, id));
- options.proguardMapConsumer =
- ToolHelper.consumeString(proguardMap -> this.proguardMap1 = proguardMap);
- });
- Map<String, String> idsRoundTwo = new ConcurrentHashMap<>();
- AndroidApp app2 =
- buildAndTreeShakeFromDeployJar(
- CompilationMode.RELEASE,
- GMSCORE_LATEST_DIR,
- false,
- GMSCORE_LATEST_MAX_SIZE,
- additionalProguardConfiguration,
- options -> {
- options.testing.processingContextsConsumer =
- id -> {
- assertNotNull(idsRoundOne.get(id));
- assertNull(idsRoundTwo.put(id, id));
- };
- options.proguardMapConsumer =
- ToolHelper.consumeString(proguardMap -> this.proguardMap2 = proguardMap);
- });
-
- // Verify that the result of the two compilations was the same.
- assertEquals(
- Collections.emptySet(),
- Sets.symmetricDifference(idsRoundOne.keySet(), idsRoundTwo.keySet()));
- assertIdenticalApplications(app1, app2);
- assertEquals(proguardMap1, proguardMap2);
- }
-}
diff --git a/src/test/java/com/android/tools/r8/internal/R8GMSCoreTreeShakeJarVerificationTest.java b/src/test/java/com/android/tools/r8/internal/R8GMSCoreTreeShakeJarVerificationTest.java
deleted file mode 100644
index c577d60..0000000
--- a/src/test/java/com/android/tools/r8/internal/R8GMSCoreTreeShakeJarVerificationTest.java
+++ /dev/null
@@ -1,54 +0,0 @@
-// Copyright (c) 2016, 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.internal;
-
-import static org.junit.Assert.assertTrue;
-
-import com.android.tools.r8.CompilationMode;
-import com.android.tools.r8.R8RunArtTestsTest.CompilerUnderTest;
-import com.android.tools.r8.utils.AndroidApp;
-import com.android.tools.r8.utils.InternalOptions;
-import com.google.common.collect.ImmutableList;
-import java.util.ArrayList;
-import java.util.List;
-import java.util.function.Consumer;
-
-public class R8GMSCoreTreeShakeJarVerificationTest extends GMSCoreCompilationTestBase {
-
- public AndroidApp buildAndTreeShakeFromDeployJar(
- CompilationMode mode,
- String base,
- boolean hasReference,
- int maxSize,
- Consumer<InternalOptions> optionsConsumer)
- throws Exception {
- return buildAndTreeShakeFromDeployJar(
- mode, base, hasReference, maxSize, ImmutableList.of(), optionsConsumer);
- }
-
- public AndroidApp buildAndTreeShakeFromDeployJar(
- CompilationMode mode,
- String base,
- boolean hasReference,
- int maxSize,
- List<String> additionalProguardConfigurations,
- Consumer<InternalOptions> optionsConsumer)
- throws Exception {
- List<String> proguardConfigurations = new ArrayList<>(additionalProguardConfigurations);
- proguardConfigurations.add(base + PG_CONF);
- AndroidApp app =
- runAndCheckVerification(
- CompilerUnderTest.R8,
- mode,
- hasReference ? base + REFERENCE_APK : null,
- proguardConfigurations,
- optionsConsumer,
- // Don't pass any inputs. The input will be read from the -injars in the Proguard
- // configuration file.
- ImmutableList.of());
- int bytes = app.applicationSize();
- assertTrue("Expected max size of " + maxSize + ", got " + bytes, bytes < maxSize);
- return app;
- }
-}
diff --git a/src/test/java/com/android/tools/r8/internal/R8GMSCoreV10DeployJarVerificationTest.java b/src/test/java/com/android/tools/r8/internal/R8GMSCoreV10DeployJarVerificationTest.java
deleted file mode 100644
index 2c2adbf..0000000
--- a/src/test/java/com/android/tools/r8/internal/R8GMSCoreV10DeployJarVerificationTest.java
+++ /dev/null
@@ -1,74 +0,0 @@
-// Copyright (c) 2017, 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.internal;
-
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertNotNull;
-import static org.junit.Assert.assertNull;
-
-import com.android.tools.r8.CompilationMode;
-import com.android.tools.r8.DexIndexedConsumer.ArchiveConsumer;
-import com.android.tools.r8.R8RunArtTestsTest.CompilerUnderTest;
-import com.android.tools.r8.ToolHelper;
-import com.android.tools.r8.utils.AndroidApp;
-import com.google.common.collect.Sets;
-import java.io.File;
-import java.util.Collections;
-import java.util.Map;
-import java.util.concurrent.ConcurrentHashMap;
-import org.junit.Test;
-
-public class R8GMSCoreV10DeployJarVerificationTest extends GMSCoreDeployJarVerificationTest {
-
- private String proguardMap1 = null;
- private String proguardMap2 = null;
-
- @Test
- public void buildFromDeployJar() throws Exception {
- File tempFolder = temp.newFolder();
- File app1Zip = new File(tempFolder, "app1.zip");
- Map<String, String> idsRoundOne = new ConcurrentHashMap<>();
- AndroidApp app1 =
- buildFromDeployJar(
- CompilerUnderTest.R8,
- CompilationMode.RELEASE,
- GMSCoreCompilationTestBase.GMSCORE_V10_DIR,
- false,
- options -> {
- options.testing.processingContextsConsumer =
- id -> assertNull(idsRoundOne.put(id, id));
- options.proguardMapConsumer =
- ToolHelper.consumeString(proguardMap -> this.proguardMap1 = proguardMap);
- },
- () -> new ArchiveConsumer(app1Zip.toPath(), true));
-
- File app2Zip = new File(tempFolder, "app2.zip");
- Map<String, String> idsRoundTwo = new ConcurrentHashMap<>();
- AndroidApp app2 =
- buildFromDeployJar(
- CompilerUnderTest.R8,
- CompilationMode.RELEASE,
- GMSCoreCompilationTestBase.GMSCORE_V10_DIR,
- false,
- options -> {
- options.testing.processingContextsConsumer =
- id -> {
- assertNotNull(idsRoundOne.get(id));
- assertNull(idsRoundTwo.put(id, id));
- };
- options.proguardMapConsumer =
- ToolHelper.consumeString(proguardMap -> this.proguardMap2 = proguardMap);
- },
- () -> new ArchiveConsumer(app2Zip.toPath(), true));
-
- // Verify that the result of the two compilations was the same.
- assertEquals(
- Collections.emptySet(),
- Sets.symmetricDifference(idsRoundOne.keySet(), idsRoundTwo.keySet()));
- assertIdenticalApplications(app1, app2);
- assertIdenticalZipFiles(app1Zip, app2Zip);
- assertEquals(proguardMap1, proguardMap2);
- }
-}
diff --git a/src/test/java/com/android/tools/r8/internal/R8GMSCoreV10JumboStringTest.java b/src/test/java/com/android/tools/r8/internal/R8GMSCoreV10JumboStringTest.java
deleted file mode 100644
index 365dc58..0000000
--- a/src/test/java/com/android/tools/r8/internal/R8GMSCoreV10JumboStringTest.java
+++ /dev/null
@@ -1,20 +0,0 @@
-// Copyright (c) 2019, 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.internal;
-
-import com.android.tools.r8.CompilationMode;
-import org.junit.Test;
-
-public class R8GMSCoreV10JumboStringTest extends R8GMSCoreTreeShakeJarVerificationTest {
-
- @Test
- public void verify() throws Exception {
- buildAndTreeShakeFromDeployJar(
- CompilationMode.RELEASE,
- GMSCORE_V10_DIR,
- false,
- GMSCORE_V10_MAX_SIZE,
- options -> options.testing.forceJumboStringProcessing = true);
- }
-}
diff --git a/src/test/java/com/android/tools/r8/internal/R8GMSCoreV10TreeShakeJarVerificationTest.java b/src/test/java/com/android/tools/r8/internal/R8GMSCoreV10TreeShakeJarVerificationTest.java
deleted file mode 100644
index dc78be2..0000000
--- a/src/test/java/com/android/tools/r8/internal/R8GMSCoreV10TreeShakeJarVerificationTest.java
+++ /dev/null
@@ -1,64 +0,0 @@
-// Copyright (c) 2017, 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.internal;
-
-import static com.android.tools.r8.utils.AssertionUtils.assertNotNull;
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertNull;
-
-import com.android.tools.r8.CompilationMode;
-import com.android.tools.r8.ToolHelper;
-import com.android.tools.r8.utils.AndroidApp;
-import com.google.common.collect.Sets;
-import java.util.Collections;
-import java.util.Map;
-import java.util.concurrent.ConcurrentHashMap;
-import org.junit.Test;
-
-public class R8GMSCoreV10TreeShakeJarVerificationTest
- extends R8GMSCoreTreeShakeJarVerificationTest {
-
- private String proguardMap1 = null;
- private String proguardMap2 = null;
-
- @Test
- public void buildAndTreeShakeFromDeployJar() throws Exception {
- Map<String, String> idsRoundOne = new ConcurrentHashMap<>();
- AndroidApp app1 =
- buildAndTreeShakeFromDeployJar(
- CompilationMode.RELEASE,
- GMSCORE_V10_DIR,
- false,
- GMSCORE_V10_MAX_SIZE,
- options -> {
- options.testing.processingContextsConsumer =
- id -> assertNull(idsRoundOne.put(id, id));
- options.proguardMapConsumer =
- ToolHelper.consumeString(proguardMap -> this.proguardMap1 = proguardMap);
- });
- Map<String, String> idsRoundTwo = new ConcurrentHashMap<>();
- AndroidApp app2 =
- buildAndTreeShakeFromDeployJar(
- CompilationMode.RELEASE,
- GMSCORE_V10_DIR,
- false,
- GMSCORE_V10_MAX_SIZE,
- options -> {
- options.testing.processingContextsConsumer =
- id -> {
- assertNotNull(idsRoundOne.get(id));
- assertNull(idsRoundTwo.put(id, id));
- };
- options.proguardMapConsumer =
- ToolHelper.consumeString(proguardMap -> this.proguardMap2 = proguardMap);
- });
-
- // Verify that the result of the two compilations was the same.
- assertEquals(
- Collections.emptySet(),
- Sets.symmetricDifference(idsRoundOne.keySet(), idsRoundTwo.keySet()));
- assertIdenticalApplications(app1, app2);
- assertEquals(proguardMap1, proguardMap2);
- }
-}
diff --git a/src/test/java/com/android/tools/r8/internal/R8GMSCoreV4VerificationTest.java b/src/test/java/com/android/tools/r8/internal/R8GMSCoreV4VerificationTest.java
deleted file mode 100644
index 1b650e5..0000000
--- a/src/test/java/com/android/tools/r8/internal/R8GMSCoreV4VerificationTest.java
+++ /dev/null
@@ -1,14 +0,0 @@
-// Copyright (c) 2016, 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.internal;
-
-import com.android.tools.r8.CompilationMode;
-import org.junit.Test;
-
-public class R8GMSCoreV4VerificationTest extends GMSCoreCompilationTestBase {
- @Test
- public void verify() throws Exception {
- runR8AndCheckVerification(CompilationMode.RELEASE, GMSCORE_V4_DIR);
- }
-}
diff --git a/src/test/java/com/android/tools/r8/internal/R8GMSCoreV5VerificationTest.java b/src/test/java/com/android/tools/r8/internal/R8GMSCoreV5VerificationTest.java
deleted file mode 100644
index df73644..0000000
--- a/src/test/java/com/android/tools/r8/internal/R8GMSCoreV5VerificationTest.java
+++ /dev/null
@@ -1,14 +0,0 @@
-// Copyright (c) 2016, 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.internal;
-
-import com.android.tools.r8.CompilationMode;
-import org.junit.Test;
-
-public class R8GMSCoreV5VerificationTest extends GMSCoreCompilationTestBase {
- @Test
- public void verify() throws Exception {
- runR8AndCheckVerification(CompilationMode.RELEASE, GMSCORE_V5_DIR);
- }
-}
diff --git a/src/test/java/com/android/tools/r8/internal/R8GMSCoreV6VerificationTest.java b/src/test/java/com/android/tools/r8/internal/R8GMSCoreV6VerificationTest.java
deleted file mode 100644
index a872ff5..0000000
--- a/src/test/java/com/android/tools/r8/internal/R8GMSCoreV6VerificationTest.java
+++ /dev/null
@@ -1,14 +0,0 @@
-// Copyright (c) 2016, 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.internal;
-
-import com.android.tools.r8.CompilationMode;
-import org.junit.Test;
-
-public class R8GMSCoreV6VerificationTest extends GMSCoreCompilationTestBase {
- @Test
- public void verify() throws Exception {
- runR8AndCheckVerification(CompilationMode.RELEASE, GMSCORE_V6_DIR);
- }
-}
diff --git a/src/test/java/com/android/tools/r8/internal/R8GMSCoreV7VerificationTest.java b/src/test/java/com/android/tools/r8/internal/R8GMSCoreV7VerificationTest.java
deleted file mode 100644
index 2cda255..0000000
--- a/src/test/java/com/android/tools/r8/internal/R8GMSCoreV7VerificationTest.java
+++ /dev/null
@@ -1,15 +0,0 @@
-// Copyright (c) 2016, 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.internal;
-
-import com.android.tools.r8.CompilationMode;
-import org.junit.Test;
-
-public class R8GMSCoreV7VerificationTest extends GMSCoreCompilationTestBase {
-
- @Test
- public void verify() throws Exception {
- runR8AndCheckVerification(CompilationMode.RELEASE, GMSCORE_V7_DIR);
- }
-}
diff --git a/src/test/java/com/android/tools/r8/internal/R8GMSCoreV8VerificationTest.java b/src/test/java/com/android/tools/r8/internal/R8GMSCoreV8VerificationTest.java
deleted file mode 100644
index 3f48336..0000000
--- a/src/test/java/com/android/tools/r8/internal/R8GMSCoreV8VerificationTest.java
+++ /dev/null
@@ -1,15 +0,0 @@
-// Copyright (c) 2016, 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.internal;
-
-import com.android.tools.r8.CompilationMode;
-import org.junit.Test;
-
-public class R8GMSCoreV8VerificationTest extends GMSCoreCompilationTestBase {
-
- @Test
- public void verify() throws Exception {
- runR8AndCheckVerification(CompilationMode.RELEASE, GMSCORE_V8_DIR);
- }
-}
diff --git a/src/test/java/com/android/tools/r8/internal/R8GMSCoreV9DeployJarVerificationTest.java b/src/test/java/com/android/tools/r8/internal/R8GMSCoreV9DeployJarVerificationTest.java
deleted file mode 100644
index fb06e84..0000000
--- a/src/test/java/com/android/tools/r8/internal/R8GMSCoreV9DeployJarVerificationTest.java
+++ /dev/null
@@ -1,19 +0,0 @@
-// Copyright (c) 2017, 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.internal;
-
-import com.android.tools.r8.CompilationMode;
-import com.android.tools.r8.R8RunArtTestsTest.CompilerUnderTest;
-import org.junit.Test;
-
-public class R8GMSCoreV9DeployJarVerificationTest extends GMSCoreDeployJarVerificationTest {
-
- @Test
- public void buildFromDeployJar() throws Exception {
- buildFromDeployJar(
- CompilerUnderTest.R8, CompilationMode.RELEASE,
- GMSCoreCompilationTestBase.GMSCORE_V9_DIR, true);
- }
-}
diff --git a/src/test/java/com/android/tools/r8/internal/R8GMSCoreV9TreeShakeJarVerificationTest.java b/src/test/java/com/android/tools/r8/internal/R8GMSCoreV9TreeShakeJarVerificationTest.java
deleted file mode 100644
index a9e28c9..0000000
--- a/src/test/java/com/android/tools/r8/internal/R8GMSCoreV9TreeShakeJarVerificationTest.java
+++ /dev/null
@@ -1,24 +0,0 @@
-// Copyright (c) 2017, 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.internal;
-
-import com.android.tools.r8.CompilationMode;
-import com.android.tools.r8.StringConsumer.FileConsumer;
-import java.io.File;
-import java.nio.file.Path;
-import org.junit.Test;
-
-public class R8GMSCoreV9TreeShakeJarVerificationTest extends R8GMSCoreTreeShakeJarVerificationTest {
-
- @Test
- public void buildAndTreeShakeFromDeployJar() throws Exception {
- Path proguardMapPath = File.createTempFile("mapping", ".txt", temp.getRoot()).toPath();
- buildAndTreeShakeFromDeployJar(
- CompilationMode.RELEASE,
- GMSCORE_V9_DIR,
- true,
- GMSCORE_V9_MAX_SIZE,
- options -> options.proguardMapConsumer = new FileConsumer(proguardMapPath));
- }
-}