#!/bin/bash
# Copyright (c) 2013-2016 Red Hat, Inc.
# All rights reserved.
#
# Redistribution and use in source and binary forms, with or without
# modification, are permitted provided that the following conditions
# are met:
#
# 1. Redistributions of source code must retain the above copyright
#    notice, this list of conditions and the following disclaimer.
# 2. Redistributions in binary form must reproduce the above copyright
#    notice, this list of conditions and the following disclaimer in the
#    documentation and/or other materials provided with the
#    distribution.
# 3. Neither the name of Red Hat nor the names of its
#    contributors may be used to endorse or promote products derived
#    from this software without specific prior written permission.
#
# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
#
# Authors: Mikolaj Izdebski <mizdebsk@redhat.com>

set -e

if ! test -f config.status; then
    echo config.status does not exist. Run configure first. >&2
    exit 1
fi
. ./config.status

for test in test/java-functions/*_test.sh; do
    echo "`basename $test`:"
    sh $test || exit 1
done

if [ -z "$pyinterpreter" ]; then
    exit 0
fi

cov_config=--cov-config=../.coveragerc

if ! coverage --version >/dev/null 2>&1; then
    coverage(){ :;}
    cov_config=
fi

cat >.coveragerc <<EOF
[run]
parallel = True
data_file = ${PWD}/.coverage
source =
    ${PWD}/python/javapackages/
    ${PWD}/java-utils/
    ${PWD}/depgenerators/
EOF
coverage erase
export COVERAGE_PROCESS_START="${PWD}/.coveragerc"
export PYTHONPATH="${PWD}/test/coverage${PYTHONPATH:+:}${PYTHONPATH:-}"

echo "Running Python tests with ${pyinterpreter}..."
(cd ./python && "${pyinterpreter}" -m pytest -v ${cov_config})
r1=$?
(cd ./test && PYTHONPATH="${PWD}/../python${PYTHONPATH:+:}${PYTHONPATH:-}" "${pyinterpreter}" -m pytest -v ${cov_config})
r2=$?

if [ ${r1} -lt ${r2} ]; then
    r1=${r2}
fi

unset PYTHONPATH COVERAGE_PROCESS_START
coverage combine
coverage xml
coverage report

exit ${r1}
