#!/bin/sh

# Copyright (C) 2015 Canonical Ltd
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License version 3 as
# published by the Free Software Foundation.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program.  If not, see <http://www.gnu.org/licenses/>.

# This runs the $1 go test binary and reboots if necessary.

set -e

TEST=$1
NEEDS_REBOOT=/tmp/needs-reboot

# We export the tests bin path so the snappy binary that might be compiled from
# the branch is found.
export PATH=$(pwd)/integration-tests/bin:$PATH

# XXX sudo does not preserve the user PATH. A nicer way to solve this would be
# to use an alias, but go exec.Command sets the full binary path.
cat > $(pwd)/integration-tests/bin/sudo <<EOF
#!/bin/bash
/usr/bin/sudo env PATH=$PATH "\$@"
EOF

chmod +x $(pwd)/integration-tests/bin/sudo

# adt-run copies the source tree with owner user:root.
# In order for snappy to build the test snaps without sudo we need them to be
# user:user so it can preserve the group id.
chown -R $USER:$USER $(pwd)/integration-tests/data/snaps/

# shift to remove the test binary name (first argument) and be able to pass the rest
# of them to it
shift
${TEST} -check.vv -test.outputdir=$ADT_ARTIFACTS-$ADT_REBOOT_MARK "$@"

if [ -e ${NEEDS_REBOOT} ]; then
    mark=`cat ${NEEDS_REBOOT}`
    echo "Rebooting..."
    sudo /tmp/autopkgtest-reboot "$mark"
fi
