Reentrancy ink5 support #249
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: Test Detectors | |
on: | |
push: | |
branches: | |
- "main" | |
paths: | |
- "detectors/**" | |
- "test-cases/**" | |
pull_request: | |
paths: | |
- "detectors/**" | |
- "test-cases/**" | |
env: | |
CARGO_TERM_COLOR: always | |
RUST_BACKTRACE: full | |
PYTHONUNBUFFERED: 1 | |
jobs: | |
validate-detectors: | |
name: Validate | |
runs-on: ubuntu-latest | |
outputs: | |
status: ${{ job.status }} | |
steps: | |
- name: Checkout repository | |
uses: actions/checkout@v4 | |
- name: Set up Python | |
uses: actions/setup-python@v5 | |
with: | |
python-version: "3.9" | |
- name: Install dependencies | |
run: pip install fuzzywuzzy | |
- name: Validate detectors | |
run: python scripts/validate-detectors.py | |
build: | |
name: Build | |
needs: validate-detectors | |
strategy: | |
matrix: | |
os: | |
- ubuntu-latest | |
- macos-latest | |
runs-on: ${{ matrix.os }} | |
steps: | |
- name: Checkout repository | |
uses: actions/checkout@v4 | |
- name: Cache cargo dependencies | |
uses: actions/cache@v4 | |
with: | |
path: ~/.cargo | |
key: ${{ runner.os }}-tests-${{ hashFiles('**/Cargo.lock') }} | |
- name: Install Rust stable | |
run: rustup install stable --profile minimal | |
- name: Update Rust Toolchain | |
run: rustup update | |
- name: Install Rust nightly | |
run: rustup install nightly --profile minimal | |
- name: Install dylint, dylint-link and cargo-scout-audit | |
run: cargo +nightly install cargo-dylint dylint-link cargo-scout-audit | |
- name: Determine build status and write to file | |
run: echo "${{ job.status }}" > status-${{ matrix.os }}.txt | |
- name: Upload build status artifact | |
uses: actions/upload-artifact@v4 | |
with: | |
name: build-status-${{ matrix.os }} | |
path: status-${{ matrix.os }}.txt | |
prepare-detector-matrix: | |
name: Prepare Detector Matrix | |
runs-on: ubuntu-latest | |
needs: build | |
outputs: | |
matrix: ${{ steps.set-matrix.outputs.matrix }} | |
steps: | |
- name: Checkout repository | |
uses: actions/checkout@v4 | |
- id: set-matrix | |
working-directory: test-cases | |
run: echo "matrix=$(find . -mindepth 1 -maxdepth 1 -type d -exec basename {} \; | jq -R -cs 'split("\n")[:-1]')" >> $GITHUB_OUTPUT | |
test: | |
name: Test detector | |
needs: [build, prepare-detector-matrix] | |
strategy: | |
fail-fast: false | |
matrix: | |
os: | |
- ubuntu-latest | |
- macos-latest | |
detector: ${{fromJson(needs.prepare-detector-matrix.outputs.matrix)}} | |
runs-on: ${{ matrix.os }} | |
outputs: | |
status: ${{ job.status }} | |
steps: | |
- name: Checkout repository | |
uses: actions/checkout@v4 | |
- name: Set up Python | |
uses: actions/setup-python@v5 | |
with: | |
python-version: "3.9" | |
- name: Cache cargo dependencies | |
uses: actions/cache@v4 | |
with: | |
path: ~/.cargo | |
key: ${{ runner.os }}-tests-${{ hashFiles('**/Cargo.lock') }}. | |
# This is broken until ink! solves stdsimd problem. | |
# - name: Run unit and integration tests | |
# run: python scripts/run-tests.py --detector=${{ matrix.detector }} | |
comment-on-pr: | |
name: Comment on PR | |
runs-on: ubuntu-latest | |
if: ${{ always() }} | |
needs: [validate-detectors, build, test] | |
steps: | |
- name: Download build status artifacts | |
uses: actions/download-artifact@v4 | |
- name: Read Ubuntu build status | |
id: ubuntu_status | |
working-directory: build-status-ubuntu-latest | |
run: echo "status=$(cat status-ubuntu-latest.txt)" >> $GITHUB_OUTPUT | |
- name: Read macOS build status | |
id: macos_status | |
working-directory: build-status-macos-latest | |
run: echo "status=$(cat status-macos-latest.txt)" >> $GITHUB_OUTPUT | |
- name: Find comment | |
id: find_comment | |
uses: peter-evans/find-comment@v3 | |
with: | |
issue-number: ${{ github.event.pull_request.number }} | |
body-includes: "🎉 **Test Detectors Workflow Summary** 🎉" | |
- name: Create or Update PR Comment | |
uses: peter-evans/create-or-update-comment@v4.0.0 | |
with: | |
token: ${{ secrets.GITHUB_TOKEN }} | |
comment-id: ${{ steps.find_comment.outputs.comment-id }} | |
edit-mode: replace | |
issue-number: ${{ github.event.pull_request.number }} | |
body: | | |
🎉 **Test Detectors Workflow Summary** 🎉 | |
| Component | Status | | |
|-------------------------|--------| | |
| Detector Validation | ${{ (needs.validate-detectors.outputs.status == 'success' && '✅ Successful') || '❌ Failed' }} | | |
| Build on Ubuntu | ${{ (steps.ubuntu_status.outputs.status == 'success' && '✅ Successful') || '❌ Failed' }} | | |
| Build on macOS | ${{ (steps.macos_status.outputs.status == 'success' && '✅ Successful') || '❌ Failed' }} | | |
| Tests Execution | ${{ (needs.test.outputs.status == 'success' && '✅ Successful') || '❌ Failed' }} | | |
The workflow has completed. Great job! 🚀 |