name: Daily property test run on: workflow_dispatch: schedule: - cron: "0 12 * * *" pull_request: paths: - ".github/workflows/daily_property_tests.yaml" permissions: contents: read concurrency: group: ${{ github.workflow }}-${{ github.head_ref || github.run_id }} cancel-in-progress: true env: CARGO_INCREMENTAL: 0 CARGO_NET_RETRY: 10 CARGO_TERM_COLOR: always RUSTUP_MAX_RETRIES: 10 FORCE_COLOR: 1 jobs: property_tests: name: Property tests runs-on: ubuntu-latest timeout-minutes: 20 # Don't run the cron job on forks: if: ${{ github.repository == 'astral-sh/ruff' || github.event_name != 'schedule' }} steps: - uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 with: persist-credentials: false - name: "Install Rust toolchain" run: rustup show - name: "Install mold" uses: rui314/setup-mold@e16410e7f8d9e167b74ad5697a9089a35126eb50 # v1 - uses: Swatinem/rust-cache@9d47c6ad4b02e050fd481d890b2ea34778fd09d6 # v2.7.8 - name: Build ty # A release build takes longer (2 min vs 1 min), but the property tests run much faster in release # mode (1.5 min vs 14 min), so the overall time is shorter with a release build. run: cargo build --locked --release --package ty_python_semantic --tests - name: Run property tests shell: bash run: | export QUICKCHECK_TESTS=100000 for _ in {1..5}; do cargo test --locked --release --package ty_python_semantic -- --ignored list::property_tests cargo test --locked --release --package ty_python_semantic -- --ignored types::property_tests::stable done create-issue-on-failure: name: Create an issue if the daily property test run surfaced any bugs runs-on: ubuntu-latest needs: property_tests if: ${{ github.repository == 'astral-sh/ruff' && always() && github.event_name == 'schedule' && needs.property_tests.result == 'failure' }} permissions: issues: write steps: - uses: actions/github-script@60a0d83039c74a4aee543508d2ffcb1c3799cdea # v7.0.1 with: github-token: ${{ secrets.GITHUB_TOKEN }} script: | await github.rest.issues.create({ owner: "astral-sh", repo: "ruff", title: `Daily property test run failed on ${new Date().toDateString()}`, body: "Run listed here: https://github.com/${{ github.repository }}/actions/runs/${{ github.run_id }}", labels: ["bug", "ty", "testing"], })