diff --git a/.github/workflows/forge-test-intense.yml b/.github/workflows/forge-test-intense.yml new file mode 100644 index 00000000..61e3ca15 --- /dev/null +++ b/.github/workflows/forge-test-intense.yml @@ -0,0 +1,49 @@ +name: Forge Test (Intense) + +on: + workflow_dispatch: + push: + branches: + - mainnet + - testnet-holesky + - dev + +env: + FOUNDRY_PROFILE: ci + RPC_MAINNET: ${{ secrets.RPC_MAINNET }} + RPC_HOLESKY: ${{ secrets.RPC_HOLESKY }} + CHAIN_ID: ${{ secrets.CHAIN_ID }} + +jobs: + # ----------------------------------------------------------------------- + # Forge Test (Intense) + # ----------------------------------------------------------------------- + + forge-test-intense: + name: Test (Intense) + runs-on: ubuntu-latest + steps: + # Check out repository with all submodules for complete codebase access. + - uses: actions/checkout@v4 + with: + submodules: recursive + + # Install the Foundry toolchain. + - name: Install Foundry + uses: foundry-rs/foundry-toolchain@v1 + with: + version: stable + + # Build the project and display contract sizes. + - name: Forge Build + run: | + forge --version + forge build --sizes + id: build + + # Run Forge Test (Intense) + - name: Forge Test (Intense) + run: | + echo -e "\033[1;33mWarning: This workflow may take several hours to complete.\033[0m" + echo -e "\033[1;33mThis intense fuzzing workflow is optional but helps catch edge cases through extended testing.\033[0m" + FOUNDRY_PROFILE=intense forge test -vvv \ No newline at end of file diff --git a/.github/workflows/foundry.yml b/.github/workflows/foundry.yml index c81cd4ad..52f86809 100644 --- a/.github/workflows/foundry.yml +++ b/.github/workflows/foundry.yml @@ -4,9 +4,8 @@ on: workflow_dispatch: push: branches: - - master - mainnet - - testnet-goerli + - testnet-holesky - dev pull_request: @@ -24,8 +23,6 @@ jobs: test: name: Test runs-on: ubuntu-latest - strategy: - fail-fast: true steps: # Check out repository with all submodules for complete codebase access. - uses: actions/checkout@v4 @@ -33,67 +30,32 @@ jobs: submodules: recursive # Install the Foundry toolchain. - - name: "Install Foundry" + - name: Install Foundry uses: foundry-rs/foundry-toolchain@v1 with: version: stable # Run Forge's formatting checker to ensure consistent code style. - - name: "Forge Fmt" + - name: Forge Fmt run: | forge fmt --check id: fmt # Build the project and display contract sizes. - - name: "Forge Build" + - name: Forge Build run: | forge --version forge build --sizes id: build # Run local tests (unit and integration). - - name: "Forge Test (Local)" + - name: Forge Test (Local) run: forge test -vvv # Run integration tests using a mainnet fork. - - name: "Forge Test Integration (Fork)" + - name: Forge Test Integration (Fork) run: FOUNDRY_PROFILE=forktest forge test --match-contract Integration -vvv - # ----------------------------------------------------------------------- - # Forge Test (Intense) - # ----------------------------------------------------------------------- - - continuous-fuzzing: - name: Test (Intense) - runs-on: ubuntu-latest - strategy: - fail-fast: true - steps: - # Check out repository with all submodules for complete codebase access. - - uses: actions/checkout@v4 - with: - submodules: recursive - - # Install the Foundry toolchain. - - name: "Install Foundry" - uses: foundry-rs/foundry-toolchain@v1 - with: - version: stable - - # Build the project and display contract sizes. - - name: "Forge Build" - run: | - forge --version - forge build --sizes - id: build - - # Run Forge Test (Intense) - - name: Forge Test (Intense) - run: | - echo -e "\033[1;33mWarning: This workflow may take several hours to complete.\033[0m" - echo -e "\033[1;33mThis intense fuzzing workflow is optional but helps catch edge cases through extended testing.\033[0m" - FOUNDRY_PROFILE=intense forge test -vvv - # ----------------------------------------------------------------------- # Forge Coverage # ----------------------------------------------------------------------- @@ -101,8 +63,6 @@ jobs: run-coverage: name: Coverage runs-on: ubuntu-latest - strategy: - fail-fast: true steps: # Check out repository with all submodules for complete codebase access. - uses: actions/checkout@v4 @@ -110,7 +70,7 @@ jobs: submodules: recursive # Install the Foundry toolchain. - - name: "Install Foundry" + - name: Install Foundry uses: foundry-rs/foundry-toolchain@v1 with: version: stable @@ -122,7 +82,7 @@ jobs: id: lcov # Build the project and display contract sizes. - - name: "Forge Build" + - name: Forge Build run: | forge --version forge build --sizes @@ -142,7 +102,7 @@ jobs: path: report/* # Check coverage threshold after uploading report - - name: Check Coverage Threshold + - name: Check Coverage Threshold for >=90% run: | LINES_PCT=$(lcov --summary lcov.info | grep "lines" | cut -d ':' -f 2 | cut -d '%' -f 1 | tr -d '[:space:]') FUNCTIONS_PCT=$(lcov --summary lcov.info | grep "functions" | cut -d ':' -f 2 | cut -d '%' -f 1 | tr -d '[:space:]') @@ -180,7 +140,7 @@ jobs: submodules: recursive # Install the Foundry toolchain. - - name: "Install Foundry" + - name: Install Foundry uses: foundry-rs/foundry-toolchain@v1 with: version: stable