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