#!/bin/bash
#
# Copyright (C) 2014 The Android Open Source Project
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
#     http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.

# Force relocation otherwise we will just use the already created core.oat/art pair.
flags="${@/--no-relocate/--relocate}"

# Use the non-prebuild script.
RUN="${RUN/push-and-run-prebuilt-test-jar/push-and-run-test-jar}"

if [ $(basename $RUN) == 'host-run-test-jar' ]; then
    framework="${ANDROID_HOST_OUT}/framework"
    bpath_suffix="-hostdex"
    # Remove prebuild from the flags, this test is for testing not having oat files.
    flags="${flags/--prebuild/}"
else
    framework="/system/framework"
    bpath_suffix=""
fi
bpath="${framework}/core-libart${bpath_suffix}.jar"
bpath="${bpath}:${framework}/conscrypt${bpath_suffix}.jar"
bpath="${bpath}:${framework}/okhttp${bpath_suffix}.jar"
bpath="${bpath}:${framework}/core-junit${bpath_suffix}.jar"
bpath="${bpath}:${framework}/bouncycastle${bpath_suffix}.jar"
bpath_arg="--runtime-option -Xbootclasspath:${bpath}"


# Make sure we can run without an oat file,
echo "Run -Xnoimage-dex2oat"
${RUN} ${flags} ${bpath_arg} --runtime-option -Xnoimage-dex2oat --runtime-option -Xnodex2oat

# Make sure we can run with the oat file.
echo "Run -Ximage-dex2oat"
${RUN} ${flags} ${bpath_arg} --runtime-option -Ximage-dex2oat

# Make sure we can run with the default settings.
echo "Run default"
${RUN} ${flags} ${bpath_arg}
