summaryrefslogtreecommitdiffstats
path: root/tests/docker/run
blob: c1e4513bcee04753546a05ce57b64df0759f22cb (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
#!/bin/bash -e
#
# 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.

set -e

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

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

# Prepare the environment
. /etc/profile || true
export PATH=/usr/lib/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 -xzf $BASE/qemu.tgz
for p in dtc pixman; do
    if test -f $BASE/$p.tgz; then
        tar -C $TEST_DIR/src/$p -xzf $BASE/$p.tgz
        export FEATURES="$FEATURES $p"
    fi
done

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"

cd "$QEMU_SRC/tests/docker"

CMD="$QEMU_SRC/tests/docker/$@"

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
$SHELL

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
    $SHELL && exit 1
else
    exit 1
fi