scapy/.github/workflows/unittests.yml

180 lines
4.8 KiB
YAML

name: Scapy unit tests
on:
push:
branches: [master]
pull_request:
# The branches below must be a subset of the branches above
branches: [master]
permissions:
contents: read
jobs:
health:
name: Code health check
runs-on: ubuntu-latest
steps:
- name: Checkout Scapy
uses: actions/checkout@v4
- name: Setup Python
uses: actions/setup-python@v5
with:
python-version: "3.12"
- name: Install tox
run: pip install tox
- name: Run flake8 tests
run: tox -e flake8
- name: Run codespell
run: tox -e spell
- name: Run twine check
run: tox -e twine
- name: Run gitarchive check
run: tox -e gitarchive
docs:
# 'runs-on' and 'python-version' should match the ones defined in .readthedocs.yml
name: Build doc
runs-on: ubuntu-22.04
steps:
- name: Checkout Scapy
uses: actions/checkout@v4
- name: Setup Python
uses: actions/setup-python@v5
with:
python-version: "3.12"
- name: Install tox
run: pip install tox
- name: Build docs
run: tox -e docs
spdx:
name: Check SPDX identifiers
runs-on: ubuntu-latest
steps:
- name: Checkout Scapy
uses: actions/checkout@v4
- name: Launch script
run: bash scapy/tools/check_spdx.sh
mypy:
name: Type hints check
runs-on: ubuntu-latest
steps:
- name: Checkout Scapy
uses: actions/checkout@v4
- name: Setup Python
uses: actions/setup-python@v5
with:
python-version: "3.12"
- name: Install tox
run: pip install tox
- name: Run mypy
run: tox -e mypy
utscapy:
name: ${{ matrix.os }} ${{ matrix.installmode }} ${{ matrix.python }} ${{ matrix.mode }} ${{ matrix.flags }}
runs-on: ${{ matrix.os }}
timeout-minutes: 20
continue-on-error: ${{ matrix.allow-failure == 'true' }}
strategy:
fail-fast: false
matrix:
os: [ubuntu-latest]
python: ["3.7", "3.8", "3.9", "3.10", "3.11", "3.12"]
mode: [non_root]
installmode: ['']
flags: [" -K scanner"]
allow-failure: ['false']
include:
# Linux root tests
- os: ubuntu-latest
python: "3.12"
mode: root
flags: " -K scanner"
# PyPy tests: root only
- os: ubuntu-latest
python: "pypy3.9"
mode: root
flags: " -K scanner"
# Libpcap test
- os: ubuntu-latest
python: "3.12"
mode: root
installmode: 'libpcap'
flags: " -K scanner"
# macOS tests
- os: macos-14
python: "3.12"
mode: both
flags: " -K scanner"
# Scanner tests
- os: ubuntu-latest
python: "3.12"
mode: root
allow-failure: 'true'
flags: " -k scanner"
- os: ubuntu-latest
python: "pypy3.9"
mode: root
allow-failure: 'true'
flags: " -k scanner"
- os: macos-14
python: "3.12"
mode: both
allow-failure: 'true'
flags: " -k scanner"
steps:
- name: Checkout Scapy
uses: actions/checkout@v4
# Codecov requires a fetch-depth > 1
with:
fetch-depth: 2
- name: Setup Python
uses: actions/setup-python@v5
with:
python-version: ${{ matrix.python }}
- name: Install Tox and any other packages
run: ./.config/ci/install.sh ${{ matrix.installmode }}
- name: Run Tox
run: UT_FLAGS="${{ matrix.flags }}" ./.config/ci/test.sh ${{ matrix.python }} ${{ matrix.mode }}
- name: Codecov
uses: codecov/codecov-action@v4
continue-on-error: true
with:
token: ${{ secrets.CODECOV_TOKEN }}
cryptography:
name: pyca/cryptography test
runs-on: ubuntu-latest
steps:
- name: Checkout repository
uses: actions/checkout@v4
- name: Setup Python
uses: actions/setup-python@v5
with:
python-version: "3.12"
- name: Install tox
run: pip install tox
# pyca/cryptography's CI installs cryptography
# then runs the tests. We therefore didn't include it in tox
- name: Install cryptography
run: pip install cryptography
- name: Run tests
run: tox -e cryptography
# CODE-QL
analyze:
name: CodeQL analysis
runs-on: ubuntu-latest
permissions:
security-events: write
steps:
- name: Checkout repository
uses: actions/checkout@v4
with:
fetch-depth: 2
- name: Initialize CodeQL
uses: github/codeql-action/init@v3
with:
languages: 'python'
- name: Perform CodeQL Analysis
uses: github/codeql-action/analyze@v3