# Uses envpython and toxinidir from tox run to construct a test command
testcommand="${1} ${2}/manage.py test"
posargs="${@:3}"

# Attempt to identify if any of the arguments passed from tox is a test subset
if [ -n "$posargs" ]; then
  for arg in "$posargs"
  do
    if [ ${arg:0:1} != "-" ]; then
      subset=$arg
    fi
  done
fi

# If we are running a test subset, supply the correct settings file.
# If not, simply run the entire test suite.
if [ -n "$subset" ]; then
  project="${subset%%.*}"

  if [ $project == "horizon" ]; then
    $testcommand --settings=horizon.test.settings $posargs
  elif [ $project == "openstack_dashboard" ]; then
    $testcommand --settings=openstack_dashboard.test.settings \
    --exclude-dir=openstack_dashboard/test/integration_tests $posargs
  fi
else
  $testcommand horizon --settings=horizon.test.settings $posargs
  horizon_tests=$?
  $testcommand openstack_dashboard --settings=openstack_dashboard.test.settings \
  --exclude-dir=openstack_dashboard/test/integration_tests $posargs
  openstack_dashboard_tests=$?
  # we have to tell tox if either of these test runs failed
  if [[ $horizon_tests != 0 || $openstack_dashboard_tests != 0 ]]; then
    exit 1;
  fi
fi
