#!/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
  BPATH="--runtime-option -Xbootclasspath:$ANDROID_HOST_OUT/../common/obj/JAVA_LIBRARIES/core-libart-hostdex_intermediates/javalib.jar"
  # Remove prebuild from the flags, this test is for testing not having oat files.
  flags="${flags/--prebuild/}"
else
  BPATH="--runtime-option -Xbootclasspath:/system/framework/core-libart.jar"
fi

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

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

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