name: Unit Tests env: OPENAI_API_KEY: ${{ secrets.OPENAI_API_KEY }} COMPOSIO_API_KEY: ${{ secrets.COMPOSIO_API_KEY }} ANTHROPIC_API_KEY: ${{ secrets.ANTHROPIC_API_KEY }} GEMINI_API_KEY: ${{ secrets.GEMINI_API_KEY }} GROQ_API_KEY: ${{ secrets.GROQ_API_KEY }} E2B_API_KEY: ${{ secrets.E2B_API_KEY }} E2B_SANDBOX_TEMPLATE_ID: ${{ secrets.E2B_SANDBOX_TEMPLATE_ID }} on: push: branches: [ main ] pull_request: jobs: unit-run: runs-on: ubuntu-latest timeout-minutes: 15 strategy: fail-fast: false matrix: test_suite: - "test_vector_embeddings.py" - "test_client.py" - "test_client_legacy.py" - "test_server.py" - "test_v1_routes.py" - "test_local_client.py" - "test_managers.py" - "test_base_functions.py" - "test_tool_schema_parsing.py" - "test_tool_rule_solver.py" - "test_memory.py" - "test_utils.py" - "test_stream_buffer_readers.py" services: qdrant: image: qdrant/qdrant ports: - 6333:6333 postgres: image: pgvector/pgvector:pg17 ports: - 5432:5432 env: POSTGRES_HOST_AUTH_METHOD: trust POSTGRES_DB: postgres POSTGRES_USER: postgres options: >- --health-cmd pg_isready --health-interval 10s --health-timeout 5s --health-retries 5 steps: - name: Checkout uses: actions/checkout@v4 - name: Setup Python, Poetry, and Dependencies uses: packetcoders/action-setup-cache-python-poetry@main with: python-version: "3.12" poetry-version: "1.8.2" install-args: "-E dev -E postgres -E external-tools -E tests -E cloud-tool-sandbox" - name: Migrate database env: LETTA_PG_PORT: 5432 LETTA_PG_USER: postgres LETTA_PG_PASSWORD: postgres LETTA_PG_DB: postgres LETTA_PG_HOST: localhost run: | psql -h localhost -U postgres -d postgres -c 'CREATE EXTENSION vector' poetry run alembic upgrade head - name: Run core unit tests env: LETTA_PG_PORT: 5432 LETTA_PG_USER: postgres LETTA_PG_PASSWORD: postgres LETTA_PG_DB: postgres LETTA_PG_HOST: localhost LETTA_SERVER_PASS: test_server_token run: | poetry run pytest -s -vv tests/${{ matrix.test_suite }}