Skip to content

Lint and Test

Lint and Test #640

Workflow file for this run

name: 'Lint and Test'
on:
pull_request:
branches:
- main
paths-ignore:
- 'VERSION'
- 'LICENSE'
- '**.md'
- 'examples'
- 'publish.yaml'
- '.github/workflows/clickhouse_ci.yml'
- '.github/workflows/on_push.yml'
workflow_dispatch:
push:
branches-ignore:
- '*_test'
- '*_dev'
- '*_build'
- 'release_*'
- main
paths-ignore:
- 'VERSION'
- 'LICENSE'
- '**.md'
- 'examples'
- 'publish.yaml'
- '.github/workflows/clickhouse_ci.yml'
- '.github/workflows/on_push.yml'
jobs:
lint:
runs-on: ubuntu-latest
name: PyLint
steps:
- uses: actions/checkout@v4
- name: Set up Python (3.11)
uses: actions/setup-python@v5
with:
python-version: 3.11
- name: Install dependencies
run: |
python -m pip install --upgrade pip
pip install setuptools wheel
pip install -r tests/test_requirements.txt
pip install pylint
python setup.py build_ext --inplace
- name: Run Pylint
run: |
pylint clickhouse_connect
pylint tests
pylint examples
tests:
runs-on: ubuntu-latest
needs: lint
strategy:
matrix:
python-version:
- '3.9'
- '3.10'
- '3.11'
- '3.12'
clickhouse-version:
- '24.3'
- '24.6'
- '24.7'
- '24.8'
- latest
name: Local Tests Py=${{ matrix.python-version }} CH=${{ matrix.clickhouse-version }}
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Start ClickHouse (version - ${{ matrix.clickhouse-version }}) in Docker
uses: hoverkraft-tech/[email protected]
env:
CLICKHOUSE_VERSION: ${{ matrix.clickhouse-version }}
with:
compose-file: 'docker-compose.yml'
down-flags: '--volumes'
- name: Set up Python ${{ matrix.python-version }}
uses: actions/setup-python@v5
with:
python-version: ${{ matrix.python-version }}
- name: Install pip
run: python -m pip install --upgrade pip
- name: Install Test Dependencies
run: pip install -r tests/test_requirements.txt
- name: Build cython extensions
run: python setup.py build_ext --inplace
- name: "Add distribution info" # This lets SQLAlchemy find entry points
run: python setup.py develop
- name: Add ClickHouse TLS instance to /etc/hosts
run: |
sudo echo "127.0.0.1 server1.clickhouse.test" | sudo tee -a /etc/hosts
- name: Run tests
env:
CLICKHOUSE_CONNECT_TEST_TLS: 1
CLICKHOUSE_CONNECT_TEST_DOCKER: 'False'
CLICKHOUSE_CONNECT_TEST_FUZZ: 50
SQLALCHEMY_SILENCE_UBER_WARNING: 1
run: pytest tests
check-secret:
runs-on: ubuntu-latest
needs: tests
outputs:
has_secrets: ${{ steps.has_secrets.outputs.HAS_SECRETS }}
steps:
- id: has_secrets
env:
CLOUD_HOST: ${{ secrets.INTEGRATIONS_TEAM_TESTS_CLOUD_HOST }}
if: "${{ env.CLOUD_HOST != '' }}"
run: echo "HAS_SECRETS=true" >> $GITHUB_OUTPUT
cloud-tests:
runs-on: ubuntu-latest
name: Cloud Tests Py=${{ matrix.python-version }}
needs: check-secret
if: needs.check-secret.outputs.has_secrets == 'true'
strategy:
matrix:
python-version:
- '3.10'
- '3.11'
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Set up Python ${{ matrix.python-version }}
uses: actions/setup-python@v5
with:
python-version: ${{ matrix.python-version }}
- name: Install dependencies
run: |
python -m pip install --upgrade pip
pip install -r tests/test_requirements.txt
- name: Build cython extensions
run: python setup.py build_ext --inplace
- name: "Add distribution info" # This lets SQLAlchemy find entry points
run: python setup.py develop
- name: Run tests
env:
CLICKHOUSE_CONNECT_TEST_FUZZ: 10
CLICKHOUSE_CONNECT_TEST_CLOUD: 'True'
CLICKHOUSE_CONNECT_TEST_PORT: 8443
CLICKHOUSE_CONNECT_TEST_HOST: ${{ secrets.INTEGRATIONS_TEAM_TESTS_CLOUD_HOST_SMT }}
CLICKHOUSE_CONNECT_TEST_PASSWORD: ${{ secrets.INTEGRATIONS_TEAM_TESTS_CLOUD_PASSWORD_SMT }}
SQLALCHEMY_SILENCE_UBER_WARNING: 1
run: pytest tests/integration_tests