This repository has been archived by the owner on Dec 18, 2023. It is now read-only.
Fix #178: Make MNT{4,6}-753, cp6_782 tests run conditionally #637
Workflow file for this run
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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@v3 | |
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/ | |
- dir: cp6_782/ | |
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 | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v3 | |
- name: Check if source code updated | |
uses: dorny/[email protected] | |
id: check-diff | |
with: | |
filters: | | |
mnt4_753_is_updated: | |
- 'mnt4_753/**' | |
- name: Generate lockfile | |
run: cargo generate-lockfile | |
- name: Check if deps updated | |
id: deps-updated | |
uses: actions/cache@v3 | |
with: | |
path: | | |
~/.cargo/registry | |
~/.cargo/git | |
target | |
key: ${{ runner.os }}-cargo-${{ hashFiles('**/Cargo.lock') }} | |
- name: Conditionally run the tests | |
# if source code updated OR dependencies updated | |
if: ${{ steps.check-diff.outputs.mnt4_753_is_updated == 'true' || steps.deps-updated.outputs.cache-hit != 'true' }} | |
run: | | |
cd mnt4_753/ | |
cargo test --all-features | |
test-mnt6-753: | |
name: Test (mnt6_753/) | |
runs-on: macos-latest | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v3 | |
- name: Check if source code updated | |
uses: dorny/[email protected] | |
id: check-diff | |
with: | |
filters: | | |
mnt6_753_is_updated: | |
- 'mnt6_753/**' | |
- name: Generate lockfile | |
run: cargo generate-lockfile | |
- name: Check if deps updated | |
id: deps-updated | |
uses: actions/cache@v3 | |
with: | |
path: | | |
~/.cargo/registry | |
~/.cargo/git | |
target | |
key: ${{ runner.os }}-cargo-${{ hashFiles('**/Cargo.lock') }} | |
- name: Conditionally run the tests | |
# if source code updated OR dependencies updated | |
if: ${{ steps.check-diff.outputs.mnt6_753_is_updated == 'true' || steps.deps-updated.outputs.cache-hit != 'true' }} | |
run: | | |
cd mnt6_753/ | |
cargo test --all-features | |
test-cp6_782: | |
name: Test (cp6_782/) | |
runs-on: ubuntu-latest | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v3 | |
- name: Check if source code updated | |
uses: dorny/[email protected] | |
id: check-diff | |
with: | |
filters: | | |
cp6_782_is_updated: | |
- 'cp6_782/**' | |
- name: Generate lockfile | |
run: cargo generate-lockfile | |
- name: Check if deps updated | |
id: deps-updated | |
uses: actions/cache@v3 | |
with: | |
path: | | |
~/.cargo/registry | |
~/.cargo/git | |
target | |
key: ${{ runner.os }}-cargo-${{ hashFiles('**/Cargo.lock') }} | |
- name: Conditionally run the tests | |
# if source code updated OR dependencies updated | |
if: ${{ steps.check-diff.outputs.cp6_782_is_updated == 'true' || steps.deps-updated.outputs.cache-hit != 'true' }} | |
run: | | |
cd cp6_782/ | |
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 | |
uses: actions-rs/toolchain@v1 | |
with: | |
toolchain: stable | |
target: thumbv6m-none-eabi | |
override: true | |
- uses: actions/cache@v3 | |
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 thumbv6m-none-eabi | |
- name: build | |
uses: actions-rs/cargo@v1 | |
with: | |
command: build | |
args: --workspace --exclude ark-curve-constraint-tests --target thumbv6m-none-eabi |