#! /bin/sh
#
# Run Scapy test suite.
#
# If ran with no arguments:
#   ./run_tests
# this util will run the test suite using tox, with options that should work
# regardless of the platform or the dependencies. The only dependency for this
# to work are python3 (or python) and tox.
#
# If ran with arguments, this will call UTscapy.py
#
# ATTENTION PACKAGE MAINTAINERS:
# If you do need to run Scapy tests, calling ./run_tests should be enough.
#
DIR=$(dirname "$0")/..
if [ -z "$PYTHON" ]
then
  ARGS=""
  for arg in "$@"
  do
    case $arg
    in
      -3) PYTHON=python3;;
      -W) PYTHONWARNINGS="-W error";;
       *) ARGS="$ARGS $arg";;
    esac
  done
  PYTHON=${PYTHON:-python3}
else
  ARGS="$@"
fi
$PYTHON --version > /dev/null 2>&1
if [ ! $? -eq 0 ]
then
  echo "WARNING: '$PYTHON' not found, using 'python' instead."
  PYTHON=python
fi

if [ -z "$ARGS" ]
then
  # No arguments specified: use tox
  # We use flags to disable tests that use external non tox-installed
  # software.

  # Check tox
  tox --version >/dev/null 2>/dev/null
  if [ ! $? -eq 0 ]
  then
    echo "ERROR: tox is not installed."
    echo "You can still run ./run_tests with arguments: see ./run_tests -h"
    echo "e.g. ./run_tests -t tls.uts -F"
    exit 1
  fi

  # Run tox
  export UT_FLAGS="-K tcpdump -K wireshark -K tshark -K ci_only -K vcan_socket -K automotive_comm -K imports -K scanner"
  export SIMPLE_TESTS="true"
  export PYTHON
  export DISABLE_COVERAGE=" "
  PYVER=$($PYTHON -c "import sys; print('.'.join(sys.version.split('.')[:2]))")
  bash ${DIR}/.config/ci/test.sh $PYVER non_root
  exit $?
fi
PYTHONPATH=$DIR exec "$PYTHON" $PYTHONWARNINGS ${DIR}/scapy/tools/UTscapy.py $ARGS
