ivm 0.6.0

The cross-platform Inko version manager
---
name: Tests
on:
  push:
  pull_request:
  workflow_dispatch:

env:
  CARGO_HOME: ${{ github.workspace }}/.cargo-home
  CARGO_REGISTRIES_CRATES_IO_PROTOCOL: sparse

concurrency:
  group: ${{ github.workflow }}-${{ github.ref }}
  cancel-in-progress: ${{ github.event_name == 'pull_request' }}

jobs:
  cargo-deny:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - uses: EmbarkStudios/cargo-deny-action@v1

  cargo-clippy:
    runs-on: ubuntu-latest
    container:
      image: ghcr.io/inko-lang/ci:fedora
    steps:
      - uses: actions/checkout@v4
      - uses: actions/cache@v4
        with:
          path: |
            ${{ env.CARGO_HOME }}
            target
          key: fedora
      - name: Run clippy
        run: 'cargo clippy -- -D warnings'

  cargo-fmt:
    runs-on: ubuntu-latest
    container:
      image: ghcr.io/inko-lang/ci:fedora
    steps:
      - uses: actions/checkout@v4
      - uses: actions/cache@v4
        with:
          path: |
            ${{ env.CARGO_HOME }}
            target
          key: fedora
      - name: Run rustfmt
        run: 'cargo fmt --all --check'

  test:
    strategy:
      matrix:
        os:
          - macos-latest
          - ubuntu-latest
    runs-on: ${{ matrix.os }}
    steps:
      - uses: actions/checkout@v4
      - uses: dtolnay/rust-toolchain@master
        with:
          toolchain: "1.78"
      - uses: actions/cache@v4
        with:
          path: |
            ${{ env.CARGO_HOME }}
            target
          key: ${{ runner.os }}
      - name: Running tests
        run: cargo test