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

flags="$@"

# This test is supposed to test without oat files, so doesn't work for prebuild. Make sure that
# flag isn't set, or complain.
# Note: prebuild is the default.
if [[ "${flags}" == *--prebuild* || "${flags}" != *--no-prebuild* ]] ; then
  echo "Test 118-noimage-dex2oat cannot run in prebuild mode."
  exit 1
fi

# Force relocation otherwise we will just use the already created core.oat/art pair.
# Note: relocate is the default.
if [[ "${flags}" == *--no-relocate* ]] ; then
  echo "Test 118-noimage-dex2oat is not intended to run in no-relocate mode."
  exit 1
fi

if [[ $@ == *--host* ]]; then
    framework="${ANDROID_HOST_OUT}/framework"
    bpath_suffix="-hostdex"
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}/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
return_status1=$?

# Make sure we cannot run without an oat file without fallback.
echo "Run -Xnoimage-dex2oat -Xno-dex-file-fallback"
${RUN} ${flags} ${bpath_arg} --runtime-option -Xnoimage-dex2oat --runtime-option -Xnodex2oat \
  --runtime-option -Xno-dex-file-fallback
return_status2=$?

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

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

# Make sure we don't silently ignore an early failure.
(exit $return_status1) && (exit $return_status2) && (exit $return_status3) && (exit $return_status4)