language: python

matrix:
    include:
        # PEP 8 checks, build doc and grammar spelling check
        - os: linux
          python: 2.7
          env:
            - TOXENV=flake8,docs,spell
       
        # Run as a regular user
        - os: linux
          python: 2.7
          env:
            - TOXENV=py27-linux_non_root,codecov

        - os: linux
          python: 3.4
          env:
            - TOXENV=py34-linux_non_root,codecov

        - os: linux
          python: 3.5
          env:
            - TOXENV=py35-linux_non_root,codecov

        - os: linux
          python: 3.6
          env:
            - TOXENV=py36-linux_non_root,codecov

        - os: linux
          dist: xenial
          python: 3.7
          env:
            - TOXENV=py37-linux_non_root,codecov

        - os: linux
          python: pypy
          env:
            - TOXENV=pypy-linux_non_root,codecov

        - os: linux
          python: pypy3
          env:
            - TOXENV=pypy3-linux_non_root,codecov

        - os: osx
          language: generic
          env:
            - TOXENV=py27-osx_non_root,codecov

        # Run as root
        - os: linux
          sudo: required
          python: 2.7
          env:
            - TOXENV=py27-linux_root,codecov

        - os: linux
          sudo: required
          python: pypy
          env:
            - TOXENV=pypy-linux_root,codecov

# Note: a bug in pypy3 <= 5.10.1 prevents from using Scapy to inject packets
#       see https://bitbucket.org/pypy/pypy/issues/2787/pypy3-sockname-error
#        - os: linux
#          sudo: required
#          python: pypy3
#          env:
#            - TOXENV=pypy3-linux_root,codecov

        - os: linux
          sudo: required
          python: 3.4
          env:
            - TOXENV=py34-linux_root,codecov

        - os: linux
          sudo: required
          python: 3.5
          env:
            - TOXENV=py35-linux_root,codecov

        - os: linux
          sudo: required
          python: 3.6
          env:
            - TOXENV=py36-linux_root,codecov

        - language: python
          sudo: required
          dist: xenial
          python: 3.7
          env:
            - TOXENV=py37-linux_root,codecov

        - os: linux
          sudo: required
          python: 2.7
          virtualenv:
            system_site_packages: true
          env:
            - SCAPY_SUDO=sudo SCAPY_USE_PCAPDNET=yes TOXENV=py27-pcapdnet_root,codecov
        
        - os: linux
          sudo: required
          python: 3.6
          env:
            - SCAPY_SUDO=sudo TOXENV=py36-isotp_kernel_module,codecov

        - os: osx
          language: generic
          env:
            - TOXENV=py27-osx_root,codecov

        # FIXME - Networking with pcapdnet seem to be failing on OSX at the moment
        #- os: osx
        #  language: generic
        #  env:
        #    - SCAPY_SUDO=sudo SCAPY_USE_PCAPDNET=yes TOXENV=py27-pcapdnet_root,codecov

        - os: osx
          language: generic
          env:
            - TOXENV=py36-osx_non_root,py36-osx_root,codecov

        # Other root tests
        # Test scapy garbage disposal
        - os: linux
          sudo: required
          python: 3.6
          env:
            - TOXENV=linux_garbage

install: bash .travis/install.sh

script: bash .travis/test.sh
