diff --git a/.github/workflows/pr-tests.yml b/.github/workflows/pr-tests.yml index 64316e0297..e88c71cec0 100644 --- a/.github/workflows/pr-tests.yml +++ b/.github/workflows/pr-tests.yml @@ -12,7 +12,7 @@ env: CARGO_TERM_COLOR: always jobs: - test: + build: runs-on: ubuntu-latest steps: @@ -38,12 +38,6 @@ jobs: key: ${{ runner.os }}-pilcom-node-modules - name: Install Rust toolchain 1.72 (with clippy and rustfmt) run: rustup toolchain install 1.72-x86_64-unknown-linux-gnu && rustup component add clippy --toolchain 1.72-x86_64-unknown-linux-gnu && rustup component add rustfmt --toolchain 1.72-x86_64-unknown-linux-gnu - - name: Install nightly - run: rustup toolchain install nightly-2023-01-03-x86_64-unknown-linux-gnu - - name: Install riscv target - run: rustup target add riscv32imac-unknown-none-elf --toolchain nightly-2023-01-03-x86_64-unknown-linux-gnu - - name: Install stdlib - run: rustup component add rust-src --toolchain nightly-2023-01-03-x86_64-unknown-linux-gnu - name: Lint run: cargo clippy --all --all-features --profile pr-tests -- -D warnings - name: Format @@ -52,10 +46,11 @@ jobs: run: cargo bench --all --all-features --profile pr-tests --no-run - name: Check without Halo2 run: cargo check --all --no-default-features --profile pr-tests - - name: Install pilcom - run: git clone https://github.com/0xPolygonHermez/pilcom.git && cd pilcom && npm install - name: Build run: cargo build --all-targets --all --all-features --profile pr-tests + - uses: taiki-e/install-action@nextest + - name: Create tests archive + run: cargo nextest archive --archive-file tests.tar.zst --cargo-profile pr-tests --workspace --all-features - name: ⚡ Save rust cache if: github.ref == 'refs/heads/main' uses: actions/cache/save@v3 @@ -65,10 +60,80 @@ jobs: ~/.cargo/git target key: ${{ runner.os }}-cargo-pr-tests-${{ hashFiles('**/Cargo.toml') }} + - name: Upload tests archive + uses: actions/upload-artifact@v2 + with: + name: tests_archive + path: tests.tar.zst + + test_quick: + needs: build + runs-on: ubuntu-latest + + steps: + - uses: actions/checkout@v3 + with: + submodules: recursive + - name: Download build artifacts + uses: actions/download-artifact@v2 + with: + name: tests_archive + - name: ⚡ Cache nodejs + uses: actions/cache@v3 + with: + path: | + ~/pilcom/node_modules + key: ${{ runner.os }}-pilcom-node-modules + - name: Install Rust toolchain 1.72 (with clippy and rustfmt) + run: rustup toolchain install 1.72-x86_64-unknown-linux-gnu && rustup component add clippy --toolchain 1.72-x86_64-unknown-linux-gnu && rustup component add rustfmt --toolchain 1.72-x86_64-unknown-linux-gnu + - name: Install nightly + run: rustup toolchain install nightly-2023-01-03-x86_64-unknown-linux-gnu + - name: Install riscv target + run: rustup target add riscv32imac-unknown-none-elf --toolchain nightly-2023-01-03-x86_64-unknown-linux-gnu + - name: Install stdlib + run: rustup component add rust-src --toolchain nightly-2023-01-03-x86_64-unknown-linux-gnu + - name: Install pilcom + run: git clone https://github.com/0xPolygonHermez/pilcom.git && cd pilcom && npm install + - uses: taiki-e/install-action@nextest - name: Run default tests - if: github.ref != 'refs/heads/main' - run: PILCOM=$(pwd)/pilcom/ cargo test --all --all-features --profile pr-tests --verbose + run: PILCOM=$(pwd)/pilcom/ cargo nextest run --archive-file tests.tar.zst --verbose + + test_slow: + strategy: + matrix: + test: + - "'test(=test_keccak) | test(=test_vec_median) | test(=instruction_tests::addi)'" + - "'test(=test_many_chunks)'" + needs: build + runs-on: ubuntu-latest + + steps: + - uses: actions/checkout@v3 + with: + submodules: recursive + - name: Download build artifacts + uses: actions/download-artifact@v2 + with: + name: tests_archive + - name: ⚡ Cache nodejs + uses: actions/cache@v3 + with: + path: | + ~/pilcom/node_modules + key: ${{ runner.os }}-pilcom-node-modules + - name: Install Rust toolchain 1.72 (with clippy and rustfmt) + run: rustup toolchain install 1.72-x86_64-unknown-linux-gnu && rustup component add clippy --toolchain 1.72-x86_64-unknown-linux-gnu && rustup component add rustfmt --toolchain 1.72-x86_64-unknown-linux-gnu + - name: Install nightly + run: rustup toolchain install nightly-2023-01-03-x86_64-unknown-linux-gnu + - name: Install riscv target + run: rustup target add riscv32imac-unknown-none-elf --toolchain nightly-2023-01-03-x86_64-unknown-linux-gnu + - name: Install stdlib + run: rustup component add rust-src --toolchain nightly-2023-01-03-x86_64-unknown-linux-gnu + - name: Install pilcom + run: git clone https://github.com/0xPolygonHermez/pilcom.git && cd pilcom && npm install + - uses: taiki-e/install-action@nextest - name: Run slow tests - if: github.ref != 'refs/heads/main' # Number threads is set to 1 because the runner does not have enough memory for more. - run: PILCOM=$(pwd)/pilcom/ cargo test --all --all-features --profile pr-tests --verbose -- --ignored --nocapture --test-threads=1 --exact test_keccak test_vec_median instruction_tests::addi test_many_chunks + run: > + PILCOM=$(pwd)/pilcom/ cargo nextest run --archive-file tests.tar.zst --verbose --run-ignored=ignored-only --no-capture + -E ${{ matrix.test }}