blob: dc6d6d244cc7cbf61b7f93e8fda7bb6b6fbf7469 [file] [log] [blame]
#!/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