diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 8b4ffe3..fe06a7d 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -29,8 +29,8 @@ jobs: command: fmt args: --all -- --check - test: - name: Test + check: + name: Check runs-on: ubuntu-latest env: RUSTFLAGS: -Dwarnings @@ -78,13 +78,39 @@ jobs: args: --all-features --examples --workspace --benches if: matrix.rust == 'nightly' - - name: Test - uses: actions-rs/cargo@v1 - with: - command: test - args: "--workspace \ - --all-features \ - --exclude curve-benches" + + + 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@v2 + - 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: curve-benches/ + steps: + - name: Checkout + uses: actions/checkout@v2 + - name: Run tests + run: | + cd ${{matrix.dir}} + cargo test --all-features docs: name: Check Documentation