bzip2-rs 0.1.2

Pure Rust bzip2 decompressor
Documentation
name: CI

on:
  pull_request:
  push:
    branches:
      - main

env:
  RUST_BACKTRACE: full

jobs:
  rustfmt:
    name: rustfmt / linux / stable
    runs-on: ubuntu-latest

    steps:
      - name: Checkout
        uses: actions/checkout@v2

      - name: Install rust
        run: |
          rustup default nightly-2021-02-16
          rustup component add rustfmt

      - name: cargo fmt -- --check
        run: |
          cargo fmt -- --check

  clippy:
    name: clippy / linux / stable
    runs-on: ubuntu-latest

    steps:
      - name: Checkout
        uses: actions/checkout@v2

      - name: Install rust
        run: |
          rustup update --no-self-update stable
          rustup component add clippy

      - name: cargo clippy
        run: |
          cargo clippy --features rustc_1_40 --all-targets

  test:
    name: test / ${{ matrix.name }}
    runs-on: ubuntu-latest

    strategy:
      matrix:
        include:
          - name: linux / stable
            rust: stable
          - name: linux / beta
            rust: beta
          - name: linux / nightly
            rust: nightly
          - name: linux / 1.37.0
            rust: 1.37.0
          - name: linux / 1.34.2
            rust: 1.34.2

    steps:
      - name: Checkout
        uses: actions/checkout@v2

      - name: Install rust
        run: |
          rustup default ${{ matrix.rust }}
          rustup update --no-self-update ${{ matrix.rust }}

      - name: Remove unused dev-dependencies for benches
        run: |
          sed -i '/criterion/d' Cargo.toml
          sed -i '/bzip2 =/d' Cargo.toml

      - name: Test
        run: |
          cargo test ${{ matrix.args }}

      - name: Test (with rustc 1.37 optimizations)
        if: matrix.rust != '1.34.2'
        run: |
          cargo test --features rustc_1_37

      - name: Test (with rustc 1.40 optimizations)
        if: matrix.rust != '1.37.0' && matrix.rust != '1.34.2'
        run: |
          cargo test --features rustc_1_40

      - name: Test (with rustc nightly optimizations)
        if: matrix.rust == 'nightly'
        run: |
          cargo test --features nightly