#!/bin/bash
#
# Copyright (C) 2007 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.

# Set up prog to be the path of this script, including following symlinks,
# and set up progdir to be the fully-qualified pathname of its directory.
prog="$0"
while [ -h "${prog}" ]; do
    newProg=`/bin/ls -ld "${prog}"`
    newProg=`expr "${newProg}" : ".* -> \(.*\)$"`
    if expr "x${newProg}" : 'x/' >/dev/null; then
        prog="${newProg}"
    else
        progdir=`dirname "${prog}"`
        prog="${progdir}/${newProg}"
    fi
done
oldwd=`pwd`
progdir=`dirname "${prog}"`
cd "${progdir}"
progdir=`pwd`
prog="${progdir}"/`basename "${prog}"`
test_dir="test-$$"
tmp_dir="/tmp/${test_dir}"

export JAVA="java"
export JAVAC="javac -g -target 1.5"
export RUN="${progdir}/etc/push-and-run-test-jar"
export DEX_LOCATION=/data/run-test/${test_dir}
export NEED_DEX="true"

# If dx was not set by the environment variable, assume it is in the path.
if [ -z "$DX" ]; then
  export DX="dx"
fi

info="info.txt"
build="build"
run="run"
expected="expected.txt"
output="output.txt"
build_output="build-output.txt"
run_args="--quiet"

target_mode="yes"
dev_mode="no"
update_mode="no"
debug_mode="no"
usage="no"
build_only="no"

while true; do
    if [ "x$1" = "x--host" ]; then
        target_mode="no"
        RUN="${progdir}/etc/host-run-test-jar"
        DEX_LOCATION=$tmp_dir
        shift
    elif [ "x$1" = "x--jvm" ]; then
        target_mode="no"
        RUN="${progdir}/etc/reference-run-test-classes"
        NEED_DEX="false"
        shift
    elif [ "x$1" = "x-O" ]; then
        run_args="${run_args} -O"
        shift
    elif [ "x$1" = "x--debug" ]; then
        run_args="${run_args} --debug"
        shift
    elif [ "x$1" = "x--gdb" ]; then
        run_args="${run_args} --gdb"
        dev_mode="yes"
        shift
    elif [ "x$1" = "x--zygote" ]; then
        run_args="${run_args} --zygote"
        shift
    elif [ "x$1" = "x--interpreter" ]; then
        run_args="${run_args} --interpreter"
        shift
    elif [ "x$1" = "x--no-verify" ]; then
        run_args="${run_args} --no-verify"
        shift
    elif [ "x$1" = "x--no-optimize" ]; then
        run_args="${run_args} --no-optimize"
        shift
    elif [ "x$1" = "x--no-precise" ]; then
        run_args="${run_args} --no-precise"
        shift
    elif [ "x$1" = "x--invoke-with" ]; then
        shift
        what="$1"
        run_args="${run_args} --invoke-with \"${what}\""
        shift
    elif [ "x$1" = "x--dev" ]; then
        run_args="${run_args} --dev"
        dev_mode="yes"
        shift
    elif [ "x$1" = "x--build-only" ]; then
        build_only="yes"
        shift
    elif [ "x$1" = "x--output-path" ]; then
        shift
        tmp_dir=$1
        shift
    elif [ "x$1" = "x--update" ]; then
        update_mode="yes"
        shift
    elif [ "x$1" = "x--help" ]; then
        usage="yes"
        shift
    elif expr "x$1" : "x--" >/dev/null 2>&1; then
        echo "unknown $0 option: $1" 1>&2
        usage="yes"
        break
    else
        break
    fi
done

if [ "$dev_mode" = "yes" -a "$update_mode" = "yes" ]; then
    echo "--dev and --update are mutually exclusive" 1>&2
    usage="yes"
fi

if [ "$usage" = "no" ]; then
    if [ "x$1" = "x" -o "x$1" = "x-" ]; then
        test_dir=`basename "$oldwd"`
    else
        test_dir="$1"
    fi

    if [ '!' -d "$test_dir" ]; then
        td2=`echo ${test_dir}-*`
        if [ '!' -d "$td2" ]; then
            echo "${test_dir}: no such test directory" 1>&2
            usage="yes"
        fi
        test_dir="$td2"
    fi
    # Shift to get rid of the test name argument. The rest of the arguments
    # will get passed to the test run.
    shift
fi

