Skip to content

ci: enable Windows integration and tools-smoke CI #20

ci: enable Windows integration and tools-smoke CI

ci: enable Windows integration and tools-smoke CI #20

Workflow file for this run

name: CI
on:
push:
branches: [main]
pull_request:
branches: [main]
jobs:
unit-tests:
name: Unit Tests (Python ${{ matrix.python-version }}, ${{ matrix.os }})
runs-on: ${{ matrix.os }}
strategy:
fail-fast: false
matrix:
os: [ubuntu-latest, macos-latest, windows-latest]
python-version: ["3.11", "3.12", "3.13"]
steps:
- uses: actions/checkout@v4
with:
submodules: true
- name: Set up Python ${{ matrix.python-version }}
uses: actions/setup-python@v5
with:
python-version: ${{ matrix.python-version }}
cache: 'pip'
- name: Install dependencies
run: |
python -m pip install --upgrade pip
pip install -e "./amitools[vamos]"
pip install "pytest>=7.0" "pytest-cov>=4.0" "pytest-timeout>=2.0"
pip install -e "." --no-deps
- name: Run unit tests
run: pytest tests/unit/ -v --timeout=30
integration-tests:
name: Integration Tests (${{ matrix.os }})
runs-on: ${{ matrix.os }}
needs: unit-tests
strategy:
fail-fast: false
matrix:
os: [ubuntu-latest, macos-latest, windows-latest]
steps:
- uses: actions/checkout@v4
with:
submodules: true
- name: Set up Python 3.13
uses: actions/setup-python@v5
with:
python-version: "3.13"
cache: 'pip'
- name: Clone AmiFUSE-testing fixtures
# Clones to sibling directory of workspace checkout.
# Workspace is typically /home/runner/work/<repo>/<repo>.
run: |
git clone --depth 1 https://github.com/reinauer/AmiFUSE-testing.git ../AmiFUSE-testing
continue-on-error: true
- name: Install machine68k-amifuse (Windows)
# Upstream machine68k lacks Windows fixes (cnvogelg/machine68k#8,
# #9). The machine68k-amifuse fork includes all fixes with
# pre-built Windows wheels.
# Remove this step once upstream machine68k merges the fixes.
if: runner.os == 'Windows'
run: pip install "machine68k-amifuse>=0.4.1.post1"
- name: Install dependencies
run: |
python -m pip install --upgrade pip
pip install -e "./amitools[vamos]"
pip install "pytest>=7.0" "pytest-cov>=4.0" "pytest-timeout>=2.0"
pip install -e "." --no-deps
- name: Verify machine68k
run: |
python -c "import machine68k; print(f'machine68k {machine68k.__version__}')"
python -c "import machine68k; machine68k.CPU(1); print('CPU probe OK')"
continue-on-error: true
- name: Run integration tests
env:
AMIFUSE_FIXTURE_ROOT: ${{ github.workspace }}/../AmiFUSE-testing
run: pytest tests/integration/ -v --timeout=60
tools-smoke:
name: Tools Smoke (${{ matrix.os }})
runs-on: ${{ matrix.os }}
needs: unit-tests
strategy:
fail-fast: false
matrix:
os: [ubuntu-latest, macos-latest, windows-latest]
steps:
- uses: actions/checkout@v4
with:
submodules: true
- name: Set up Python 3.13
uses: actions/setup-python@v5
with:
python-version: "3.13"
cache: 'pip'
- name: Clone AmiFUSE-testing fixtures
# Clones to sibling directory of workspace checkout.
# Workspace is typically /home/runner/work/<repo>/<repo>.
run: |
git clone --depth 1 https://github.com/reinauer/AmiFUSE-testing.git ../AmiFUSE-testing
continue-on-error: true
- name: Install machine68k-amifuse (Windows)
# Upstream machine68k lacks Windows fixes (cnvogelg/machine68k#8,
# #9). The machine68k-amifuse fork includes all fixes with
# pre-built Windows wheels.
# Remove this step once upstream machine68k merges the fixes.
if: runner.os == 'Windows'
run: pip install "machine68k-amifuse>=0.4.1.post1"
- name: Install dependencies
run: |
python -m pip install --upgrade pip
pip install -e "./amitools[vamos]"
pip install -e "." --no-deps
- name: Run amifuse_matrix smoke
env:
AMIFUSE_FIXTURE_ROOT: ${{ github.workspace }}/../AmiFUSE-testing
run: python tools/amifuse_matrix.py --fixtures pfs3 sfs ofs --runs 1 --json
- name: Run image_format_smoke
env:
AMIFUSE_FIXTURE_ROOT: ${{ github.workspace }}/../AmiFUSE-testing
run: python tools/image_format_smoke.py --case direct-rdb-pfs3 --json