| // Copyright (c) 2018, 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.resource; |
| |
| import com.android.tools.r8.ClassFileConsumer; |
| import com.android.tools.r8.CompilationFailedException; |
| import com.android.tools.r8.DexIndexedConsumer; |
| import com.android.tools.r8.R8Command; |
| import com.android.tools.r8.TestBase; |
| import com.android.tools.r8.TestBase.Backend; |
| import com.android.tools.r8.ToolHelper; |
| import com.android.tools.r8.ToolHelper.ProcessResult; |
| import com.android.tools.r8.origin.Origin; |
| import com.android.tools.r8.utils.FileUtils; |
| import com.android.tools.r8.utils.TestDescriptionWatcher; |
| import com.google.common.collect.ImmutableList; |
| import java.io.IOException; |
| import java.nio.file.Path; |
| import java.nio.file.Paths; |
| import org.junit.Assert; |
| import org.junit.Rule; |
| import org.junit.Test; |
| import org.junit.rules.TemporaryFolder; |
| import org.junit.runner.RunWith; |
| import org.junit.runners.Parameterized; |
| |
| @RunWith(Parameterized.class) |
| public class DataResourceTest { |
| |
| private TestBase.Backend backend; |
| |
| @Parameterized.Parameters(name = "Backend: {0}") |
| public static Backend[] data() { |
| return ToolHelper.getBackends(); |
| } |
| |
| public DataResourceTest(TestBase.Backend backend) { |
| this.backend = backend; |
| } |
| |
| @Rule |
| public TemporaryFolder temp = ToolHelper.getTemporaryFolderForTest(); |
| |
| @Rule |
| public TestDescriptionWatcher watcher = new TestDescriptionWatcher(); |
| |
| @Test |
| public void dataResourceTest() throws IOException, CompilationFailedException { |
| String packageName = "dataresource"; |
| String mainClassName = packageName + ".ResourceTest"; |
| Path inputJar = Paths.get(ToolHelper.EXAMPLES_BUILD_DIR, |
| packageName + FileUtils.JAR_EXTENSION); |
| |
| ProcessResult referenceResult = ToolHelper.runJava(inputJar, mainClassName); |
| |
| assert backend == Backend.DEX || backend == Backend.CF; |
| Path r8Out = temp.getRoot().toPath().resolve("r8out.jar"); |
| R8Command.Builder builder = |
| R8Command.builder() |
| .setDisableTreeShaking(true) |
| .setDisableMinification(true) |
| .addProgramFiles(inputJar) |
| .addProguardConfiguration(ImmutableList.of("-keepdirectories"), Origin.unknown()) |
| .setProgramConsumer( |
| backend == Backend.DEX |
| ? new DexIndexedConsumer.ArchiveConsumer(r8Out, true) |
| : new ClassFileConsumer.ArchiveConsumer(r8Out, true)); |
| ToolHelper.runR8(builder.build()); |
| |
| ProcessResult r8Result; |
| if (backend == Backend.DEX) { |
| r8Result = ToolHelper.runArtRaw(r8Out.toString(), mainClassName); |
| } else { |
| r8Result = ToolHelper.runJava(r8Out, mainClassName); |
| } |
| Assert.assertEquals(referenceResult.stdout, r8Result.stdout); |
| } |
| } |