[go: up one dir, main page]

winit 0.28.1

Cross-platform window creation library.
Documentation
name: CI

on:
  pull_request:
  push:
    branches: [master]

jobs:
  Check_Formatting:
    runs-on: ubuntu-latest
    steps:
    - uses: actions/checkout@v2
    - uses: hecrj/setup-rust-action@v1
      with:
        rust-version: stable
        components: rustfmt
    - name: Check Formatting
      run: cargo +stable fmt --all -- --check

  tests:
    name: Tests
    strategy:
      fail-fast: false
      matrix:
        rust_version: ['1.60.0', stable, nightly]
        platform:
          # Note: Make sure that we test all the `docs.rs` targets defined in Cargo.toml!
          - { target: x86_64-pc-windows-msvc,   os: windows-latest,  }
          - { target: i686-pc-windows-msvc,     os: windows-latest,  }
          - { target: x86_64-pc-windows-gnu,    os: windows-latest, host: -x86_64-pc-windows-gnu }
          - { target: i686-pc-windows-gnu,      os: windows-latest, host: -i686-pc-windows-gnu }
          - { target: i686-unknown-linux-gnu,   os: ubuntu-latest,   }
          - { target: x86_64-unknown-linux-gnu, os: ubuntu-latest,   }
          - { target: x86_64-unknown-linux-gnu, os: ubuntu-latest, options: --no-default-features, features: x11 }
          - { target: x86_64-unknown-linux-gnu, os: ubuntu-latest, options: --no-default-features, features: "wayland,wayland-dlopen" }
          - { target: aarch64-linux-android,    os: ubuntu-latest, options: -p winit, cmd: 'apk --', features: "android-native-activity" }
          - { target: x86_64-unknown-redox,     os: ubuntu-latest,   }
          - { target: x86_64-apple-darwin,      os: macos-latest,    }
          - { target: x86_64-apple-ios,         os: macos-latest,    }
          - { target: aarch64-apple-ios,        os: macos-latest,    }
          # We're using Windows rather than Ubuntu to run the wasm tests because caching cargo-web
          # doesn't currently work on Linux.
          - { target: wasm32-unknown-unknown,   os: windows-latest,  }

    env:
      RUST_BACKTRACE: 1
      CARGO_INCREMENTAL: 0
      RUSTFLAGS: "-C debuginfo=0 --deny warnings"
      OPTIONS: ${{ matrix.platform.options }}
      FEATURES: ${{ format(',{0}', matrix.platform.features ) }}
      CMD: ${{ matrix.platform.cmd }}
      RUSTDOCFLAGS: -Dwarnings

    runs-on: ${{ matrix.platform.os }}
    steps:
    - uses: actions/checkout@v2
    # Used to cache cargo-web
    - name: Cache cargo folder
      uses: actions/cache@v1
      with:
        path: ~/.cargo
        key: ${{ matrix.platform.target }}-cargo-${{ matrix.rust_version }}

    - uses: hecrj/setup-rust-action@v1
      with:
        rust-version: ${{ matrix.rust_version }}${{ matrix.platform.host }}
        targets: ${{ matrix.platform.target }}
        components: clippy

    - name: Install GCC Multilib
      if: (matrix.platform.os == 'ubuntu-latest') && contains(matrix.platform.target, 'i686')
      run: sudo apt-get update && sudo apt-get install gcc-multilib
    - name: Install cargo-apk
      if: contains(matrix.platform.target, 'android')
      run: cargo install cargo-apk

    - name: Check documentation
      shell: bash
      run: cargo doc --no-deps --target ${{ matrix.platform.target }} $OPTIONS --features $FEATURES --document-private-items

    - name: Build crate
      shell: bash
      run: cargo $CMD build --verbose --target ${{ matrix.platform.target }} $OPTIONS --features $FEATURES

    - name: Build tests
      shell: bash
      if: >
        !contains(matrix.platform.target, 'redox') &&
        matrix.rust_version != '1.60.0'
      run: cargo $CMD test --no-run --verbose --target ${{ matrix.platform.target }} $OPTIONS --features $FEATURES

    - name: Run tests
      shell: bash
      if: >
        !contains(matrix.platform.target, 'android') &&
        !contains(matrix.platform.target, 'ios') &&
        !contains(matrix.platform.target, 'wasm32') &&
        !contains(matrix.platform.target, 'redox') &&
        matrix.rust_version != '1.60.0'
      run: cargo $CMD test --verbose --target ${{ matrix.platform.target }} $OPTIONS --features $FEATURES

    - name: Lint with clippy
      shell: bash
      if: (matrix.rust_version == 'stable') && !contains(matrix.platform.options, '--no-default-features')
      run: cargo clippy --all-targets --target ${{ matrix.platform.target }} $OPTIONS --features $FEATURES -- -Dwarnings

    - name: Build tests with serde enabled
      shell: bash
      if: >
        !contains(matrix.platform.target, 'redox') &&
        matrix.rust_version != '1.60.0'
      run: cargo $CMD test --no-run --verbose --target ${{ matrix.platform.target }} $OPTIONS --features serde,$FEATURES
    - name: Run tests with serde enabled
      shell: bash
      if: >
        !contains(matrix.platform.target, 'android') &&
        !contains(matrix.platform.target, 'ios') &&
        !contains(matrix.platform.target, 'wasm32') &&
        !contains(matrix.platform.target, 'redox') &&
        matrix.rust_version != '1.60.0'
      run: cargo $CMD test --verbose --target ${{ matrix.platform.target }} $OPTIONS --features serde,$FEATURES