| #!/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 |