# Scapy tox configuration file
# Copyright (C) 2020 Guillaume Valadon <guillaume@valadon.net>


# Tox environments:
# py{version}-{os}-{non_root,root}
# In our testing, version can be 37 to 312 or py39 for pypy39

[tox]
# minversion = 4.0
skip_missing_interpreters = true
# envlist = default when doing 'tox'
envlist = py{37,38,39,310,311,312}-{linux,bsd,windows}-{non_root,root}

# Main tests

[testenv]
description = "Scapy unit tests"
allowlist_externals = sudo
parallel_show_output = true
package = wheel
passenv =
    PATH
    PWD
    PROGRAMFILES
    WINDIR
    SYSTEMROOT
    OPENSSL_CONF
    # Used by scapy
    SCAPY_USE_LIBPCAP
deps =
       ipython
       cryptography
       coverage[toml]
       python-can
       # disabled on windows because they require c++ dependencies
       # brotli 1.1.0 broken https://github.com/google/brotli/issues/1072
       brotli < 1.1.0 ; sys_platform != 'win32'
       zstandard ; sys_platform != 'win32'
platform =
  linux: linux
  bsd: (darwin|freebsd|openbsd|netbsd).*
  windows: win32
commands =
  linux-non_root: {envpython} {env:DISABLE_COVERAGE:-m coverage run} -m scapy.tools.UTscapy -c ./test/configs/linux.utsc -N {posargs}
  linux-root: sudo -E {envpython} {env:DISABLE_COVERAGE:-m coverage run} -m scapy.tools.UTscapy -c ./test/configs/linux.utsc {posargs}
  bsd-non_root: {envpython} {env:DISABLE_COVERAGE:-m coverage run} -m scapy.tools.UTscapy -c test/configs/bsd.utsc -K tshark -N {posargs}
  bsd-root: sudo -E {envpython} {env:DISABLE_COVERAGE:-m coverage run} -m scapy.tools.UTscapy -c test/configs/bsd.utsc -K tshark {posargs}
  windows: {envpython} {env:DISABLE_COVERAGE:-m coverage run} -m scapy.tools.UTscapy -c test/configs/windows.utsc {posargs}
  {env:DISABLE_COVERAGE:coverage combine}
  {env:DISABLE_COVERAGE:coverage xml -i}

# Variants of the main tests

[testenv:py38-isotp_kernel_module]
description = "Scapy unit tests - ISOTP Linux kernel module"
allowlist_externals = sudo
                      git
                      bash
                      lsmod
                      modprobe
passenv =
    PATH
    PWD
    PROGRAMFILES
    WINDIR
    SYSTEMROOT
deps = {[testenv]deps}
commands =
  sudo apt-get -qy install build-essential linux-headers-$(uname -r) linux-modules-extra-$(uname -r)
  sudo -E modprobe can
  git clone --depth=1 https://github.com/linux-can/can-utils.git /tmp/can-utils
  bash -c "cd /tmp/can-utils; ./autogen.sh; ./configure; make; sudo make install"
  git clone --depth=1 https://github.com/hartkopp/can-isotp.git /tmp/can-isotp
  bash -c "cd /tmp/can-isotp; make; sudo make modules_install; sudo modprobe can_isotp || sudo insmod ./net/can/can-isotp.ko" 
  bash -c "rm -rf /tmp/can-utils /tmp/can-isotp"
  lsmod
  sudo -E {envpython} -m coverage run -m scapy.tools.UTscapy -c ./test/configs/linux.utsc {posargs}
  coverage combine
  coverage xml -i

# Test used by upstream pyca/cryptography
[testenv:cryptography]
description = "Scapy unit tests - pyca/cryptography variant"
sitepackages = true
deps =
commands =
  python -c "import cryptography; print('DEBUG: cryptography %s' % cryptography.__version__)"
  python -m scapy.tools.UTscapy -c ./test/configs/cryptography.utsc

