ci: enable Windows integration and tools-smoke CI #20
This file contains hidden or 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
| 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 |