reqwest 0.11.4

higher level HTTP client library
Documentation
name: CI

on:
  pull_request:
  push:
    branches:
      - master

env:
  REQWEST_TEST_BODY_FULL: 1
  RUST_BACKTRACE: 1

jobs:
  style:
    name: Check Style

    runs-on: ubuntu-latest

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

      - name: Install rust
        uses: actions-rs/toolchain@v1
        with:
          toolchain: stable
          components: rustfmt
          profile: minimal
          override: true

      - name: cargo fmt -- --check
        uses: actions-rs/cargo@v1
        with:
          command: fmt
          args: -- --check

      - name: temporary workaround - fmt all files under src
        # Workaround for rust-lang/cargo#7732
        run: cargo fmt -- --check $(find . -name '*.rs' -print)

  build:
    name: ${{ matrix.name }}
    needs: [style]

    runs-on: ${{ matrix.os || 'ubuntu-latest' }}

    # The build matrix does not yet support 'allow failures' at job level.
    # See `jobs.nightly` for the active nightly job definition.
    strategy:
      matrix:
        name:
          - linux / stable
          - linux / beta
          # - linux / nightly
          - macOS / stable
          - windows / stable-x86_64-msvc
          - windows / stable-i686-msvc
          - windows / stable-x86_64-gnu
          - windows / stable-i686-gnu
          - "feat.: default-tls disabled"
          - "feat.: rustls-tls"
          - "feat.: rustls-tls-manual-roots"
          - "feat.: native-tls"
          - "feat.: default-tls and rustls-tls"
          - "feat.: cookies"
          - "feat.: blocking"
          - "feat.: gzip"
          - "feat.: brotli"
          - "feat.: deflate"
          - "feat.: json"
          - "feat.: multipart"
          - "feat.: stream"
          - "feat.: socks/default-tls"
          - "feat.: socks/rustls-tls"
          - "feat.: trust-dns"

        include:
          - name: linux / stable
            test-features: "--features __internal_proxy_sys_no_cache"
          - name: linux / beta
            rust: beta
            test-features: "--features __internal_proxy_sys_no_cache"
          # - name: linux / nightly
          #   rust: nightly
          #   test-features: "--features __internal_proxy_sys_no_cache"
          - name: macOS / stable
            os: macOS-latest
            test-features: "--features __internal_proxy_sys_no_cache"

          - name: windows / stable-x86_64-msvc
            os: windows-latest
            target: x86_64-pc-windows-msvc
            features: "--features blocking,gzip,brotli,deflate,json,multipart"
          - name: windows / stable-i686-msvc
            os: windows-latest
            target: i686-pc-windows-msvc
            features: "--features blocking,gzip,brotli,deflate,json,multipart"
          - name: windows / stable-x86_64-gnu
            os: windows-latest
            rust: stable-x86_64-pc-windows-gnu
            target: x86_64-pc-windows-gnu
            features: "--features blocking,gzip,brotli,deflate,json,multipart"
          - name: windows / stable-i686-gnu
            os: windows-latest
            rust: stable-i686-pc-windows-gnu
            target: i686-pc-windows-gnu
            features: "--features blocking,gzip,brotli,deflate,json,multipart"

          - name: "feat.: default-tls disabled"
            features: "--no-default-features"
          - name: "feat.: rustls-tls"
            features: "--no-default-features --features rustls-tls"
          - name: "feat.: rustls-tls-manual-roots"
            features: "--no-default-features --features rustls-tls-manual-roots"
          - name: "feat.: native-tls"
            features: "--features native-tls"
          - name: "feat.: default-tls and rustls-tls"
            features: "--features rustls-tls"
          - name: "feat.: cookies"
            features: "--features cookies"
          - name: "feat.: blocking"
            features: "--features blocking"
          - name: "feat.: gzip"
            features: "--features gzip"
          - name: "feat.: brotli"
            features: "--features brotli"
          - name: "feat.: deflate"
            features: "--features deflate"
          - name: "feat.: json"
            features: "--features json"
          - name: "feat.: multipart"
            features: "--features multipart"
          - name: "feat.: stream"
            features: "--features stream"
          - name: "feat.: socks/default-tls"
            features: "--features socks"
          - name: "feat.: socks/rustls-tls"
            features: "--features socks,rustls-tls"
          - name: "feat.: trust-dns"
            features: "--features trust-dns"

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

      - name: Install rust
        uses: actions-rs/toolchain@v1
        with:
          toolchain: ${{ matrix.rust || 'stable' }}
          target: ${{ matrix.target }}
          profile: minimal
          override: true

      - name: Build
        uses: actions-rs/cargo@v1
        with:
          command: build
          args: ${{ matrix.features }}

      - name: Test
        uses: actions-rs/cargo@v1
        with:
          command: test
          args: ${{ matrix.features }} ${{ matrix.test-features }} -- --test-threads=1

  docs:
    name: Docs
    runs-on: ubuntu-latest

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

      - name: Install Rust
        uses: actions-rs/toolchain@v1
        with:
          toolchain: stable
          profile: minimal
          override: true

      - name: Check documentation
        env:
          RUSTDOCFLAGS: -D warnings
        uses: actions-rs/cargo@v1
        with:
          command: doc
          args: --no-deps --document-private-items --all-features

  # Separate build job for nightly because of the missing feature for allowed failures at
  # job level. See `jobs.build.strategy.matrix`.
  nightly:
    name: linux / nightly
    needs: [style]

    runs-on: ubuntu-latest

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

      - name: Install rust
        uses: actions-rs/toolchain@v1
        with:
          toolchain: nightly
          profile: minimal
          override: true

      - name: Build
        uses: actions-rs/cargo@v1
        with:
          command: build

      - name: Test
        uses: actions-rs/cargo@v1
        with:
          command: test
          args: --features __internal_proxy_sys_no_cache -- --test-threads=1

      - name: Check minimal versions
        run: |
          cargo clean
          cargo update -Z minimal-versions
          cargo check
          cargo check --all-features

  minversion:
    name: Minimum version ${{ matrix.rust }}
    needs: [style]

    runs-on: ubuntu-latest

    strategy:
      matrix:
        rust: [1.46.0]

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

      - name: Install rust
        uses: actions-rs/toolchain@v1
        with:
          toolchain: ${{ matrix.rust }}
          profile: minimal
          override: true

      - name: Check
        uses: actions-rs/cargo@v1
        with:
          command: check

  android:
    name: Android
    needs: [style]

    runs-on: ubuntu-latest

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

      - name: Install rust
        uses: actions-rs/toolchain@v1
        with:
          toolchain: stable
          target: aarch64-linux-android
          profile: minimal
          override: true

      - name: Build
        uses: actions-rs/cargo@v1
        with:
          use-cross: true
          command: build
          # disable default-tls feature since cross-compiling openssl is dragons
          args: --target aarch64-linux-android --no-default-features

  wasm:
    name: WASM
    needs: [style]

    runs-on: ubuntu-latest

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

      - name: Install rust
        uses: actions-rs/toolchain@v1
        with:
          toolchain: stable
          target: wasm32-unknown-unknown
          profile: minimal
          override: true

      - name: Check
        uses: actions-rs/cargo@v1
        with:
          command: check
          args: --target wasm32-unknown-unknown

      - name: Install wasm-pack
        run: curl https://rustwasm.github.io/wasm-pack/installer/init.sh -sSf | sh

      - name: Wasm-pack test firefox
        run: wasm-pack test --headless --firefox

      - name: Wasm-pack test chrome
        run: wasm-pack test --headless --chrome