Skip to content

fix: improve CI and helper scripts #158

fix: improve CI and helper scripts

fix: improve CI and helper scripts #158

Workflow file for this run

name: Test
on:
push:
branches:
- main
pull_request:
schedule:
- cron: "0 0 * * *"
workflow_dispatch:
jobs:
unittest:
name: Unit tests
runs-on: ubuntu-22.04
timeout-minutes: 15
strategy:
fail-fast: false
matrix:
python-version:
- "3.14"
- "3.13"
- "3.12"
- "3.11"
- "3.10"
- "3.9"
- "3.8"
- "3.7"
- "pypy3.10"
- "pypy3.11"
permissions:
contents: read
env:
CI_LARGE_SOCKET_MODE_PAYLOAD_TESTING_DISABLED: "1"
FORCE_COLOR: "1"
steps:
- uses: actions/checkout@1af3b93b6815bc44a9784bd300feb67ff0d1eeb3 # v6.0.0
with:
persist-credentials: false
- name: Set up Python ${{ matrix.python-version }}
uses: actions/setup-python@83679a892e2d95755f2dac6acb0bfd1e9ac5d548 # v6.1.0
with:
python-version: ${{ matrix.python-version }}
cache: pip
- name: Install dependencies
run: |
pip install -U pip
pip install -r requirements/testing.txt
pip install -r requirements/optional.txt
- name: Run tests
run: |
PYTHONPATH=$PWD:$PYTHONPATH pytest --cov-report=xml --cov=slack_sdk/ --junitxml=reports/test_report.xml tests/
- name: Run tests for SQLAlchemy v1.4 (backward-compatibility)
run: |
# Install v1.4 for testing
pip install "SQLAlchemy>=1.4,<2"
PYTHONPATH=$PWD:$PYTHONPATH pytest tests/slack_sdk/oauth/installation_store/test_sqlalchemy.py
PYTHONPATH=$PWD:$PYTHONPATH pytest tests/slack_sdk/oauth/state_store/test_sqlalchemy.py
- name: Upload test results to Codecov
if: ${{ !cancelled() }}
uses: codecov/codecov-action@5a1091511ad55cbe89839c7260b706298ca349f7 # v5.5.1
with:
directory: ./reports/
fail_ci_if_error: true
flags: ${{ matrix.python-version }}
report_type: test_results
token: ${{ secrets.CODECOV_TOKEN }}
verbose: true
- name: Upload test coverage to Codecov (only with latest supported version)
if: startsWith(matrix.python-version, '3.14')
uses: codecov/codecov-action@5a1091511ad55cbe89839c7260b706298ca349f7 # v5.5.1
with:
fail_ci_if_error: true
# Run validation generates the coverage file
files: ./coverage.xml
report_type: coverage
token: ${{ secrets.CODECOV_TOKEN }}
verbose: true
notifications:
name: Regression notifications
runs-on: ubuntu-latest
needs:
- unittest
if: ${{ !success() && github.ref == 'refs/heads/main' && github.event_name != 'workflow_dispatch' }}
steps:
- name: Send notifications of failing tests
uses: slackapi/slack-github-action@91efab103c0de0a537f72a35f6b8cda0ee76bf0a # v2.1.1
with:
errors: true
webhook: ${{ secrets.SLACK_REGRESSION_FAILURES_WEBHOOK_URL }}
webhook-type: webhook-trigger
payload: |
action_url: "${{ github.server_url }}/${{ github.repository }}/actions/runs/${{ github.run_id }}"
repository: "${{ github.repository }}"