Skip to content

Java: enable Gradle wrapper validation #1

Java: enable Gradle wrapper validation

Java: enable Gradle wrapper validation #1

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/test-benchmark/action.yml
- .github/workflows/lint-rust/action.yml
- .github/workflows/install-valkey/action.yml
- .github/json_matrices/build-matrix.json
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/test-benchmark/action.yml
- .github/workflows/lint-rust/action.yml
- .github/workflows/install-valkey/action.yml
- .github/json_matrices/build-matrix.json
concurrency:
group: python-${{ github.head_ref || github.ref }}
cancel-in-progress: true
permissions:
contents: read
jobs:
load-engine-matrix:
runs-on: ubuntu-latest
outputs:
matrix: ${{ steps.load-engine-matrix.outputs.matrix }}
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Load the engine matrix
id: load-engine-matrix
shell: bash
run: echo "matrix=$(jq -c . < .github/json_matrices/engine-matrix.json)" >> $GITHUB_OUTPUT
test-ubuntu-latest:
runs-on: ubuntu-latest
needs: load-engine-matrix
timeout-minutes: 35
strategy:
fail-fast: false
matrix:
engine: ${{ fromJson(needs.load-engine-matrix.outputs.matrix) }}
python:
# - "3.8"
# - "3.9"
# - "3.10"
# - "3.11"
- "3.12"
steps:
- uses: actions/checkout@v4
with:
submodules: recursive
- name: Set up Python
uses: actions/setup-python@v4
with:
python-version: ${{ matrix.python }}
- 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 }}
engine-version: ${{ matrix.engine.version }}
- 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: Test with pytest
working-directory: ./python
run: |
source .env/bin/activate
cd python/tests/
pytest --asyncio-mode=auto
- uses: ./.github/workflows/test-benchmark
with:
language-flag: -python
test-pubsub-ubuntu-latest:
runs-on: ubuntu-latest
needs: load-engine-matrix
timeout-minutes: 35
strategy:
fail-fast: false
matrix:
engine: ${{ fromJson(needs.load-engine-matrix.outputs.matrix) }}
python:
# - "3.8"
# - "3.9"
# - "3.10"
# - "3.11"
- "3.12"
steps:
- uses: actions/checkout@v4
with:
submodules: recursive
- name: Set up Python
uses: actions/setup-python@v4
with:
python-version: ${{ matrix.python }}
- name: Build Python wrapper
uses: ./.github/workflows/build-python-wrapper
with:
os: "ubuntu"
target: "x86_64-unknown-linux-gnu"
github-token: ${{ secrets.GITHUB_TOKEN }}
engine-version: ${{ matrix.engine.version }}
- name: Test pubsub with pytest
working-directory: ./python
run: |
source .env/bin/activate
cd python/tests/
pytest --asyncio-mode=auto -k test_pubsub
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
# test-macos-latest:
# runs-on: macos-latest
# needs: load-engine-matrix
# timeout-minutes: 35
# strategy:
# fail-fast: false
# matrix:
# engine: ${{ fromJson(needs.load-engine-matrix.outputs.matrix) }}
# 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 }}
# engine-version: ${{ matrix.engine.version }}
# - name: Test with pytest
# working-directory: ./python
# run: |
# source .env/bin/activate
# pytest --asyncio-mode=auto
# test-pubsub-macos-latest:
# runs-on: macos-latest
# needs: load-engine-matrix
# timeout-minutes: 35
# strategy:
# fail-fast: false
# matrix:
# engine: ${{ fromJson(needs.load-engine-matrix.outputs.matrix) }}
# 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 }}
# engine-version: ${{ matrix.engine.version }}
# - name: Test pubsub with pytest
# working-directory: ./python
# run: |
# source .env/bin/activate
# cd python/tests/
# pytest --asyncio-mode=auto -k test_pubsub
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 }}
engine-version: "7.2.5"
- name: Test compatibility with pytest
working-directory: ./python
run: |
source .env/bin/activate
pytest --asyncio-mode=auto -m smoke_test