Feature: Container module coverage round 2 As a developer maintaining container.py I want every uncovered line and branch exercised So that container.py achieves full coverage # ------------------------------------------------------------------- # get_ai_provider – non-mock paths (lines 51 False, 66-67, 69) # ------------------------------------------------------------------- Scenario: AI provider returns None when mock disabled and no providers configured Given r2cont- the mock AI environment flag is disabled And r2cont- a provider registry with no configured providers When r2cont- I call get_ai_provider with the mocked registry Then r2cont- the ai provider result should be None Scenario: AI provider returns real provider when mock disabled and providers exist Given r2cont- the mock AI environment flag is disabled And r2cont- a provider registry with configured providers When r2cont- I call get_ai_provider with the mocked registry Then r2cont- the ai provider result should not be None # ------------------------------------------------------------------- # get_ai_provider – features path already on sys.path (line 57 partial) # ------------------------------------------------------------------- Scenario: AI provider with features path already on sys.path does not duplicate it Given r2cont- the mock AI environment flag is enabled And r2cont- the features path is already on sys.path When r2cont- I call get_ai_provider without registry args Then r2cont- the features path should appear exactly once on sys.path # ------------------------------------------------------------------- # _build_project_resource_link_repo (lines 125-130) # ------------------------------------------------------------------- Scenario: Build project resource link repo creates valid repository When r2cont- I build a project resource link repo with an in-memory database Then r2cont- the result should be a ProjectResourceLinkRepository instance # ------------------------------------------------------------------- # get_database_url – env var branches (lines 82, 87) # ------------------------------------------------------------------- Scenario: get_database_url returns fallback when no env vars are set Given r2cont- no database URL environment variables are set When r2cont- I call get_database_url Then r2cont- the database URL should start with "sqlite:///" Scenario: get_database_url returns CLEVERAGENTS_DATABASE_URL when set Given r2cont- the env var "CLEVERAGENTS_DATABASE_URL" is set to "sqlite:///explicit.db" When r2cont- I call get_database_url Then r2cont- the database URL should be "sqlite:///explicit.db" Scenario: get_database_url returns CLEVERAGENTS_TEST_DATABASE_URL when primary is unset Given r2cont- the env var "CLEVERAGENTS_DATABASE_URL" is cleared And r2cont- the env var "CLEVERAGENTS_TEST_DATABASE_URL" is set to "sqlite:///test.db" When r2cont- I call get_database_url Then r2cont- the database URL should be "sqlite:///test.db" Scenario: get_database_url skips empty env var values Given r2cont- the env var "CLEVERAGENTS_DATABASE_URL" is set to empty And r2cont- the env var "CLEVERAGENTS_TEST_DATABASE_URL" is set to empty When r2cont- I call get_database_url Then r2cont- the database URL should start with "sqlite:///" # ------------------------------------------------------------------- # get_container – cached instance (line 256 False branch) # ------------------------------------------------------------------- Scenario: get_container returns the cached instance on subsequent calls Given r2cont- the global container has been reset When r2cont- I call get_container twice Then r2cont- both calls should return the same container instance # ------------------------------------------------------------------- # override_providers – non-existent attribute (line 285 False) # ------------------------------------------------------------------- Scenario: override_providers ignores non-existent provider names Given r2cont- the global container has been reset When r2cont- I override a provider with a non-existent name Then r2cont- no error should have been raised # ------------------------------------------------------------------- # override_providers – non-database_url provider (line 288 else) # ------------------------------------------------------------------- Scenario: override_providers handles non-database_url providers via Object Given r2cont- the global container has been reset When r2cont- I override the settings provider with a mock value Then r2cont- the settings provider should return the mock value