Lazylock is now stable. Use that instead of OnceLock as the API is cleaner #660
Workflow file for this run
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
permissions: | |
contents: read | |
on: | |
push: | |
branches: [main] | |
pull_request: | |
# Spend CI time only on latest ref: https://github.com/jonhoo/rust-ci-conf/pull/5 | |
concurrency: | |
group: ${{ github.workflow }}-${{ github.head_ref || github.run_id }} | |
cancel-in-progress: true | |
name: test | |
jobs: | |
required: | |
runs-on: ubuntu-latest | |
name: ubuntu / ${{ matrix.toolchain }} | |
strategy: | |
matrix: | |
toolchain: [stable, beta] | |
steps: | |
- uses: actions/checkout@v4 | |
with: | |
submodules: true | |
- name: Cache git folder | |
id: cache-git | |
uses: actions/cache@v4 | |
with: | |
enableCrossOsArchive: true | |
path: TomHarte | |
key: git-folder2 | |
- if: steps.cache-git.outputs.cache-hit != 'true' | |
uses: actions/checkout@v4 | |
with: | |
repository: 'TomHarte/ProcessorTests' | |
path: 'TomHarte' | |
- name: cache-update | |
if: steps.cache-git.outputs.cache-hit == 'true' | |
run: cd TomHarte && git pull | |
- name: Install ${{ matrix.toolchain }} | |
uses: dtolnay/rust-toolchain@master | |
with: | |
toolchain: ${{ matrix.toolchain }} | |
- uses: Swatinem/rust-cache@v2 | |
- name: cargo generate-lockfile | |
if: hashFiles('Cargo.lock') == '' | |
run: cargo generate-lockfile | |
# https://twitter.com/jonhoo/status/1571290371124260865 | |
- name: cargo test --locked | |
run: cargo test -r --locked --all-features --all-targets | |
env: | |
# The package is checked out at the same level as the cpu package | |
# so this ref is one level back. | |
TOM_HARTE_PROCESSOR_TESTS: "../TomHarte" | |
# https://github.com/rust-lang/cargo/issues/6669 | |
- name: cargo test --doc | |
run: cargo test -r --locked --all-features --doc | |
env: | |
# The package is checked out at the same level as the cpu package | |
# so this ref is one level back. | |
TOM_HARTE_PROCESSOR_TESTS: "../TomHarte" | |
minimal: | |
runs-on: ubuntu-latest | |
name: ubuntu / stable / minimal-versions | |
steps: | |
- uses: actions/checkout@v4 | |
with: | |
submodules: true | |
- name: Cache git folder | |
id: cache-git | |
uses: actions/cache@v4 | |
with: | |
enableCrossOsArchive: true | |
path: TomHarte | |
key: git-folder2 | |
- if: steps.cache-git.outputs.cache-hit != 'true' | |
uses: actions/checkout@v4 | |
with: | |
repository: 'TomHarte/ProcessorTests' | |
path: 'TomHarte' | |
- name: cache-update | |
if: steps.cache-git.outputs.cache-hit == 'true' | |
run: cd TomHarte && git pull | |
- name: Install stable | |
uses: dtolnay/rust-toolchain@stable | |
- name: Install nightly for -Zminimal-versions | |
uses: dtolnay/rust-toolchain@nightly | |
- name: rustup default stable | |
run: rustup default stable | |
- name: cargo update -Zminimal-versions | |
run: cargo +nightly update -Zdirect-minimal-versions | |
- uses: Swatinem/rust-cache@v2 | |
- name: cargo test | |
run: cargo test -r --locked --all-features --all-targets | |
env: | |
# The package is checked out at the same level as the cpu package | |
# so this ref is one level back. | |
TOM_HARTE_PROCESSOR_TESTS: "../TomHarte" | |
os-check: | |
runs-on: ${{ matrix.os }} | |
name: ${{ matrix.os }} / stable | |
strategy: | |
fail-fast: false | |
matrix: | |
os: [macos-latest, windows-latest] | |
steps: | |
- uses: actions/checkout@v4 | |
with: | |
submodules: true | |
- name: Cache git folder | |
id: cache-git | |
uses: actions/cache@v4 | |
with: | |
enableCrossOsArchive: true | |
path: TomHarte | |
key: git-folder2 | |
- if: steps.cache-git.outputs.cache-hit != 'true' | |
uses: actions/checkout@v4 | |
with: | |
repository: 'TomHarte/ProcessorTests' | |
path: 'TomHarte' | |
- name: cache-update | |
if: steps.cache-git.outputs.cache-hit == 'true' | |
run: cd TomHarte && git pull | |
- name: Install stable | |
uses: dtolnay/rust-toolchain@stable | |
- uses: Swatinem/rust-cache@v2 | |
- name: cargo generate-lockfile | |
if: hashFiles('Cargo.lock') == '' | |
run: cargo generate-lockfile | |
- name: cargo test | |
run: cargo test -r --locked --all-features --all-targets | |
env: | |
# The package is checked out at the same level as the cpu package | |
# so this ref is one level back. | |
TOM_HARTE_PROCESSOR_TESTS: "../TomHarte" | |
coverage: | |
runs-on: ubuntu-latest | |
name: ubuntu / beta / coverage | |
steps: | |
- uses: actions/checkout@v4 | |
with: | |
submodules: true | |
- name: Cache git folder | |
id: cache-git | |
uses: actions/cache@v4 | |
with: | |
enableCrossOsArchive: true | |
path: TomHarte | |
key: git-folder2 | |
- if: steps.cache-git.outputs.cache-hit != 'true' | |
uses: actions/checkout@v4 | |
with: | |
repository: 'TomHarte/ProcessorTests' | |
path: 'TomHarte' | |
- name: cache-update | |
if: steps.cache-git.outputs.cache-hit == 'true' | |
run: cd TomHarte && git pull | |
- name: Install beta | |
uses: dtolnay/rust-toolchain@beta | |
with: | |
components: llvm-tools-preview | |
- name: cargo install cargo-llvm-cov | |
uses: taiki-e/install-action@cargo-llvm-cov | |
- uses: Swatinem/rust-cache@v2 | |
with: | |
key: "coverage" | |
- name: cargo generate-lockfile | |
if: hashFiles('Cargo.lock') == '' | |
run: cargo generate-lockfile | |
- name: cargo llvm-cov | |
# Exclude nes_pal_gui package as calloop (*nix requirement) can't handle coverage on the version we inherit. | |
run: cargo llvm-cov --locked --all-features --lcov --output-path lcov.info --lib --workspace --exclude nes_pal_gui | |
env: | |
# The package is checked out at the same level as the cpu package | |
# so this ref is one level back. | |
TOM_HARTE_PROCESSOR_TESTS: "../TomHarte" | |
- name: Upload to codecov.io | |
uses: codecov/codecov-action@v4 | |
with: | |
fail_ci_if_error: true | |
token: ${{ secrets.CODECOV_TOKEN }} | |
verbose: true |