Files
temp/features/session_list_error.feature
T
brent.edwards e732c32981 fix(cli): handle missing database in session list command
Register PersistentSessionService in the DI Container so that
'agents session list' (and all other session subcommands) no longer
throw AttributeError due to a missing 'db' provider.

Changes:
- Add _build_session_service() factory and session_service provider to
  Container, with targeted table creation for session/session_messages
  only (avoids bypassing Alembic for the full schema).
- Add auto_commit parameter to SessionRepository and
  SessionMessageRepository; when True each method commits and closes
  its own database session, preventing resource leaks in CLI context.
- Rewrite _get_session_service() to resolve via container.session_service()
  with module-level caching.
- Add (DatabaseError, AttributeError) error handling with logging to all
  seven session subcommands (list, create, show, delete, export, import,
  tell).
- Remove @tdd_expected_fail tags from all session test files so they run
  as proper regression tests.

ISSUES CLOSED: #554, #570, #680
2026-03-12 16:16:41 +00:00

86 lines
4.3 KiB
Gherkin

# Regression tests for bug #554 — verifies that the DI container fix for
# session list command works correctly. The @tdd_expected_fail tags have
# been removed now that the fix has landed.
Feature: Session list command handles missing database gracefully
As a developer using the agents CLI
I want "agents session list" to work after a fresh init
So that I can view my sessions without a DI container error
Background:
Given a session-list-error CLI runner using the real DI path
@tdd_bug @tdd_bug_554
Scenario: Session list returns empty list when no sessions exist
When I invoke session-list-error list with default format
Then the session-list-error command should exit successfully
And the session-list-error output should contain "No sessions found"
And the session-list-error output should not contain "AttributeError"
@tdd_bug @tdd_bug_554
Scenario: Session list after init does not raise DI error
When I invoke session-list-error list with default format
Then the session-list-error command should exit successfully
And the session-list-error output should not contain "AttributeError"
And the session-list-error output should not contain "INTERNAL"
@tdd_bug @tdd_bug_554
Scenario: Session list returns sessions after creation via service
Given a session-list-error service with a pre-populated session
When I invoke session-list-error list with default format
Then the session-list-error command should exit successfully
And the session-list-error output should contain "Sessions ("
@tdd_bug @tdd_bug_554
Scenario: Session list works with rich output format
Given a session-list-error service with a pre-populated session
When I invoke session-list-error list with format "rich"
Then the session-list-error command should exit successfully
And the session-list-error output should contain "Sessions ("
And the session-list-error output should not contain "AttributeError"
@tdd_bug @tdd_bug_554
Scenario: Session list works with JSON output format
Given a session-list-error service with a pre-populated session
When I invoke session-list-error list with format "json"
Then the session-list-error command should exit successfully
And the session-list-error output should be valid JSON containing "sessions"
@tdd_bug @tdd_bug_554
Scenario: Session list works with plain output format
Given a session-list-error service with a pre-populated session
When I invoke session-list-error list with format "plain"
Then the session-list-error command should exit successfully
And the session-list-error output should contain "total:"
@tdd_bug @tdd_bug_554
Scenario: Session list works with YAML output format
Given a session-list-error service with a pre-populated session
When I invoke session-list-error list with format "yaml"
Then the session-list-error command should exit successfully
And the session-list-error output should be valid YAML containing "sessions"
# Empty-list format scenarios (F2/F3) — exercises the empty-list code path
# with explicit output formats. The production code currently bypasses
# --format for empty lists, so these document the expected behaviour.
@tdd_bug @tdd_bug_554
Scenario: Empty session list with JSON format produces valid JSON
When I invoke session-list-error list with format "json"
Then the session-list-error command should exit successfully
And the session-list-error output should be valid JSON containing "sessions"
And the session-list-error output should not contain "AttributeError"
@tdd_bug @tdd_bug_554
Scenario: Empty session list with YAML format produces valid YAML
When I invoke session-list-error list with format "yaml"
Then the session-list-error command should exit successfully
And the session-list-error output should be valid YAML containing "sessions"
And the session-list-error output should not contain "AttributeError"
@tdd_bug @tdd_bug_554
Scenario: Empty session list with plain format does not error
When I invoke session-list-error list with format "plain"
Then the session-list-error command should exit successfully
And the session-list-error output should contain "total: 0"
And the session-list-error output should not contain "AttributeError"