119625d8cSopenharmony_ciname: rust-next
219625d8cSopenharmony_cion:
319625d8cSopenharmony_ci  schedule:
419625d8cSopenharmony_ci  - cron: '3 3 3 * *'
519625d8cSopenharmony_cipermissions:
619625d8cSopenharmony_ci  contents: read
719625d8cSopenharmony_ci
819625d8cSopenharmony_cijobs:
919625d8cSopenharmony_ci  test:
1019625d8cSopenharmony_ci    name: Test
1119625d8cSopenharmony_ci    strategy:
1219625d8cSopenharmony_ci      matrix:
1319625d8cSopenharmony_ci        build: [stable, linux, windows, mac, nightly, minimal, default, next]
1419625d8cSopenharmony_ci        include:
1519625d8cSopenharmony_ci        - build: stable
1619625d8cSopenharmony_ci          os: ubuntu-latest
1719625d8cSopenharmony_ci          rust: "stable"
1819625d8cSopenharmony_ci          features: "full"
1919625d8cSopenharmony_ci        - build: linux
2019625d8cSopenharmony_ci          os: ubuntu-latest
2119625d8cSopenharmony_ci          rust: "beta"
2219625d8cSopenharmony_ci          features: "full"
2319625d8cSopenharmony_ci        - build: windows
2419625d8cSopenharmony_ci          os: windows-latest
2519625d8cSopenharmony_ci          rust: "beta"
2619625d8cSopenharmony_ci          features: "full"
2719625d8cSopenharmony_ci        - build: mac
2819625d8cSopenharmony_ci          os: macos-latest
2919625d8cSopenharmony_ci          rust: "beta"
3019625d8cSopenharmony_ci          features: "full"
3119625d8cSopenharmony_ci        - build: nightly
3219625d8cSopenharmony_ci          os: ubuntu-latest
3319625d8cSopenharmony_ci          rust: "nightly"
3419625d8cSopenharmony_ci          features: "full"
3519625d8cSopenharmony_ci        - build: minimal
3619625d8cSopenharmony_ci          os: ubuntu-latest
3719625d8cSopenharmony_ci          rust: "stable"
3819625d8cSopenharmony_ci          features: "minimal"
3919625d8cSopenharmony_ci        - build: default
4019625d8cSopenharmony_ci          os: ubuntu-latest
4119625d8cSopenharmony_ci          rust: "stable"
4219625d8cSopenharmony_ci          features: "default"
4319625d8cSopenharmony_ci        - build: next
4419625d8cSopenharmony_ci          os: ubuntu-latest
4519625d8cSopenharmony_ci          rust: "stable"
4619625d8cSopenharmony_ci          features: "next"
4719625d8cSopenharmony_ci    continue-on-error: ${{ matrix.rust != 'stable' }}
4819625d8cSopenharmony_ci    runs-on: ${{ matrix.os }}
4919625d8cSopenharmony_ci    steps:
5019625d8cSopenharmony_ci    - name: Checkout repository
5119625d8cSopenharmony_ci      uses: actions/checkout@v3
5219625d8cSopenharmony_ci    - name: Install Rust
5319625d8cSopenharmony_ci      uses: actions-rs/toolchain@v1
5419625d8cSopenharmony_ci      with:
5519625d8cSopenharmony_ci        toolchain: ${{ matrix.rust }}
5619625d8cSopenharmony_ci        profile: minimal
5719625d8cSopenharmony_ci        override: true
5819625d8cSopenharmony_ci    - uses: Swatinem/rust-cache@v2
5919625d8cSopenharmony_ci    - name: Build
6019625d8cSopenharmony_ci      run: make build-${{matrix.features}}
6119625d8cSopenharmony_ci    - name: Test
6219625d8cSopenharmony_ci      run: make test-${{matrix.features}}
6319625d8cSopenharmony_ci    - name: Test (benches)
6419625d8cSopenharmony_ci      run: make test-${{matrix.features}} ARGS='--workspace --benches'
6519625d8cSopenharmony_ci    - name: Test (ultra-minimal)
6619625d8cSopenharmony_ci      if: matrix.build == 'minimal'
6719625d8cSopenharmony_ci      run: make test-minimal ARGS='--manifest-path Cargo.toml'
6819625d8cSopenharmony_ci  rustfmt:
6919625d8cSopenharmony_ci    name: rustfmt
7019625d8cSopenharmony_ci    strategy:
7119625d8cSopenharmony_ci      matrix:
7219625d8cSopenharmony_ci        rust:
7319625d8cSopenharmony_ci        - stable
7419625d8cSopenharmony_ci        - beta
7519625d8cSopenharmony_ci    continue-on-error: ${{ matrix.rust != 'stable' }}
7619625d8cSopenharmony_ci    runs-on: ubuntu-latest
7719625d8cSopenharmony_ci    steps:
7819625d8cSopenharmony_ci    - name: Checkout repository
7919625d8cSopenharmony_ci      uses: actions/checkout@v3
8019625d8cSopenharmony_ci    - name: Install Rust
8119625d8cSopenharmony_ci      uses: actions-rs/toolchain@v1
8219625d8cSopenharmony_ci      with:
8319625d8cSopenharmony_ci        toolchain: ${{ matrix.rust }}
8419625d8cSopenharmony_ci        profile: minimal
8519625d8cSopenharmony_ci        override: true
8619625d8cSopenharmony_ci        components: rustfmt
8719625d8cSopenharmony_ci    - uses: Swatinem/rust-cache@v2
8819625d8cSopenharmony_ci    - name: Check formatting
8919625d8cSopenharmony_ci      run: cargo fmt --all -- --check
9019625d8cSopenharmony_ci  clippy:
9119625d8cSopenharmony_ci    name: clippy
9219625d8cSopenharmony_ci    strategy:
9319625d8cSopenharmony_ci      matrix:
9419625d8cSopenharmony_ci        rust:
9519625d8cSopenharmony_ci        - 1.64.0  # MSRV
9619625d8cSopenharmony_ci        - stable
9719625d8cSopenharmony_ci    continue-on-error: ${{ matrix.rust != '1.64.0' }}  # MSRV
9819625d8cSopenharmony_ci    runs-on: ubuntu-latest
9919625d8cSopenharmony_ci    steps:
10019625d8cSopenharmony_ci    - name: Checkout repository
10119625d8cSopenharmony_ci      uses: actions/checkout@v3
10219625d8cSopenharmony_ci    - name: Install Rust
10319625d8cSopenharmony_ci      uses: actions-rs/toolchain@v1
10419625d8cSopenharmony_ci      with:
10519625d8cSopenharmony_ci        toolchain: ${{ matrix.rust }}
10619625d8cSopenharmony_ci        profile: minimal
10719625d8cSopenharmony_ci        override: true
10819625d8cSopenharmony_ci        components: clippy
10919625d8cSopenharmony_ci    - uses: Swatinem/rust-cache@v2
11019625d8cSopenharmony_ci    - name: Lint (ultra-minimal)
11119625d8cSopenharmony_ci      run: make clippy-minimal ARGS='--manifest-path Cargo.toml'
11219625d8cSopenharmony_ci    - name: Lint Minimal
11319625d8cSopenharmony_ci      run: make clippy-minimal
11419625d8cSopenharmony_ci    - name: Lint All
11519625d8cSopenharmony_ci      run: make clippy-full
11619625d8cSopenharmony_ci    - name: Lint (release)
11719625d8cSopenharmony_ci      run: make clippy-release
118