Skip to content

Allow endpoint specification for Python and Node test #3235

Allow endpoint specification for Python and Node test

Allow endpoint specification for Python and Node test #3235

Workflow file for this run

name: Python tests
on:
push:
branches: ["main"]
paths:
- python/**
- glide-core/src/**
- submodules/**
- utils/cluster_manager.py
- .github/workflows/python.yml
- .github/workflows/build-python-wrapper/action.yml
- .github/workflows/install-shared-dependencies/action.yml
- .github/workflows/install-redis-modules/action.yml
pull_request:
paths:
- python/**
- glide-core/src/**
- submodules/**
- utils/cluster_manager.py
- .github/workflows/python.yml
- .github/workflows/build-python-wrapper/action.yml
- .github/workflows/install-shared-dependencies/action.yml
- .github/workflows/install-redis-modules/action.yml
concurrency:
group: python-${{ github.head_ref || github.ref }}
cancel-in-progress: true
permissions:
contents: read
jobs:
test-ubuntu-latest:
runs-on: ubuntu-latest
timeout-minutes: 25
strategy:
fail-fast: false
matrix:
redis:
- 6.2.14
- 7.2.3
steps:
- uses: actions/checkout@v4
with:
submodules: recursive
- name: Install redis
uses: ./.github/workflows/install-redis
with:
redis-version: ${{ matrix.redis }}
- name: Set up Python 3.10
uses: actions/setup-python@v4
with:
python-version: "3.10"
- name: Install dependencies
working-directory: ./python
run: |
python -m pip install --upgrade pip
pip install flake8 isort black mypy-protobuf
- name: Lint with isort
working-directory: ./python
run: |
isort . --profile black --check --diff
- name: Lint with flake8
working-directory: ./python
run: |
# stop the build if there are Python syntax errors or undefined names
flake8 . --count --select=E9,F63,F7,F82 --show-source --statistics --extend-ignore=E230 --exclude=python/glide/protobuf,.env/*
# exit-zero treats all errors as warnings. The GitHub editor is 127 chars wide
flake8 . --count --exit-zero --max-complexity=12 --max-line-length=127 --statistics --extend-ignore=E230 --exclude=python/glide/protobuf,.env/*
- name: Lint with black
working-directory: ./python
run: |
black --check --diff .
- name: Build Python wrapper
uses: ./.github/workflows/build-python-wrapper
with:
os: "ubuntu"
target: "x86_64-unknown-linux-gnu"
github-token: ${{ secrets.GITHUB_TOKEN }}
- name: Type check with mypy
working-directory: ./python
run: |
# The type check should run inside the virtual env to get
# all installed dependencies and build files
source .env/bin/activate
pip install mypy types-protobuf
# Install the benchmark requirements
pip install -r ../benchmarks/python/requirements.txt
python -m mypy ..
- name: Install Redis Modules
uses: ./.github/workflows/install-redis-modules
with:
redis-version: ${{ matrix.redis }}
- name: Test with pytest
working-directory: ./python
run: |
source .env/bin/activate
cd python/tests/
pytest --asyncio-mode=auto --override-ini=addopts= --load-module=$GITHUB_WORKSPACE/redisjson.so
- uses: ./.github/workflows/test-benchmark
with:
language-flag: -python
lint-rust:
runs-on: ubuntu-latest
timeout-minutes: 15
steps:
- uses: actions/checkout@v4
with:
submodules: recursive
- uses: ./.github/workflows/lint-rust
with:
cargo-toml-folder: ./python
name: lint python-rust
build-macos-latest:
runs-on: macos-latest
timeout-minutes: 25
steps:
- uses: actions/checkout@v4
with:
submodules: recursive
- name: Set up Homebrew
uses: Homebrew/actions/setup-homebrew@master
- name: Build Python wrapper
uses: ./.github/workflows/build-python-wrapper
with:
os: "macos"
target: "aarch64-apple-darwin"
github-token: ${{ secrets.GITHUB_TOKEN }}
- name: Test compatibility with pytest
working-directory: ./python
run: |
source .env/bin/activate
pytest --asyncio-mode=auto -m smoke_test
build-amazonlinux-latest:
runs-on: ubuntu-latest
container: amazonlinux:latest
timeout-minutes: 15
steps:
- name: Install git
run: |
yum -y remove git
yum -y remove git-*
yum -y install https://packages.endpointdev.com/rhel/7/os/x86_64/endpoint-repo.x86_64.rpm
yum install -y git
git --version
- uses: actions/checkout@v4
- name: Checkout submodules
run: |
git config --global --add safe.directory "$GITHUB_WORKSPACE"
git submodule update --init --recursive
- name: Install python
run: |
yum install -y python3
- name: Build Python wrapper
uses: ./.github/workflows/build-python-wrapper
with:
os: "amazon-linux"
target: "x86_64-unknown-linux-gnu"
github-token: ${{ secrets.GITHUB_TOKEN }}
- name: Create a symbolic Link for redis6 binaries
working-directory: ./python
run: |
ln -s /usr/bin/redis6-server /usr/bin/redis-server
ln -s /usr/bin/redis6-cli /usr/bin/redis-cli
- name: Test compatibility with pytest
working-directory: ./python
run: |
source .env/bin/activate
pytest --asyncio-mode=auto -m smoke_test