flatcar-scripts/run_tests.sh
2010-06-11 17:34:06 -07:00

75 lines
2.2 KiB
Bash
Executable File

#!/bin/bash
# Copyright (c) 2009 The Chromium OS Authors. All rights reserved.
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.
# Load common constants. This should be the first executable line.
# The path to common.sh should be relative to your script's location.
. "$(dirname "$0")/common.sh"
# Script must be run inside the chroot
restart_in_chroot_if_needed $*
get_default_board
# Flags
DEFINE_string build_root "$DEFAULT_BUILD_ROOT" \
"Root of build output"
DEFINE_string board "$DEFAULT_BOARD" \
"Target board of which tests were built"
# Parse command line
FLAGS "$@" || exit 1
eval set -- "${FLAGS_ARGV}"
# Run tests
if [ -z "$FLAGS_board" ]; then
echo Error: --board required
exit 1
fi
TESTS_DIR="/build/${FLAGS_board}/tests"
LD_LIBRARY_PATH=/build/${FLAGS_board}/lib:/build/${FLAGS_board}/usr/lib:\
/build/${FLAGS_board}/usr/lib/gcc/i686-pc-linux-gnu/4.4.1/:\
/build/${FLAGS_board}/usr/lib/opengl/xorg-x11/lib
# Die on error; print commands
set -ex
# Change to a test directory to make it easier for tests to write
# to and clean up temporary files.
TEST_CWD=$(mktemp -d /tmp/run_tests.XXXX)
cd $TEST_CWD
function cleanup() {
cd -
rm -rf $TEST_CWD
trap - 0
}
trap cleanup ERR 0
# NOTE: We currently skip cryptohome_tests (which happens to have a different
# suffix than the other tests), because it doesn't work.
# NOTE: Removed explicit use of the target board's ld-linux.so.2 so that this
# will work on hardened builds (with PIE on by default). Tests pass on
# hardened and non-hardened builds without this explicit use, but we only
# disable this on hardened, since that is where the PIE conflict happens.
for i in ${TESTS_DIR}/*_{test,unittests}; do
if [[ "`file -b $i`" = "POSIX shell script text executable" ]]; then
if [[ -f /etc/hardened ]]; then
LD_LIBRARY_PATH=$LD_LIBRARY_PATH /build/${FLAGS_board}/bin/bash $i
else
LD_LIBRARY_PATH=$LD_LIBRARY_PATH /build/${FLAGS_board}/lib/ld-linux.so.2 /build/${FLAGS_board}/bin/bash $i
fi
else
if [[ -f /etc/hardened ]]; then
LD_LIBRARY_PATH=$LD_LIBRARY_PATH $i
else
LD_LIBRARY_PATH=$LD_LIBRARY_PATH /build/${FLAGS_board}/lib/ld-linux.so.2 $i
fi
fi
done