| #!/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 |