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