From cd516af520353f9774f8d73989c664a3de8f2e4c Mon Sep 17 00:00:00 2001 From: joycel-github Date: Fri, 10 Jul 2026 08:17:18 +0000 Subject: [PATCH] ci: run Python tests for the antigravity harness sidecar The 17 tests in python/antigravity/harness_server_test.py have never run in CI. .github/workflows/go.yml only runs 'go test ./...' and the Makefile 'test' target likewise only runs Go. That let PR #244 land with 2 stale assertions unnoticed (fixed in #291). Adds: - .github/workflows/python.yml -- dedicated Python workflow (kept separate from the Go-only go.yml so each can evolve independently). - Makefile 'test-python' target for local parity. Test deps are inlined in the workflow rather than added as a separate requirements-test.txt -- the diff is 2 packages ('pytest>=7.0', 'pytest-timeout>=2.0'), not worth its own file. Version floors match the upstream google-antigravity SDK's dev extras so this doesn't drift as pytest evolves. --timeout=30 --timeout-method=thread guards against hung gRPC servers so a stuck test can't eat the whole workflow budget. --- .github/workflows/python.yml | 51 ++++++++++++++++++++++++++++++++++++ Makefile | 15 ++++++++--- 2 files changed, 63 insertions(+), 3 deletions(-) create mode 100644 .github/workflows/python.yml diff --git a/.github/workflows/python.yml b/.github/workflows/python.yml new file mode 100644 index 00000000..135f8911 --- /dev/null +++ b/.github/workflows/python.yml @@ -0,0 +1,51 @@ +# Copyright 2026 Google LLC +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +# Runs pytest against the antigravity harness sidecar +# (python/antigravity/harness_server_test.py). Split from go.yml so the +# Go workflow stays Go-only and this can evolve independently as more +# Python surface area lands. + +name: Python + +on: + push: + branches: [ "main" ] + pull_request: + branches: [ "main" ] + +jobs: + + test: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + + - name: Set up Python + uses: actions/setup-python@v5 + with: + python-version: '3.11' + + - name: Install Python deps + # Runtime deps from python/antigravity/requirements.txt plus test-only + # tooling. Version floors on pytest match the upstream google-antigravity + # SDK's own dev extras (see google-antigravity/antigravity-sdk-python + # pyproject.toml) so this doesn't drift. pytest-timeout is added here + # only -- our tests spin up real gRPC servers on random ports and can hang. + run: pip install -r python/antigravity/requirements.txt 'pytest>=7.0' 'pytest-timeout>=2.0' + + - name: Run Python tests + # --timeout guards against hung gRPC servers so a stuck test can't + # eat the whole workflow budget. + run: python -m pytest python/antigravity/ --timeout=30 --timeout-method=thread -v diff --git a/Makefile b/Makefile index 642a0615..e0b730a3 100644 --- a/Makefile +++ b/Makefile @@ -1,4 +1,4 @@ -.PHONY: all build proto test clean install +.PHONY: all build proto test test-python clean install # Build all binaries all: proto build @@ -21,11 +21,20 @@ proto: @python3 -m grpc_tools.protoc -I. --python_out=python --grpc_python_out=python proto/ax.proto proto/content.proto @echo "Protobuf generation complete!" -# Run tests +# Run Go tests test: - @echo "Running tests..." + @echo "Running Go tests..." @go test -v ./... +# Run Python tests for the antigravity harness sidecar. +# Assumes deps are installed for the same interpreter as `python3`, e.g.: +# python3 -m pip install -r python/antigravity/requirements.txt \ +# 'pytest>=7.0' 'pytest-timeout>=2.0' +# --timeout guards against hung gRPC servers. +test-python: + @echo "Running Python tests..." + @python3 -m pytest python/antigravity/ --timeout=30 --timeout-method=thread + # Clean build artifacts clean: @echo "Cleaning..."