blob: 9ec3383725f10dfb2368215a96188b7bf2517763 [file] [log] [blame]
#!/bin/bash
# Copyright (c) 2013 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.
# Runs the lansim unit tests.
UNITTESTS="
pyiftun_unittest.py
py/tools_unittest.py
"
# Unittests that require creating a TUN/TAP interface (and thus access to
# /dev/net/tun) need to be run as root.
ROOT_UNITTESTS="
py/tuntap_unittest.py
py/simulator_unittest.py
"
set -e
# Display help/usage message.
usage() {
cat <<EOF
Usage: ${0##*/} [OPTION]...
Options:
-f force running all unit test modules, regardless of failure
-h display this help and exit
EOF
}
# Parse command-line options.
while getopts ":fh" opt; do
case $opt in
f)
force_all=1
;;
h)
usage
exit
;;
\?)
echo "Invalid option: -$OPTARG" >&2
exit 1
;;
esac
done
shift $((OPTIND-1))
if [[ $# > 0 ]]; then
echo "Invalid argument: $1"
exit 1
fi
# Invoke unit test scripts.
for unittest_script in $UNITTESTS; do
echo "Running $unittest_script:":
python ${unittest_script} || test ${force_all}
done
for unittest_script in $ROOT_UNITTESTS; do
echo "Running $unittest_script as root:"
sudo PYTHONPATH=${PYTHONPATH} python ${unittest_script} || test ${force_all}
done
exit 0