Initial push.
diff --git a/scripts/create-art-tests.sh b/scripts/create-art-tests.sh
new file mode 100755
index 0000000..dc6d6d2
--- /dev/null
+++ b/scripts/create-art-tests.sh
@@ -0,0 +1,75 @@
+#!/bin/bash
+#
+# 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.
+
+function generate_test() {
+  local name=$1
+  local testClassName=$2
+  local testGeneratingToolchain=$3
+  # The bash uppercase substitution ^^ is not supported on the bash version on Mac OS.
+  local testGeneratingToolchainEnum=$(echo $testGeneratingToolchain | tr /a-z/ /A-Z/)
+  local fileName=$4
+  local compilerUnderTest=$5
+  local compilerUnderTestEnum=$(echo ${compilerUnderTest} | tr /a-z/ /A-Z/)
+
+  cat <<EOF > $fileName
+// 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.art.${testGeneratingToolchain}.${compilerUnderTest};
+
+import static com.android.tools.r8.R8RunArtTestsTest.DexTool.${testGeneratingToolchainEnum};
+
+import com.android.tools.r8.R8RunArtTestsTest;
+import org.junit.Test;
+
+/**
+ * Auto-generated test for the art ${name} test using the ${testGeneratingToolchain} toolchain.
+ *
+ * DO NOT EDIT THIS FILE. EDIT THE HERE DOCUMENT TEMPLATE IN scripts/create-art-tests.sh INSTEAD!
+ */
+public class ${testClassName} extends R8RunArtTestsTest {
+
+    public ${testClassName}() {
+      super("${name}", ${testGeneratingToolchainEnum});
+    }
+
+    @Test
+    public void run${testClassName}() throws Throwable {
+      // For testing with other Art VMs than the default pass the VM version as a argument to
+      // runArtTest, e.g. runArtTest(ToolHelper.ART_4_4_4).
+      runArtTest(CompilerUnderTest.${compilerUnderTestEnum});
+    }
+}
+EOF
+}
+
+TESTDIR="tests/art"
+TOOLCHAINS=("dx" "jack" "none")
+DESTINATIONDIR="build/generated/test/java/com/android/tools/r8/art"
+
+if [ ! -e $TESTDIR ]; then
+  echo "Missing art tests in $TESTDIR."
+  exit
+fi
+
+for TOOLCHAIN in ${TOOLCHAINS[@]}; do
+  for d in $DESTINATIONDIR/$TOOLCHAIN/r8 $DESTINATIONDIR/$TOOLCHAIN/d8; do
+    rm -rf $d
+    mkdir -p $d
+  done
+  # class files are found in the dx directory.
+  if [ "$TOOLCHAIN" == "none" ]; then
+    SOURCEDIR=${TESTDIR}/dx
+  else
+    SOURCEDIR=${TESTDIR}/${TOOLCHAIN}
+  fi
+  for TEST in ${SOURCEDIR}/*; do
+    TESTNAME=$(basename $TEST)
+    TESTCLASSNAME="Art${TESTNAME//-/_}Test"
+    generate_test $TESTNAME $TESTCLASSNAME ${TOOLCHAIN} $DESTINATIONDIR/$TOOLCHAIN/r8/$TESTCLASSNAME.java r8
+    generate_test $TESTNAME $TESTCLASSNAME ${TOOLCHAIN} $DESTINATIONDIR/$TOOLCHAIN/d8/$TESTCLASSNAME.java d8
+  done
+done