Move VarHandleTest to java 9 package
Change-Id: I42f04668ebf23874fd407af6257dc5200c83ed0e
diff --git a/src/test/java/com/android/tools/r8/cf/methodhandles/VarHandleTest.java b/src/test/examplesJava9/varhandle/VarHandleTest.java
similarity index 84%
rename from src/test/java/com/android/tools/r8/cf/methodhandles/VarHandleTest.java
rename to src/test/examplesJava9/varhandle/VarHandleTest.java
index 6e9644c..be31a28 100644
--- a/src/test/java/com/android/tools/r8/cf/methodhandles/VarHandleTest.java
+++ b/src/test/examplesJava9/varhandle/VarHandleTest.java
@@ -2,7 +2,7 @@
// 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.cf.methodhandles;
+package varhandle;
import static com.android.tools.r8.DiagnosticsMatcher.diagnosticType;
import static org.hamcrest.CoreMatchers.containsString;
@@ -15,11 +15,9 @@
import com.android.tools.r8.TestRuntime.CfVm;
import com.android.tools.r8.ToolHelper.DexVm.Version;
import com.android.tools.r8.errors.UnsupportedInvokePolymorphicMethodHandleDiagnostic;
-import com.android.tools.r8.examples.JavaExampleClassProxy;
import com.android.tools.r8.utils.AndroidApiLevel;
import com.android.tools.r8.utils.StringUtils;
import com.google.common.collect.ImmutableList;
-import java.nio.file.Path;
import java.util.List;
import org.junit.Test;
import org.junit.runner.RunWith;
@@ -30,11 +28,6 @@
@RunWith(Parameterized.class)
public class VarHandleTest extends TestBase {
- private static final String PKG = "varhandle";
- private static final String EXAMPLE = "examplesJava9/" + PKG;
- private final JavaExampleClassProxy MAIN =
- new JavaExampleClassProxy(EXAMPLE, PKG + ".VarHandleTests");
-
private static final String EXPECTED = StringUtils.lines("true", "false");
private final TestParameters parameters;
@@ -71,16 +64,16 @@
&& parameters.getApiLevel().isGreaterThanOrEqualTo(AndroidApiLevel.T);
}
- public List<Path> getProgramInputs() {
- return ImmutableList.of(JavaExampleClassProxy.examplesJar(EXAMPLE));
+ public List<Class<?>> getProgramInputs() {
+ return ImmutableList.of(VarHandleTest.class);
}
@Test
public void testReference() throws Throwable {
parameters.assumeJvmTestParameters();
testForJvm(parameters)
- .addProgramFiles(getProgramInputs())
- .run(parameters.getRuntime(), MAIN.typeName())
+ .addProgramClasses(getProgramInputs())
+ .run(parameters.getRuntime(), VarHandleTest.class)
.assertSuccessWithOutput(EXPECTED);
}
@@ -91,7 +84,7 @@
"TODO(b/204855476): The default VM throws unsupported. Ignore it and reconsider for 8.0.0",
parameters.isDexRuntimeVersion(Version.DEFAULT));
testForD8()
- .addProgramFiles(getProgramInputs())
+ .addProgramClasses(getProgramInputs())
.setMinApi(parameters)
.compileWithExpectedDiagnostics(
diagnostics -> {
@@ -104,7 +97,7 @@
.assertOnlyWarnings();
}
})
- .run(parameters.getRuntime(), MAIN.typeName())
+ .run(parameters.getRuntime(), VarHandleTest.class)
.applyIf(
!hasMethodHandlesClass(),
r ->
@@ -126,11 +119,11 @@
// This just tests R8 on the targets where the program is fully supported.
assumeTrue(hasInvokePolymorphicCompileSupport() && hasFindStaticVarHandleMethod());
testForR8(parameters.getBackend())
- .addProgramFiles(getProgramInputs())
+ .addProgramClasses(getProgramInputs())
.setMinApi(parameters)
- .addKeepClassAndMembersRules(MAIN.typeName())
+ .addKeepClassAndMembersRules(VarHandleTest.class)
.applyIf(!hasVarHandleInLibrary(), b -> b.addDontWarn("java.lang.invoke.VarHandle"))
- .run(parameters.getRuntime(), MAIN.typeName())
+ .run(parameters.getRuntime(), VarHandleTest.class)
.assertSuccessWithOutput(EXPECTED);
}
}
diff --git a/src/test/java/com/android/tools/r8/examples/JavaExampleClassProxy.java b/src/test/java/com/android/tools/r8/examples/JavaExampleClassProxy.java
deleted file mode 100644
index 6eb4ae4..0000000
--- a/src/test/java/com/android/tools/r8/examples/JavaExampleClassProxy.java
+++ /dev/null
@@ -1,59 +0,0 @@
-// Copyright (c) 2020, 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.examples;
-
-import com.android.tools.r8.ToolHelper;
-import com.android.tools.r8.references.ClassReference;
-import com.android.tools.r8.references.Reference;
-import com.android.tools.r8.utils.DescriptorUtils;
-import com.android.tools.r8.utils.StringUtils;
-import com.google.common.io.ByteStreams;
-import java.io.IOException;
-import java.nio.file.Files;
-import java.nio.file.Path;
-import java.nio.file.Paths;
-import java.util.zip.ZipFile;
-
-public class JavaExampleClassProxy {
-
- private final String examplesFolder;
- private final String binaryName;
-
- public JavaExampleClassProxy(String examples, String binaryName) {
- this.examplesFolder = examples;
- this.binaryName = binaryName;
- }
-
- public static Path examplesJar(String examplesFolder) {
- return Paths.get(ToolHelper.BUILD_DIR, "test", examplesFolder + ".jar");
- }
-
- public byte[] bytes() {
- Path examplePath = examplesJar(examplesFolder);
- if (!Files.exists(examplePath)) {
- throw new RuntimeException(
- "Could not find path "
- + examplePath
- + ". Build "
- + examplesFolder
- + " by running tools/gradle.py build"
- + StringUtils.capitalize(examplesFolder));
- }
- try (ZipFile zipFile = new ZipFile(examplePath.toFile())) {
- return ByteStreams.toByteArray(
- zipFile.getInputStream(zipFile.getEntry(binaryName + ".class")));
- } catch (IOException e) {
- throw new RuntimeException("Could not read zip-entry from " + examplePath.toString(), e);
- }
- }
-
- public String typeName() {
- return DescriptorUtils.getJavaTypeFromBinaryName(binaryName);
- }
-
- public ClassReference getClassReference() {
- return Reference.classFromBinaryName(binaryName);
- }
-}