| // 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.utils; |
| |
| import static org.junit.Assert.assertEquals; |
| |
| import com.android.tools.r8.ToolHelper; |
| import com.android.tools.r8.ToolHelper.ArtCommandBuilder; |
| import com.android.tools.r8.ToolHelper.DexVm; |
| import com.android.tools.r8.ToolHelper.DexVm.Kind; |
| import org.junit.Assert; |
| import org.junit.Assume; |
| import org.junit.Before; |
| import org.junit.Test; |
| |
| public class ArtCommandBuilderTest { |
| |
| private static final String SCRIPT = |
| System.getProperty("os.name").startsWith("Linux") ? "/bin/bash " : "tools/docker/run.sh "; |
| |
| @Before |
| public void setUp() { |
| Assume.assumeTrue(ToolHelper.artSupported()); |
| Assume.assumeTrue(ToolHelper.getDexVm().getKind() == Kind.HOST); |
| } |
| |
| @Test |
| public void noArguments() { |
| ArtCommandBuilder builder = new ArtCommandBuilder(); |
| Assert.assertEquals(SCRIPT + ToolHelper.getArtBinary(), builder.build()); |
| } |
| |
| @Test |
| public void simple() { |
| ToolHelper.ArtCommandBuilder builder = new ToolHelper.ArtCommandBuilder(); |
| builder.appendClasspath("xxx.dex").setMainClass("Test"); |
| assertEquals(SCRIPT + ToolHelper.getArtBinary() + " -cp xxx.dex Test", builder.build()); |
| } |
| |
| @Test |
| public void classpath() { |
| ToolHelper.ArtCommandBuilder builder = new ToolHelper.ArtCommandBuilder(); |
| builder.appendClasspath("xxx.dex").appendClasspath("yyy.jar"); |
| assertEquals(SCRIPT + ToolHelper.getArtBinary() + " -cp xxx.dex:yyy.jar", |
| builder.build()); |
| } |
| |
| @Test |
| public void artOptions() { |
| ToolHelper.ArtCommandBuilder builder = new ToolHelper.ArtCommandBuilder(); |
| builder.appendArtOption("-d").appendArtOption("--test"); |
| assertEquals(SCRIPT + ToolHelper.getArtBinary() + " -d --test", builder.build()); |
| } |
| |
| @Test |
| public void artSystemProperties() { |
| ToolHelper.ArtCommandBuilder builder = new ToolHelper.ArtCommandBuilder(); |
| builder.appendArtSystemProperty("a.b.c", "1").appendArtSystemProperty("x.y.z", "2"); |
| assertEquals(SCRIPT + ToolHelper.getArtBinary() + " -Da.b.c=1 -Dx.y.z=2", |
| builder.build()); |
| } |
| |
| @Test |
| public void programOptions() { |
| ToolHelper.ArtCommandBuilder builder = new ToolHelper.ArtCommandBuilder(); |
| builder.setMainClass("Test").appendProgramArgument("hello").appendProgramArgument("world"); |
| assertEquals(SCRIPT + ToolHelper.getArtBinary() + " Test hello world", builder.build()); |
| } |
| |
| @Test |
| public void allOfTheAbove() { |
| ToolHelper.ArtCommandBuilder builder = new ToolHelper.ArtCommandBuilder(); |
| builder |
| .appendArtOption("-d") |
| .appendArtOption("--test") |
| .appendArtSystemProperty("a.b.c", "1") |
| .appendArtSystemProperty("x.y.z", "2") |
| .appendClasspath("xxx.dex") |
| .appendClasspath("yyy.jar") |
| .setMainClass("Test") |
| .appendProgramArgument("hello") |
| .appendProgramArgument("world"); |
| assertEquals( |
| SCRIPT + ToolHelper.getArtBinary() |
| + " -d --test -Da.b.c=1 -Dx.y.z=2 -cp xxx.dex:yyy.jar Test hello world", |
| builder.build()); |
| } |
| |
| @Test |
| public void allOfTheAboveWithClasspathAndSystemPropertiesBeforeOptions() { |
| ToolHelper.ArtCommandBuilder builder = new ToolHelper.ArtCommandBuilder(); |
| builder |
| .appendClasspath("xxx.dex") |
| .appendClasspath("yyy.jar") |
| .appendArtSystemProperty("a.b.c", "1") |
| .appendArtSystemProperty("x.y.z", "2") |
| .appendArtOption("-d") |
| .appendArtOption("--test") |
| .setMainClass("Test") |
| .appendProgramArgument("hello") |
| .appendProgramArgument("world"); |
| assertEquals( |
| SCRIPT + ToolHelper.getArtBinary() |
| + " -d --test -Da.b.c=1 -Dx.y.z=2 -cp xxx.dex:yyy.jar Test hello world", |
| builder.build()); |
| } |
| |
| @Test |
| public void testVersion() { |
| for (DexVm version : ToolHelper.getArtVersions()) { |
| ToolHelper.ArtCommandBuilder builder = new ToolHelper.ArtCommandBuilder(version); |
| builder.setMainClass("Test").appendProgramArgument("hello").appendProgramArgument("world"); |
| assertEquals(SCRIPT + ToolHelper.getArtBinary(version) |
| + " Test hello world", builder.build()); |
| } |
| } |
| } |