Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
38 changes: 0 additions & 38 deletions .github/workflows/argus-qa.yml

This file was deleted.

13 changes: 6 additions & 7 deletions .github/workflows/cli-test.yml
Original file line number Diff line number Diff line change
Expand Up @@ -17,11 +17,10 @@ jobs:
with:
python-version: '3.12'

- name: Install CLI
run: pip install -e .
- name: Install CLI and test deps
run: |
pip install -e .
pip install pytest

- name: Verify CLI entry point
run: cueapi --help

- name: Verify CLI version
run: cueapi --version
- name: Run tests
run: pytest tests/ -v --tb=short
56 changes: 56 additions & 0 deletions .github/workflows/feature-to-main.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,56 @@
name: Feature PR to Main

on:
pull_request:
branches: [main]

jobs:
test:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.7

- uses: actions/setup-python@f677139bbe7f9c59b41e40162b753c062f5d49a3 # v5.3.0
with:
python-version: '3.12'

- name: Install CLI and test deps
run: |
pip install -e .
pip install pytest

- name: Run tests
run: pytest tests/ -v --tb=short

auto-merge:
needs: test
runs-on: ubuntu-latest
steps:
- name: Auto-merge PR
run: gh pr merge ${{ github.event.pull_request.number }} --squash --auto
env:
GH_TOKEN: ${{ secrets.GOVIND_GITHUB_TOKEN }}
GH_REPO: ${{ github.repository }}

notify-merge:
needs: auto-merge
runs-on: ubuntu-latest
steps:
- name: Create merge confirmation cue
run: |
FIRE_AT=$(date -u -d '+2 minutes' '+%Y-%m-%dT%H:%M:%SZ' 2>/dev/null || \
date -u -v+2M '+%Y-%m-%dT%H:%M:%SZ')
curl -s -w "\n%{http_code}" -X POST https://api.cueapi.ai/v1/cues \
-H "Authorization: Bearer ${{ secrets.ARGUS_CUEAPI_KEY }}" \
-H "Content-Type: application/json" \
-d "{
\"name\": \"cueapi-cli-merged-${{ github.event.pull_request.number }}\",
\"schedule\": {\"type\": \"once\", \"at\": \"${FIRE_AT}\"},
\"transport\": \"worker\",
\"payload\": {
\"task\": \"verify-github-merge\",
\"repo\": \"cueapi/cueapi-cli\",
\"pr_number\": \"${{ github.event.pull_request.number }}\",
\"commit_sha\": \"${{ github.event.pull_request.head.sha }}\"
}
}"
27 changes: 0 additions & 27 deletions .github/workflows/staging-deploy.yml

This file was deleted.

Empty file added tests/__init__.py
Empty file.
90 changes: 90 additions & 0 deletions tests/test_cli.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,90 @@
"""Unit tests for cueapi CLI commands using Click's CliRunner.

No live API calls — tests only verify CLI entry points, help text, and argument parsing.
"""

from click.testing import CliRunner

from cueapi.cli import main


runner = CliRunner()


def test_version():
result = runner.invoke(main, ["--version"])
assert result.exit_code == 0
assert "cueapi" in result.output
assert "0." in result.output # version starts with 0.x


def test_help():
result = runner.invoke(main, ["--help"])
assert result.exit_code == 0
assert "CueAPI" in result.output
assert "create" in result.output
assert "list" in result.output
assert "login" in result.output
assert "whoami" in result.output
assert "quickstart" in result.output


def test_login_help():
result = runner.invoke(main, ["login", "--help"])
assert result.exit_code == 0
assert "login" in result.output.lower() or "authenticate" in result.output.lower()


def test_create_help():
result = runner.invoke(main, ["create", "--help"])
assert result.exit_code == 0
assert "--name" in result.output
assert "--url" in result.output


def test_list_help():
result = runner.invoke(main, ["list", "--help"])
assert result.exit_code == 0
assert "list" in result.output.lower() or "cue" in result.output.lower()


def test_get_help():
result = runner.invoke(main, ["get", "--help"])
assert result.exit_code == 0
assert "get" in result.output.lower() or "info" in result.output.lower()


def test_pause_help():
result = runner.invoke(main, ["pause", "--help"])
assert result.exit_code == 0
assert "pause" in result.output.lower()


def test_resume_help():
result = runner.invoke(main, ["resume", "--help"])
assert result.exit_code == 0
assert "resume" in result.output.lower()


def test_delete_help():
result = runner.invoke(main, ["delete", "--help"])
assert result.exit_code == 0
assert "delete" in result.output.lower()


def test_whoami_help():
result = runner.invoke(main, ["whoami", "--help"])
assert result.exit_code == 0
assert "whoami" in result.output.lower() or "user" in result.output.lower()


def test_usage_help():
result = runner.invoke(main, ["usage", "--help"])
assert result.exit_code == 0
assert "usage" in result.output.lower()


def test_quickstart_help():
result = runner.invoke(main, ["quickstart", "--help"])
assert result.exit_code == 0
assert "quickstart" in result.output.lower() or "setup" in result.output.lower()
Loading