name: CI on: pull_request: push: branches: - master env: RUST_BACKTRACE: 1 jobs: style: name: Check Style runs-on: ubuntu-latest steps: - name: Checkout uses: actions/checkout@v3 - name: Install Rust uses: actions-rs/toolchain@v1 with: profile: minimal toolchain: stable override: true components: rustfmt - name: cargo fmt --check uses: actions-rs/cargo@v1 with: command: fmt args: --all -- --check check: name: Check runs-on: ubuntu-latest env: RUSTFLAGS: -Dwarnings strategy: matrix: rust: - stable - nightly steps: - name: Checkout uses: actions/checkout@v3 - name: Install Rust (${{ matrix.rust }}) uses: actions-rs/toolchain@v1 with: profile: minimal toolchain: ${{ matrix.rust }} override: true - uses: actions/cache@v2 with: path: | ~/.cargo/registry ~/.cargo/git target key: ${{ runner.os }}-cargo-${{ hashFiles('**/Cargo.lock') }} - name: Check examples uses: actions-rs/cargo@v1 with: command: check args: --examples --all - name: Check examples with all features on stable uses: actions-rs/cargo@v1 with: command: check args: --examples --all-features --all if: matrix.rust == 'stable' - name: Check benchmarks on nightly uses: actions-rs/cargo@v1 with: command: check args: --all-features --examples --workspace --benches if: matrix.rust == 'nightly' directories: # Job that list subdirectories name: List directories for parallelizing tests runs-on: ubuntu-latest outputs: dir: ${{ steps.set-dirs.outputs.dir }} # generate output name dir by using inner step output steps: - uses: actions/checkout@v3 - id: set-dirs # Give it an id to handle to get step outputs in the outputs key above run: echo "::set-output name=dir::$(ls -d */ | jq -R -s -c 'split("\n")[:-1]')" # Define step output named dir base on ls command transformed to JSON thanks to jq test: name: Test runs-on: ubuntu-latest needs: [directories] # Depends on previous job strategy: matrix: dir: ${{fromJson(needs.directories.outputs.dir)}} # List matrix strategy from directories dynamically # rust: # - stable # - nightly exclude: - dir: scripts/ - dir: curve-constraint-tests/ - dir: mnt4_753/ - dir: mnt6_753/ steps: - name: Checkout uses: actions/checkout@v3 - name: Run tests run: | cd ${{matrix.dir}} cargo test --all-features test-mnt4-753: name: Test (mnt4_753/) runs-on: macos-latest needs: [directories] # Waits for the directory listing job steps: - name: Checkout uses: actions/checkout@v3 - name: Run tests run: | cd mnt4_753/ cargo test --all-features test-mnt6-753: name: Test (mnt6_753/) runs-on: macos-latest needs: [directories] # Waits for the directory listing job steps: - name: Checkout uses: actions/checkout@v3 - name: Run tests run: | cd mnt6_753/ cargo test --all-features docs: name: Check Documentation runs-on: ubuntu-latest steps: - name: Checkout uses: actions/checkout@v3 - name: Install Rust uses: actions-rs/toolchain@v1 with: profile: minimal toolchain: stable override: true components: rustfmt - name: cargo doc --all --no-deps --document-private-items --all-features uses: actions-rs/cargo@v1 with: command: doc args: --all --no-deps --document-private-items --all-features check_no_std: name: Check no_std runs-on: ubuntu-latest steps: - name: Checkout uses: actions/checkout@v3 - name: Install Rust (${{ matrix.rust }}) uses: actions-rs/toolchain@v1 with: toolchain: stable target: aarch64-unknown-none override: true - uses: actions/cache@v2 with: path: | ~/.cargo/registry ~/.cargo/git target key: ${{ runner.os }}-cargo-${{ hashFiles('**/Cargo.lock') }} - name: check uses: actions-rs/cargo@v1 with: command: check args: --examples --workspace --exclude ark-curve-constraint-tests --target aarch64-unknown-none - name: build uses: actions-rs/cargo@v1 with: command: build args: --workspace --exclude ark-curve-constraint-tests --target aarch64-unknown-none