#!/bin/bash
#
# Docker test runner
#
# Copyright (c) 2016 Red Hat Inc.
#
# Authors:
#  Fam Zheng <famz@redhat.com>
#
# This work is licensed under the terms of the GNU GPL, version 2
# or (at your option) any later version. See the COPYING file in
# the top-level directory.

if test -n "$V"; then
    set -x
fi

BASE="$(dirname $(readlink -e $0))"

# Prepare the environment
export PATH=/usr/lib/ccache:/usr/lib64/ccache:$PATH

if test -n "$J"; then
    export MAKEFLAGS="$MAKEFLAGS -j$J"
fi

# We are in the container so the whole file system belong to us
export TEST_DIR=/tmp/qemu-test
mkdir -p $TEST_DIR/{src,build,install}

# Extract the source tarballs
tar -C $TEST_DIR/src -xf $BASE/qemu.tar || { echo "Failed to untar source"; exit 2; }

if test -n "$SHOW_ENV"; then
    if test -f /packages.txt; then
        echo "Packages installed:"
        cat /packages.txt
        echo
    fi
    echo "Environment variables:"
    env
    echo
fi

export QEMU_SRC="$TEST_DIR/src"
export BUILD_DIR="$TEST_DIR/build"
export INSTALL_DIR="$TEST_DIR/install"

cd "$QEMU_SRC/tests/docker"

CMD="./$@"

if test -z "$DEBUG"; then
    exec $CMD
fi

# DEBUG workflow
echo "* Prepared to run command:"
echo "  $CMD"
echo "* Hit Ctrl-D to continue, or type 'exit 1' to abort"
echo
env bash --noprofile --norc

if "$CMD"; then
    exit 0
elif test -n "$DEBUG"; then
    echo "* Command failed:"
    echo "  $CMD"
    echo "* Hit Ctrl-D to exit"
    echo
    # Force error after shell exits
    env bash --noprofile --norc && exit 1
else
    exit 1
fi
