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@v1 - 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 test: name: Test runs-on: ubuntu-latest env: RUSTFLAGS: -Dwarnings --cfg ci strategy: matrix: rust: - stable - nightly steps: - name: Checkout uses: actions/checkout@v2 - 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 --all --benches if: matrix.rust == 'nightly' - name: Test uses: actions-rs/cargo@v1 with: command: test args: "--all \ --all-features \ --exclude cp-benches " docs: name: Check Documentation runs-on: ubuntu-latest steps: - name: Checkout uses: actions/checkout@v1 - 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@v2 - name: Install Rust (${{ matrix.rust }}) uses: actions-rs/toolchain@v1 with: toolchain: stable target: thumbv6m-none-eabi override: true - name: Install Rust ARM64 (${{ 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: r1cs-std run: | cargo build --no-default-features --target aarch64-unknown-none cargo check --examples --no-default-features --target aarch64-unknown-none test_against_curves: name: Test against curves runs-on: ubuntu-latest env: RUSTFLAGS: -Dwarnings strategy: matrix: curve: - bls12_377 - pallas - vesta - mnt4_298 - mnt6_298 - mnt6_753 - ed_on_bls12_381 steps: - name: Checkout curves uses: actions/checkout@v2 with: repository: arkworks-rs/curves - name: Checkout r1cs-std uses: actions/checkout@v2 with: path: r1cs-std - name: Install Rust uses: actions-rs/toolchain@v1 with: profile: minimal toolchain: stable override: true - name: Patch cargo.toml run: | if grep -q "\[patch.crates-io\]" Cargo.toml ; then MATCH=$(awk '/\[patch.crates-io\]/{ print NR; exit }' Cargo.toml); sed -i "$MATCH,\$d" Cargo.toml fi { echo "[patch.crates-io]" echo "ark-std = { git = 'https://github.com/arkworks-rs/std' }" echo "ark-ec = { git = 'https://github.com/arkworks-rs/algebra' }" echo "ark-ff = { git = 'https://github.com/arkworks-rs/algebra' }" echo "ark-poly = { git = 'https://github.com/arkworks-rs/algebra' }" echo "ark-serialize = { git = 'https://github.com/arkworks-rs/algebra' }" echo "ark-algebra-test-templates = { git = 'https://github.com/arkworks-rs/algebra' }" echo "ark-r1cs-std = { path = 'r1cs-std' }" } >> Cargo.toml - name: Test on ${{ matrix.curve }} run: "cd ${{ matrix.curve }} && cargo test --features 'r1cs'"