# The files listed past the first argument of the sphinx-apidoc command are ignored
[testenv:apitree]
description = "Regenerates the API reference doc tree"
skip_install = true
changedir = {toxinidir}/doc/scapy
deps = sphinx
commands =
  sphinx-apidoc -f --no-toc -d 1 --separate --module-first --templatedir=_templates --output-dir api ../../scapy ../../scapy/modules/ ../../scapy/libs/ ../../scapy/tools/ ../../scapy/arch/ ../../scapy/contrib/scada/* ../../scapy/layers/msrpce/raw/ ../../scapy/layers/msrpce/all.py ../../scapy/all.py ../../scapy/layers/all.py ../../scapy/compat.py


[testenv:mypy]
description = "Check Scapy compliance against static typing"
skip_install = true
deps = mypy==1.7.0
       typing
commands = python .config/mypy/mypy_check.py linux
           python .config/mypy/mypy_check.py win32


[testenv:docs]
description = "Build the docs"
deps =
extras = doc
changedir = {toxinidir}/doc/scapy
commands =
  sphinx-build -W --keep-going -b html . _build/html


# Debug mode
[testenv:docs2]
description = "Build the docs without rebuilding the API tree"
skip_install = true
changedir = {toxinidir}/doc/scapy
deps = {[testenv:docs]deps}
allowlist_externals = sphinx-build
setenv =
  SCAPY_APITREE = 0
commands =
  sphinx-build -W --keep-going -b html . _build/html


[testenv:spell]
description = "Check code for Grammar mistakes"
skip_install = true
deps = codespell
# inet6, dhcp6 and the ipynb files contains french: ignore them
commands = codespell --ignore-words=.config/codespell_ignore.txt --skip="*.pyc,*.png,*.jpg,*.ods,*.raw,*.pdf,*.pcap,*.js,*.html,*.der,*_build*,*inet6.py,*dhcp6.py,*manuf.py,*tcpros.py,*.ipynb,*.svg,*.gif,*.obs,*.gz" scapy/ doc/ test/ .github/


[testenv:twine]
description = "Check Scapy code distribution"
skip_install = true
deps = twine
       cmarkgfm
       build
setenv = SCAPY_VERSION=3.0.0
commands = python -m build
           twine check --strict dist/*


[testenv:gitarchive]
description = "Check Scapy git archive"
skip_install = true
allowlist_externals = git
commands = git version
           git archive HEAD -o {envtmpdir}/scapy.tar
           python -m pip install {envtmpdir}/scapy.tar
           # Below: remove current folder from path to force use of installed Scapy
           python -c "import sys; sys.path.remove(''); import scapy; print(scapy._version_from_git_archive())"


[testenv:flake8]
description = "Check Scapy code style & quality"
skip_install = true
deps = flake8<6.0.0
commands = flake8 scapy/


# flake8 configuration
[flake8]
ignore = E203, E731, W504, W503
max-line-length = 88
per-file-ignores =
    scapy/all.py:F403,F401
    scapy/asn1/mib.py:E501
    scapy/contrib/automotive/obd/obd.py:F405,F403
    scapy/contrib/automotive/obd/pid/pids.py:F405,F403
    scapy/contrib/automotive/obd/scanner.py:F405,F403,E501
    scapy/contrib/automotive/volkswagen/definitions.py:E501
    scapy/contrib/eigrp.py:E501
    scapy/contrib/geneve.py:E501
    scapy/contrib/http2.py:F821
    scapy/contrib/igmp.py:E501
    scapy/contrib/scada/iec104/__init__.py:F405
    scapy/layers/tls/all.py:F403
    scapy/layers/tls/crypto/all.py:F403
    scapy/layers/tls/crypto/md4.py:E741
    scapy/libs/winpcapy.py:F405,F403,E501
    scapy/libs/manuf.py:E501
    scapy/tools/UTscapy.py:E501
exclude = scapy/libs/ethertypes.py,
          scapy/layers/msrpce/raw/*
