051ee7c290
CI / benchmark-publish (pull_request) Has been skipped
CI / lint (pull_request) Successful in 21s
CI / quality (pull_request) Successful in 31s
CI / typecheck (pull_request) Successful in 47s
CI / security (pull_request) Successful in 52s
CI / build (pull_request) Successful in 56s
CI / e2e_tests (pull_request) Successful in 5m1s
CI / integration_tests (pull_request) Successful in 5m30s
CI / unit_tests (pull_request) Successful in 5m42s
CI / docker (pull_request) Successful in 58s
CI / coverage (pull_request) Successful in 7m35s
CI / build (push) Successful in 21s
CI / docker (push) Has been skipped
CI / benchmark-regression (pull_request) Failing after 49m24s
CI / lint (push) Successful in 22s
CI / quality (push) Successful in 39s
CI / security (push) Successful in 48s
CI / typecheck (push) Successful in 1m26s
CI / benchmark-regression (push) Has been skipped
CI / e2e_tests (push) Successful in 5m53s
CI / coverage (push) Successful in 9m4s
CI / benchmark-publish (push) Successful in 19m10s
CI / integration_tests (push) Failing after 19m18s
CI / unit_tests (push) Failing after 19m20s
Added 52 new .feature files and corresponding _steps.py files targeting previously uncovered code paths in the following areas: - TUI layer: app, commands, persona (state/schema/registry), widgets, input (shell_exec, reference_parser) - Application services: plan lifecycle/service/executor, session, project, repo indexing, correction, checkpoint, actor, llm_actors, strategy coordinator, resource file watcher, service retry wiring - CLI commands: session, resource, repl, plan, db, automation_profile - Domain models: retry_policy, resource_type, cost_budget, docker_compose_analyzer, detail_level, _sql_string_aware, _postgresql_helpers - Core: circuit_breaker, retry_service_patterns - Infrastructure: repositories, transaction_sandbox, strategy_registry, plugins/loader, container - Config: settings - Agents: plan_generation, context_analysis, auto_debug - A2A: facade All new tests follow the Behave/Gherkin BDD standard. Resolved step definition collisions with unique prefixes. Fixed Alembic fileConfig logger disabling issue (disable_existing_loggers=False). ISSUES CLOSED: #1068
93 lines
4.5 KiB
Gherkin
93 lines
4.5 KiB
Gherkin
Feature: Database CLI commands coverage
|
|
Exercise uncovered lines in cleveragents.cli.commands.db module
|
|
by invoking each Typer command with mocked infrastructure.
|
|
|
|
Background:
|
|
Given the db commands module is imported
|
|
|
|
Scenario: migrate command generates a new revision
|
|
Given the migration runner is mocked
|
|
And alembic command module is mocked
|
|
When I invoke the db migrate command with message "add_users_table"
|
|
Then alembic revision should have been called with message "add_users_table" and autogenerate True
|
|
And typer should echo a db message containing "Migration revision created: add_users_table"
|
|
|
|
Scenario: migrate command uses default message
|
|
Given the migration runner is mocked
|
|
And alembic command module is mocked
|
|
When I invoke the db migrate command with default message
|
|
Then alembic revision should have been called with message "auto" and autogenerate True
|
|
|
|
Scenario: upgrade command with specific non-head revision
|
|
Given the migration runner is mocked
|
|
And alembic command module is mocked
|
|
And the db command parameters are revision "abc123" and format "rich"
|
|
When I invoke the db upgrade command with stored params
|
|
Then alembic upgrade should have been called with revision "abc123"
|
|
And the runner get_current_revision should have been called
|
|
|
|
Scenario: upgrade command with head revision uses init_or_upgrade
|
|
Given the migration runner is mocked
|
|
And the db command parameters are revision "head" and format "rich"
|
|
When I invoke the db upgrade command with stored params
|
|
Then the runner init_or_upgrade should have been called
|
|
And typer should echo a db message containing "Database upgraded to revision"
|
|
|
|
Scenario: upgrade command with json format outputs formatted data
|
|
Given the migration runner is mocked
|
|
And format_output is mocked
|
|
And the db command parameters are revision "head" and format "json"
|
|
When I invoke the db upgrade command with stored params
|
|
Then format_output should have been called with status ok data
|
|
And the formatted output should have been echoed
|
|
|
|
Scenario: downgrade command invokes alembic downgrade
|
|
Given the migration runner is mocked
|
|
And alembic command module is mocked
|
|
And the db command parameters are revision "-1" and format "rich"
|
|
When I invoke the db downgrade command with stored params
|
|
Then alembic downgrade should have been called with revision "-1"
|
|
And typer should echo a db message containing "Database downgraded to revision"
|
|
|
|
Scenario: downgrade command with json format outputs formatted data
|
|
Given the migration runner is mocked
|
|
And alembic command module is mocked
|
|
And format_output is mocked
|
|
And the db command parameters are revision "base" and format "json"
|
|
When I invoke the db downgrade command with stored params
|
|
Then format_output should have been called with status ok data
|
|
And the formatted output should have been echoed
|
|
|
|
Scenario: current command shows revision in rich format
|
|
Given the migration runner is mocked with pending migrations
|
|
When I invoke the db current command in rich format
|
|
Then typer should echo a db message containing "Current revision"
|
|
And typer should echo a db message containing "Pending migrations"
|
|
|
|
Scenario: current command with json format outputs formatted data
|
|
Given the migration runner is mocked with pending migrations
|
|
And format_output is mocked
|
|
And the db command format is "json"
|
|
When I invoke the db current command with stored format
|
|
Then format_output should have been called with current revision data
|
|
|
|
Scenario: current command shows none revision when no migrations applied
|
|
Given the migration runner is mocked with no current revision
|
|
When I invoke the db current command in rich format
|
|
Then typer should echo a db message containing "(none)"
|
|
|
|
Scenario: history command in rich format calls alembic history
|
|
Given the migration runner is mocked
|
|
And alembic command module is mocked
|
|
When I invoke the db history command in rich format
|
|
Then alembic history should have been called with the runner config
|
|
|
|
Scenario: history command with json format walks script revisions
|
|
Given the migration runner is mocked
|
|
And alembic ScriptDirectory is mocked with sample revisions
|
|
And format_output is mocked
|
|
And the db command format is "json"
|
|
When I invoke the db history command with stored format
|
|
Then format_output should have been called with revision list data
|
|
And the formatted output should have been echoed
|