name: Unit tests on: push: branches: - dev paths: - '**' - '!mkdocs.yml' - '!docs/**' - '!*.md' pull_request: paths: - '**' - '!mkdocs.yml' - '!docs/**' - '!*.md' jobs: tests: strategy: fail-fast: false matrix: os: [ubuntu-24.04, ubuntu-22.04, ubuntu-20.04] runs-on: ${{ matrix.os }} timeout-minutes: 20 steps: - uses: actions/checkout@v4 - name: Cache for pip uses: actions/cache@v3 with: path: ~/.cache/pip key: ${{ matrix.os }}-cache-pip - name: Install dependencies run: | ./setup.sh ./setup-dev.sh - name: Python version info run: | echo 'GDB py:' gdb --batch --quiet --nx --nh --ex 'py import sys; print(sys.version)' echo 'Installed py:' ./.venv/bin/python -V echo 'Installed packages:' ./.venv/bin/python -m pip freeze # We set `kernel.yama.ptrace_scope=0` for `attachp` command tests - name: Run tests run: | source .venv/bin/activate mkdir .cov sudo sysctl -w kernel.yama.ptrace_scope=0 ./tests.sh --cov ./unit-tests.sh --cov - name: Process coverage data if: matrix.os == 'ubuntu-22.04' run: | ./.venv/bin/coverage combine ./.venv/bin/coverage xml - name: "Upload coverage to Codecov" if: matrix.os == 'ubuntu-22.04' uses: codecov/codecov-action@v3 qemu-user-tests: runs-on: [ubuntu-24.04] timeout-minutes: 20 steps: - uses: actions/checkout@v4 - name: Cache for pip uses: actions/cache@v3 with: path: ~/.cache/pip key: ${{ matrix.os }}-cache-pip - name: Install dependencies run: | ./setup.sh ./setup-dev.sh mkdir .cov - name: Run cross-architecture tests run: | ./qemu-tests.sh --cov - name: Process coverage data run: | ./.venv/bin/coverage combine ./.venv/bin/coverage xml - name: Upload coverage to Codecov uses: codecov/codecov-action@v3 qemu-tests: runs-on: [ubuntu-22.04] timeout-minutes: 30 steps: - uses: actions/checkout@v4 - name: Cache for pip uses: actions/cache@v3 with: path: ~/.cache/pip key: ${{ matrix.os }}-cache-pip - name: Install dependencies run: | ./setup.sh ./setup-dev.sh mkdir .cov - name: Set up cache for QEMU images id: qemu-cache uses: actions/cache@v3 with: path: ./tests/qemu-tests/images key: ${{ matrix.os }}-cache-qemu-images - name: Download images run: | ./tests/qemu-tests/download_images.sh # We set `kernel.yama.ptrace_scope=0` for `gdb-pt-dump` - name: Run tests working-directory: ./tests/qemu-tests run: | sudo sysctl -w kernel.yama.ptrace_scope=0 ./tests.sh --cov - name: Process coverage data run: | ./.venv/bin/coverage combine ./.venv/bin/coverage xml - name: Upload coverage to Codecov uses: codecov/codecov-action@v3