name: test | cli on: workflow_call: inputs: python-version: required: false type: string default: '3.11.x' cognee_version: required: false type: string default: "local" description: "Pypi-compatible version of cognee to use. For example, 0.5.2.dev0. `local` (default) - Installing Cognee from local source" ci-image: required: false type: string default: '' secrets: LLM_PROVIDER: required: true LLM_MODEL: required: true LLM_ENDPOINT: required: true LLM_API_KEY: required: true LLM_ARGS: required: false LLM_API_VERSION: required: true EMBEDDING_PROVIDER: required: true EMBEDDING_MODEL: required: true EMBEDDING_API_KEY: required: true env: RUNTIME__LOG_LEVEL: ERROR ENV: 'dev' COGNEE_SKIP_CONNECTION_TEST: 'true' jobs: cli-unit-tests: name: CLI Unit Tests if: ${{ inputs.cognee_version == 'local' }} runs-on: ubuntu-22.04 container: ${{ inputs.ci-image != '' && fromJSON(format('{{"image":"{0}","credentials":{{"username":"{1}","password":"{2}"}}}}', inputs.ci-image, github.actor, github.token)) || null }} env: ENV: 'dev' LLM_PROVIDER: openai LLM_MODEL: ${{ secrets.LLM_MODEL }} LLM_ENDPOINT: ${{ secrets.LLM_ENDPOINT }} LLM_API_KEY: ${{ secrets.LLM_API_KEY }} LLM_ARGS: ${{ secrets.LLM_ARGS }} LLM_API_VERSION: ${{ secrets.LLM_API_VERSION }} EMBEDDING_MODEL: ${{ secrets.EMBEDDING_MODEL }} EMBEDDING_API_KEY: ${{ secrets.EMBEDDING_API_KEY }} steps: - name: Check out repository uses: actions/checkout@v6 with: fetch-depth: 0 - name: Cognee Setup uses: ./.github/actions/cognee_setup with: python-version: ${{ inputs.python-version }} - name: Run CLI Unit Tests run: uv run pytest cognee/tests/cli_tests/cli_unit_tests/ -v cli-integration-tests: name: CLI Integration Tests runs-on: ubuntu-22.04 container: ${{ inputs.ci-image != '' && fromJSON(format('{{"image":"{0}","credentials":{{"username":"{1}","password":"{2}"}}}}', inputs.ci-image, github.actor, github.token)) || null }} env: ENV: 'dev' LLM_PROVIDER: openai LLM_MODEL: ${{ secrets.LLM_MODEL }} LLM_ENDPOINT: ${{ secrets.LLM_ENDPOINT }} LLM_API_KEY: ${{ secrets.LLM_API_KEY }} LLM_ARGS: ${{ secrets.LLM_ARGS }} LLM_API_VERSION: ${{ secrets.LLM_API_VERSION }} EMBEDDING_DIMENSIONS: 300 EMBEDDING_MODEL: ${{ secrets.EMBEDDING_MODEL }} EMBEDDING_API_KEY: ${{ secrets.EMBEDDING_API_KEY }} steps: - name: Check out repository uses: actions/checkout@v6 with: fetch-depth: 0 - name: Cognee Setup uses: ./.github/actions/cognee_setup with: python-version: ${{ inputs.python-version }} - name: Install Cognee uses: ./.github/actions/install_cognee with: python-version: ${{ inputs.python-version }} cognee_version: ${{ inputs.cognee_version }} - name: Run CLI Integration Tests run: uv run pytest cognee/tests/cli_tests/cli_integration_tests/ -v cli-functionality-tests: name: CLI Functionality Tests runs-on: ubuntu-22.04 container: ${{ inputs.ci-image != '' && fromJSON(format('{{"image":"{0}","credentials":{{"username":"{1}","password":"{2}"}}}}', inputs.ci-image, github.actor, github.token)) || null }} env: ENV: 'dev' LLM_PROVIDER: openai LLM_MODEL: ${{ secrets.LLM_MODEL }} LLM_ENDPOINT: ${{ secrets.LLM_ENDPOINT }} LLM_API_KEY: ${{ secrets.LLM_API_KEY }} LLM_ARGS: ${{ secrets.LLM_ARGS }} LLM_API_VERSION: ${{ secrets.LLM_API_VERSION }} EMBEDDING_DIMENSIONS: 300 EMBEDDING_MODEL: ${{ secrets.EMBEDDING_MODEL }} EMBEDDING_API_KEY: ${{ secrets.EMBEDDING_API_KEY }} steps: - name: Check out repository uses: actions/checkout@v6 with: fetch-depth: 0 - name: Cognee Setup uses: ./.github/actions/cognee_setup with: python-version: ${{ inputs.python-version }} - name: Install Cognee uses: ./.github/actions/install_cognee with: python-version: ${{ inputs.python-version }} cognee_version: ${{ inputs.cognee_version }} - name: Test CLI Help Commands run: | uv run python -m cognee.cli._cognee --help uv run python -m cognee.cli._cognee --version uv run python -m cognee.cli._cognee add --help uv run python -m cognee.cli._cognee search --help uv run python -m cognee.cli._cognee cognify --help uv run python -m cognee.cli._cognee delete --help uv run python -m cognee.cli._cognee config --help - name: Test CLI Config Subcommands run: | uv run python -m cognee.cli._cognee config get --help uv run python -m cognee.cli._cognee config set --help uv run python -m cognee.cli._cognee config list --help uv run python -m cognee.cli._cognee config unset --help uv run python -m cognee.cli._cognee config reset --help - name: Test CLI Error Handling run: | # Test invalid command (should fail gracefully) ! uv run python -m cognee.cli._cognee invalid_command # Test missing required arguments (should fail gracefully) ! uv run python -m cognee.cli._cognee search # Test invalid search type (should fail gracefully) ! uv run python -m cognee.cli._cognee search "test" --query-type INVALID_TYPE # Test invalid chunker (should fail gracefully) ! uv run python -m cognee.cli._cognee cognify --chunker InvalidChunker