image 0.23.14

Imaging library written in Rust. Provides basic filters and decoders for the most common image formats.
Documentation
name: Rust CI
on:
  push:
    branches: [ master ]
  pull_request:
    branches: [ master ]
jobs:
  build:
    runs-on: ubuntu-latest
    strategy:
      matrix:
        rust: ["1.34.2", stable, beta, nightly]
        features: [ gif, jpeg, png, pnm, tga, dds, tiff, webp, hdr, farbfeld, '' ]
    steps:
    - uses: actions/checkout@v2
    - uses: actions-rs/toolchain@v1
      with:
        toolchain: ${{ matrix.rust }}
        override: true
    - name: build
      run: cargo build -v --no-default-features --features "$FEATURES"
      env:
        FEATURES: ${{ matrix.features }}
    - name: test
      run: >
        cargo test -v --no-default-features --features "$FEATURES" &&
        cargo doc -v --no-default-features --features "$FEATURES"
      if: ${{ matrix.rust != '1.34.2' }}
      env:
        FEATURES: ${{ matrix.features }}
  test_defaults:
    runs-on: ubuntu-latest
    steps:
    - uses: actions/checkout@v2
    - uses: actions-rs/toolchain@v1
      with:
        toolchain: stable
        override: true
    - name: build
      run: cargo build -v --release
    - name: test
      run: cargo test -v --release
  test_avif:
    runs-on: ubuntu-20.04
    steps:
    - name: install-dependencies
      run: sudo apt update && sudo apt install nasm
    - uses: actions/checkout@v2
    - uses: actions-rs/toolchain@v1
      with:
        toolchain: stable
        override: true
    - name: build
      run: cargo build -v --no-default-features --features="avif"
  test_avif_decoding:
    runs-on: ubuntu-20.04
    steps:
    - name: install-dependencies
      run: sudo apt update && sudo apt install ninja-build meson nasm
    - uses: actions/checkout@v2
    - uses: actions-rs/toolchain@v1
      with:
        toolchain: stable
        override: true
    - name: build
      run: cargo build -v --no-default-features --features="avif-decoder"
      env:
        SYSTEM_DEPS_DAV1D_BUILD_INTERNAL: always
  clippy:
    runs-on: ubuntu-20.04
    steps:
    - name: install-dependencies
      run: sudo apt update && sudo apt install ninja-build meson nasm
    - uses: actions/checkout@v2
    - uses: actions-rs/toolchain@v1
      with:
        toolchain: stable
        override: true
        components: clippy
    - uses: actions-rs/cargo@v1
      with:
        args: clippy --all-features -- -D warnings
      env:
        SYSTEM_DEPS_DAV1D_BUILD_INTERNAL: always
  build_fuzz_afl:
    name: "Fuzz targets (afl)"
    runs-on: ubuntu-latest
    steps:
    - uses: actions/checkout@v2
    - uses: actions-rs/toolchain@v1
      with:
        toolchain: nightly
        override: true
    - name: install-deps
      run: sudo apt-get -y install clang llvm
    - name: build
      run: |
        cargo install afl
        cd fuzz-afl
        cargo check --bin reproduce_webp
        cargo check --bin reproduce_pnm
        cargo afl check --bin fuzz_webp
        cargo afl check --bin fuzz_pnm
  build_fuzz_cargo-fuzz:
    name: "Fuzz targets (cargo-fuzz)"
    runs-on: ubuntu-latest
    steps:
    - uses: actions/checkout@v2
    - uses: actions-rs/toolchain@v1
      with:
        toolchain: nightly
        override: true
    - name: build
      run: |
        cargo install cargo-fuzz
        cargo fuzz build
    - name: fuuz
      run: |
        for format in $(cargo fuzz list); do
          cargo fuzz run "$format" -- -runs=0;
        done
  public_private_dependencies:
    name: "Public private dependencies"
    runs-on: ubuntu-latest
    steps:
    - uses: actions/checkout@v2
    - uses: actions-rs/toolchain@v1
      with:
        toolchain: nightly
        override: true
    - name: build
      run: |
        mv ./Cargo.toml.public-private-dependencies ./Cargo.toml
        echo "#![deny(exported_private_dependencies)]" | cat - src/lib.rs > src/lib.rs.0
        mv src/lib.rs.0 src/lib.rs
        cargo check
  build_benchmarks:
    runs-on: ubuntu-latest
    steps:
    - uses: actions/checkout@v2
    - uses: actions-rs/toolchain@v1
      with:
        toolchain: nightly
        override: true
    - name: build
      run: cargo build -v --benches --features=benchmarks