Merge pull request #314 from fandango-fuzzer/alexander #660
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# GitHub Actions Workflow: Python Tests with Caching | |
# This workflow automates running tests on Python code using pytest and speeds up the process using caching. | |
name: Tests | |
on: | |
push: | |
branches: | |
- dev # Run tests on pushes to the dev branch | |
pull_request: | |
branches: | |
- main # Run tests on pull requests targeting the main branch | |
workflow_dispatch: # Enables manual execution from the Actions tab | |
jobs: | |
test: | |
runs-on: ubuntu-latest # Use the latest Ubuntu runner provided by GitHub | |
strategy: | |
matrix: | |
python-version: [ 3.11 ] # Python version to run | |
steps: | |
# Step 1: Checkout the repository's code | |
- name: Checkout code | |
uses: actions/checkout@v3 | |
# Step 2: Set up Python environment | |
- name: Set up Python ${{ matrix.python-version }} | |
uses: actions/setup-python@v4 | |
with: | |
python-version: ${{ matrix.python-version }} | |
# Step 3: Cache pip dependencies to speed up installs | |
- name: Cache pip dependencies | |
uses: actions/cache@v3 | |
with: | |
path: ~/.cache/pip # Path to cache | |
key: ${{ runner.os }}-pip-${{ matrix.python-version }}-${{ hashFiles('Makefile') }} # Unique cache key based on the OS, Python version, and Makefile hash | |
restore-keys: | | |
${{ runner.os }}-pip-${{ matrix.python-version }}- | |
# Step 4: Install system-level dependencies required by the project | |
- name: Install system dependencies | |
run: | | |
sudo apt-get update && sudo apt-get install -y python3-dev graphviz libgraphviz-dev pkg-config libarchive-tools | |
pip install pygraphviz | |
# Step 5: Install Python dependencies using make | |
- name: Install dependencies with Makefile | |
run: | | |
python -m pip install --upgrade pip # Upgrade pip to the latest version | |
make install-test # Install dependencies using the Makefile | |
# Step 6: Run tests using pytest | |
- name: Run tests with pytest | |
run: | | |
make tests # Run the tests | |
# Step 7: Cache installed packages for system dependencies | |
- name: Cache pygraphviz dependencies | |
uses: actions/cache@v3 | |
with: | |
path: /usr/local/lib/python3.11/dist-packages # Path to cache the installed system dependencies | |
key: pygraphviz-${{ runner.os }}-python3.11 | |
restore-keys: | | |
pygraphviz-${{ runner.os }}- |