#!/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="$@"

# 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 119-noimage-patchoat is not intended to run in no-relocate mode."
  exit 1
fi

if [[ $@ == *--host* ]]; then
  false_bin="/bin/false"
else
  false_bin="/system/bin/false"
fi

# Make sure we can run without an image file.
echo "Run -Xnoimage-dex2oat -Xpatchoat:/system/bin/false"
${RUN} ${flags} ${BPATH} --runtime-option -Xnoimage-dex2oat \
  --runtime-option -Xpatchoat:${false_bin}
return_status1=$?

# Make sure we cannot run without an image file without fallback.
echo "Run -Xnoimage-dex2oat -Xpatchoat:/system/bin/false -Xno-dex-file-fallback"
${RUN} ${flags} ${BPATH} --runtime-option -Xnoimage-dex2oat \
  --runtime-option -Xpatchoat:${false_bin} --runtime-option -Xno-dex-file-fallback
# This second run is expected to fail: invert the return status of the previous command.
return_status2=$((! $?))

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

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

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