first attempt at fuzz testing #5900
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
# This GitHub Action flow works as follows: | |
# Each directory in the examples and tests directory represents an example project and is intended to have tests that ensure the canisters contained in that example function properly. | |
# These tests are currently written in TypeScript and are intended to be run in a Node.js environment. | |
# This GitHub Action takes care of deploying to npm and GitHub. | |
name: Test | |
on: | |
push: | |
branches: | |
- main | |
pull_request: | |
types: | |
- opened | |
- synchronize | |
- ready_for_review | |
- reopened | |
workflow_dispatch: | |
inputs: | |
fuzz: | |
description: 'Run fuzz tests' | |
required: true | |
type: boolean | |
default: false | |
jobs: | |
get-exclude-dirs: | |
name: Get exclude directories | |
runs-on: ubuntu-latest | |
outputs: | |
exclude-dirs: ${{ steps.get-exclude-dirs.outputs.exclude-dirs }} | |
steps: | |
- uses: actions/checkout@v4 | |
- id: set-conditions | |
uses: ./.github/actions/set_run_conditions | |
- id: get-exclude-dirs | |
uses: ./.github/actions/get_exclude_dirs | |
with: | |
exclude-slow: ${{ steps.set-conditions.outputs.is_feature_branch_draft_pr == 'true' }} | |
exclude-unstable: ${{ steps.set-conditions.outputs.is_feature_branch_pr == 'true' || steps.set-conditions.outputs.is_feature_branch_draft_pr == 'true' }} | |
exclude-release-only: ${{ steps.set-conditions.outputs.is_feature_branch_pr == 'true' || steps.set-conditions.outputs.is_feature_branch_draft_pr == 'true' }} | |
run-tests: | |
name: ${{ matrix.test_group.name }} | |
needs: | |
- get-exclude-dirs | |
strategy: | |
fail-fast: false | |
matrix: | |
test_group: | |
- { name: 'Examples', directories: './examples' } | |
- { | |
name: 'Examples (Experimental)', | |
directories: './examples', | |
run_experimental: true | |
} | |
- { | |
name: 'E2E Class', | |
directories: './tests/end_to_end/candid_rpc/class_syntax' | |
} | |
- { | |
name: 'E2E Class (Experimental)', | |
directories: './tests/end_to_end/candid_rpc/class_syntax', | |
run_experimental: true | |
} | |
- { | |
name: 'E2E Functional', | |
directories: './tests/end_to_end/candid_rpc/functional_syntax' | |
} | |
- { | |
name: 'E2E HTTP Server', | |
directories: './tests/end_to_end/http_server' | |
} | |
- { | |
name: 'Property Class', | |
directories: './tests/property/candid_rpc/class_api' | |
} | |
- { | |
name: 'Property Class (Experimental)', | |
directories: './tests/property/candid_rpc/class_api', | |
run_experimental: true | |
} | |
- { | |
name: 'Property Functional', | |
directories: './tests/property/candid_rpc/functional_api' | |
} | |
- { | |
name: 'Property IC API', | |
directories: './tests/property/ic_api' | |
} | |
- { | |
name: 'Property IC API (Experimental)', | |
directories: './tests/property/ic_api', | |
run_experimental: true | |
} | |
uses: ./.github/workflows/get_and_run_tests.yml | |
with: | |
directories: ${{ matrix.test_group.directories }} | |
exclude-dirs: ${{ needs.get-exclude-dirs.outputs.exclude-dirs }} | |
run_experimental: ${{ matrix.test_group.run_experimental || false }} | |
fuzz: ${{ inputs.fuzz || false }} | |
check-test-success: | |
name: Check Azle tests succeeded | |
needs: run-tests | |
runs-on: ubuntu-latest | |
if: success() | |
steps: | |
- run: exit 0 | |
check-test-failure: | |
name: Check Azle tests didn't fail | |
needs: run-tests | |
runs-on: ubuntu-latest | |
if: failure() | |
steps: | |
- run: exit 1 |