graphiti/.github/workflows/unit_tests.yml
Daniel Chalef 5bdff515d6 Disable Kuzu in CI database integration tests
Kuzu requires downloading extensions from external URLs which fails in CI
environment due to network restrictions. Disable Kuzu for database and API
integration tests.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-10-11 19:15:43 -07:00

160 lines
5.7 KiB
YAML

name: Unit Tests
on:
push:
branches: [main]
pull_request:
branches: [main]
permissions:
contents: read
jobs:
unit-tests:
runs-on: depot-ubuntu-22.04
steps:
- uses: actions/checkout@v4
- name: Set up Python
uses: actions/setup-python@v5
with:
python-version: "3.10"
- name: Install uv
uses: astral-sh/setup-uv@v3
with:
version: "latest"
- name: Install dependencies
run: uv sync --all-extras
- name: Run unit tests (no external dependencies)
env:
PYTHONPATH: ${{ github.workspace }}
DISABLE_NEPTUNE: 1
DISABLE_NEO4J: 1
DISABLE_FALKORDB: 1
DISABLE_KUZU: 1
run: |
uv run pytest tests/ -m "not integration" \
--ignore=tests/test_graphiti_int.py \
--ignore=tests/test_graphiti_mock.py \
--ignore=tests/test_node_int.py \
--ignore=tests/test_edge_int.py \
--ignore=tests/test_entity_exclusion_int.py \
--ignore=tests/driver/ \
--ignore=tests/llm_client/test_anthropic_client_int.py \
--ignore=tests/utils/maintenance/ \
--ignore=tests/cross_encoder/test_bge_reranker_client_int.py \
--ignore=tests/evals/
database-integration-tests:
runs-on: depot-ubuntu-22.04
services:
falkordb:
image: falkordb/falkordb:latest
ports:
- 6379:6379
options: --health-cmd "redis-cli ping" --health-interval 10s --health-timeout 5s --health-retries 5
neo4j:
image: neo4j:5.26-community
ports:
- 7687:7687
- 7474:7474
env:
NEO4J_AUTH: neo4j/testpass
NEO4J_PLUGINS: '["apoc"]'
options: --health-cmd "cypher-shell -u neo4j -p testpass 'RETURN 1'" --health-interval 10s --health-timeout 5s --health-retries 10
steps:
- uses: actions/checkout@v4
- name: Set up Python
uses: actions/setup-python@v5
with:
python-version: "3.10"
- name: Install uv
uses: astral-sh/setup-uv@v3
with:
version: "latest"
- name: Install redis-cli for FalkorDB health check
run: sudo apt-get update && sudo apt-get install -y redis-tools
- name: Install dependencies
run: uv sync --all-extras
- name: Wait for FalkorDB
run: |
timeout 60 bash -c 'until redis-cli -h localhost -p 6379 ping; do sleep 1; done'
- name: Wait for Neo4j
run: |
timeout 60 bash -c 'until wget -O /dev/null http://localhost:7474 >/dev/null 2>&1; do sleep 1; done'
- name: Run FalkorDB driver tests
env:
PYTHONPATH: ${{ github.workspace }}
FALKORDB_HOST: localhost
FALKORDB_PORT: 6379
DISABLE_NEO4J: 1
DISABLE_NEPTUNE: 1
run: |
uv run pytest tests/driver/test_falkordb_driver.py
- name: Run database integration tests
env:
PYTHONPATH: ${{ github.workspace }}
NEO4J_URI: bolt://localhost:7687
NEO4J_USER: neo4j
NEO4J_PASSWORD: testpass
FALKORDB_HOST: localhost
FALKORDB_PORT: 6379
DISABLE_NEPTUNE: 1
DISABLE_KUZU: 1
run: |
uv run pytest tests/test_graphiti_mock.py tests/utils/maintenance/test_bulk_utils.py tests/utils/maintenance/test_edge_operations.py tests/utils/maintenance/test_node_operations.py
api-integration-tests:
runs-on: depot-ubuntu-22.04
# Only run API integration tests for internal contributors (push to main or PRs from same repo)
if: github.event_name == 'push' || github.event.pull_request.head.repo.full_name == github.repository
environment:
name: development
services:
falkordb:
image: falkordb/falkordb:latest
ports:
- 6379:6379
options: --health-cmd "redis-cli ping" --health-interval 10s --health-timeout 5s --health-retries 5
neo4j:
image: neo4j:5.26-community
ports:
- 7687:7687
- 7474:7474
env:
NEO4J_AUTH: neo4j/testpass
NEO4J_PLUGINS: '["apoc"]'
options: --health-cmd "cypher-shell -u neo4j -p testpass 'RETURN 1'" --health-interval 10s --health-timeout 5s --health-retries 10
steps:
- uses: actions/checkout@v4
- name: Set up Python
uses: actions/setup-python@v5
with:
python-version: "3.10"
- name: Install uv
uses: astral-sh/setup-uv@v3
with:
version: "latest"
- name: Install redis-cli for FalkorDB health check
run: sudo apt-get update && sudo apt-get install -y redis-tools
- name: Install dependencies
run: uv sync --all-extras
- name: Wait for FalkorDB
run: |
timeout 60 bash -c 'until redis-cli -h localhost -p 6379 ping; do sleep 1; done'
- name: Wait for Neo4j
run: |
timeout 60 bash -c 'until wget -O /dev/null http://localhost:7474 >/dev/null 2>&1; do sleep 1; done'
- name: Run API integration tests (requires API keys)
env:
PYTHONPATH: ${{ github.workspace }}
NEO4J_URI: bolt://localhost:7687
NEO4J_USER: neo4j
NEO4J_PASSWORD: testpass
FALKORDB_HOST: localhost
FALKORDB_PORT: 6379
DISABLE_KUZU: 1
OPENAI_API_KEY: ${{ secrets.OPENAI_API_KEY }}
ANTHROPIC_API_KEY: ${{ secrets.ANTHROPIC_API_KEY }}
GOOGLE_API_KEY: ${{ secrets.GOOGLE_API_KEY }}
run: |
uv run pytest tests/test_*_int.py tests/llm_client/test_anthropic_client_int.py tests/utils/maintenance/test_temporal_operations_int.py tests/cross_encoder/test_bge_reranker_client_int.py