rustwide 0.23.1

Execute your code on the Rust ecosystem.
Documentation
name: CI

on:
  push:
    branches:
      - main
  pull_request:
    branches:
      - "**"

jobs:

  lint:
    name: Lint
    runs-on: ubuntu-latest
    steps:
      - name: Checkout the source code
        uses: actions/checkout@main

      - name: Install Rust stable
        run: |
          rustup toolchain update --no-self-update stable
          rustup default stable
          rustup component add clippy rustfmt

      - name: Run rustfmt
        run: cargo fmt -- --check

      - name: Run clippy
        run: cargo clippy --all --all-features -- -Dwarnings

  test:
    name: Test
    runs-on: ${{ matrix.os }}
    strategy:
      matrix:
        os: [ubuntu-22.04, windows-latest]
        cargo_flags:
          - ""
          - "--all-features"
        include:
          # Integration tests are disabled on Windows as they take *way* too
          # long to pull the Docker image
          - os: windows-latest
            test_flags: --skip buildtest --skip integration --skip run_binary_with_same_name_as_file
    steps:
      - name: Checkout the source code
        uses: actions/checkout@main

      - name: Install Rust stable
        run: |
          rustup toolchain update --no-self-update stable
          rustup default stable

      - name: Build rustwide
        run: cargo build --all ${{ matrix.cargo_flags }}

      # Having swap enabled causes problems with the OOM detector, so let's
      # disable all swapfiles before running the build.
      - name: Disable swap on Linux
        run: sudo swapoff -a
        if: matrix.os == 'ubuntu-latest'

      - name: Test rustwide
        run: cargo test --all ${{ matrix.cargo_flags }} -- ${{ matrix.test_flags }}