if [ "$usage" = "yes" ]; then
    prog=`basename $prog`
    (
        echo "usage:"
        echo "  $prog --help                          Print this message."
        echo "  $prog [options] [test-name]           Run test normally."
        echo "  $prog --dev [options] [test-name]     Development mode" \
             "(dumps to stdout)."
        echo "  $prog --update [options] [test-name]  Update mode" \
             "(replaces expected.txt)."
        echo '  Omitting the test name or specifying "-" will use the' \
             "current directory."
        echo "  Runtime Options:"
        echo "    -O             Run oatexec rather than oatexecd (off by default)."
        echo "    --debug        Wait for a debugger to attach."
        #echo "    --gdb          Run under gdb; incompatible with some tests."
        echo "    --build-only   Build test files only (off by default)."
        echo "    --interpreter  Enable interpreter only mode (off by default)."
        echo "    --no-verify    Turn off verification (on by default)."
        echo "    --no-optimize  Turn off optimization (on by default)."
        echo "    --no-precise   Turn off precise GC (on by default)."
        echo "    --zygote       Spawn the process from the Zygote." \
             "If used, then the"
        echo "                   other runtime options are ignored."
        echo "    --host         Use the host-mode virtual machine."
        echo "    --valgrind     Use valgrind when running locally."
        echo "    --jvm          Use a host-local RI virtual machine."
        echo "    --output-path [path] Location where to store the build" \
             "files."
    ) 1>&2
    exit 1
fi

cd "$test_dir"
test_dir=`pwd`

td_info="${test_dir}/${info}"
td_expected="${test_dir}/${expected}"

if [ ! -r $td_info ]; then
    echo "${test_dir}: missing file $td_info" 1>&2
    exit 1
fi

if [ ! -r $td_expected ]; then
    echo "${test_dir}: missing file $td_expected" 1>&2
    exit 1
fi

# copy the test to a temp dir and run it

echo "${test_dir}: building..." 1>&2

rm -rf "$tmp_dir"
cp -Rp "$test_dir" "$tmp_dir"
cd "$tmp_dir"

if [ '!' -r "$build" ]; then
    cp "${progdir}/etc/default-build" build
fi

echo "${test_dir}: running..." 1>&2

if [ '!' -r "$run" ]; then
    cp "${progdir}/etc/default-run" run
fi

chmod 755 "$build"
chmod 755 "$run"

export TEST_NAME=`basename ${test_dir}`

good="no"
if [ "$dev_mode" = "yes" ]; then
    "./${build}" 2>&1
    build_exit="$?"
    echo "build exit status: $build_exit" 1>&2
    if [ "$build_exit" = '0' ]; then
      "./${run}" $run_args "$@" 2>&1
      echo "run exit status: $?" 1>&2
      good="yes"
    fi
elif [ "$update_mode" = "yes" ]; then
    "./${build}" >"$build_output" 2>&1
    build_exit="$?"
    if [ "$build_exit" = '0' ]; then
        "./${run}" $run_args "$@" >"$output" 2>&1
        sed -e 's/[[:cntrl:]]$//g' < "$output" >"${td_expected}"
        good="yes"
    else
        cat "$build_output" 1>&2
        echo "build exit status: $build_exit" 1>&2
    fi
elif [ "$build_only" = "yes" ]; then
    good="yes"
    "./${build}" >"$build_output" 2>&1
    build_exit="$?"
    if [ "$build_exit" '!=' '0' ]; then
        cp "$build_output" "$output"
        echo "build exit status: $build_exit" >>"$output"
        diff --strip-trailing-cr -q "$expected" "$output" >/dev/null
        if [ "$?" '!=' "0" ]; then
            good="no"
            echo "BUILD FAILED For ${TEST_NAME}"
        fi
    fi
    exit 0
else
    "./${build}" >"$build_output" 2>&1
    build_exit="$?"
    if [ "$build_exit" = '0' ]; then
        "./${run}" $run_args "$@" >"$output" 2>&1
    else
        cp "$build_output" "$output"
        echo "build exit status: $build_exit" >>"$output"
    fi
    diff --strip-trailing-cr -q "$expected" "$output" >/dev/null
    if [ "$?" = "0" ]; then
        # output == expected
        good="yes"
        echo "${test_dir}: succeeded!" 1>&2
    fi
fi

# Clean up test files.
if [ "$good" == "yes" ]; then
    cd "$oldwd"
    rm -rf "$tmp_dir"
    if [ "$target_mode" = "yes" -a "$build_exit" = "0" ]; then
        adb shell rm -r $DEX_LOCATION
    fi
    exit 0
fi


(
    if [ "$update_mode" != "yes" ]; then
        echo "${test_dir}: FAILED!"
        echo ' '
        echo '#################### info'
        cat "${td_info}" | sed 's/^/# /g'
        echo '#################### diffs'
        diff --strip-trailing-cr -u "$expected" "$output"
        echo '####################'
        echo ' '
    fi
    echo "${TEST_NAME} files left in ${tmp_dir} on host"
    if [ "$target_mode" == "yes" ]; then
        echo "and in ${DEX_LOCATION} on target"
    fi

) 1>&2

exit 1
