diff --git a/src/test/java/com/android/tools/r8/utils/ArtCommandBuilderTest.java b/src/test/java/com/android/tools/r8/utils/ArtCommandBuilderTest.java
index fa3497b..b68c15d 100644
--- a/src/test/java/com/android/tools/r8/utils/ArtCommandBuilderTest.java
+++ b/src/test/java/com/android/tools/r8/utils/ArtCommandBuilderTest.java
@@ -15,6 +15,9 @@
 
 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());
@@ -23,21 +26,21 @@
   @Test
   public void noArguments() {
     ArtCommandBuilder builder = new ArtCommandBuilder();
-    Assert.assertEquals("/bin/bash " + ToolHelper.getArtBinary(), builder.build());
+    Assert.assertEquals(SCRIPT + ToolHelper.getArtBinary(), builder.build());
   }
 
   @Test
   public void simple() {
     ToolHelper.ArtCommandBuilder builder = new ToolHelper.ArtCommandBuilder();
     builder.appendClasspath("xxx.dex").setMainClass("Test");
-    assertEquals("/bin/bash " + ToolHelper.getArtBinary() + " -cp xxx.dex Test", builder.build());
+    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("/bin/bash " + ToolHelper.getArtBinary() + " -cp xxx.dex:yyy.jar",
+    assertEquals(SCRIPT + ToolHelper.getArtBinary() + " -cp xxx.dex:yyy.jar",
                  builder.build());
   }
 
@@ -45,14 +48,14 @@
   public void artOptions() {
     ToolHelper.ArtCommandBuilder builder = new ToolHelper.ArtCommandBuilder();
     builder.appendArtOption("-d").appendArtOption("--test");
-    assertEquals("/bin/bash " + ToolHelper.getArtBinary() + " -d --test", builder.build());
+    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("/bin/bash " + ToolHelper.getArtBinary() + " -Da.b.c=1 -Dx.y.z=2",
+    assertEquals(SCRIPT + ToolHelper.getArtBinary() + " -Da.b.c=1 -Dx.y.z=2",
                  builder.build());
   }
 
@@ -60,7 +63,7 @@
   public void programOptions() {
     ToolHelper.ArtCommandBuilder builder = new ToolHelper.ArtCommandBuilder();
     builder.setMainClass("Test").appendProgramArgument("hello").appendProgramArgument("world");
-    assertEquals("/bin/bash " + ToolHelper.getArtBinary() + " Test hello world", builder.build());
+    assertEquals(SCRIPT + ToolHelper.getArtBinary() + " Test hello world", builder.build());
   }
 
   @Test
@@ -77,7 +80,7 @@
         .appendProgramArgument("hello")
         .appendProgramArgument("world");
     assertEquals(
-        "/bin/bash " + ToolHelper.getArtBinary()
+        SCRIPT + ToolHelper.getArtBinary()
             + " -d --test -Da.b.c=1 -Dx.y.z=2 -cp xxx.dex:yyy.jar Test hello world",
         builder.build());
   }
@@ -96,7 +99,7 @@
         .appendProgramArgument("hello")
         .appendProgramArgument("world");
     assertEquals(
-        "/bin/bash " + ToolHelper.getArtBinary()
+        SCRIPT + ToolHelper.getArtBinary()
             + " -d --test -Da.b.c=1 -Dx.y.z=2 -cp xxx.dex:yyy.jar Test hello world",
         builder.build());
   }
@@ -106,7 +109,7 @@
     for (DexVm version : ToolHelper.getArtVersions()) {
       ToolHelper.ArtCommandBuilder builder = new ToolHelper.ArtCommandBuilder(version);
       builder.setMainClass("Test").appendProgramArgument("hello").appendProgramArgument("world");
-      assertEquals("/bin/bash " + ToolHelper.getArtBinary(version)
+      assertEquals(SCRIPT + ToolHelper.getArtBinary(version)
           + " Test hello world", builder.build());
     }
   }
