name: CI on: push: branches: [main] pull_request: branches: [main] env: CARGO_TERM_COLOR: always RUSTFLAGS: "-D warnings" jobs: check: name: Check runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - uses: dtolnay/rust-toolchain@stable - uses: Swatinem/rust-cache@v2 - run: cargo check --all-targets fmt: name: Format runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - uses: dtolnay/rust-toolchain@stable with: components: rustfmt - run: cargo fmt --all -- --check clippy: name: Clippy runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - uses: dtolnay/rust-toolchain@stable with: components: clippy - uses: Swatinem/rust-cache@v2 - run: cargo clippy --all-targets -- -D warnings test: name: Test runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - uses: dtolnay/rust-toolchain@stable - uses: Swatinem/rust-cache@v2 - run: cargo test --all-targets examples: name: Build Examples runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - uses: dtolnay/rust-toolchain@stable - uses: Swatinem/rust-cache@v2 - run: cargo build --release - name: Compile all .ne examples run: | for f in examples/*.ne; do echo "==> Compiling $f" cargo run --release -- build "$f" done - name: Verify ROMs are valid iNES run: | for f in examples/*.nes; do echo "==> Checking $f" # iNES magic: first 4 bytes must be "NES\x1a" header=$(od -A n -t x1 -N 4 "$f" | tr -d ' ') if [ "$header" != "4e45531a" ]; then echo "FAIL: $f is not a valid iNES ROM (header: $header)" exit 1 fi size=$(stat -c%s "$f") echo " OK: $size bytes" done