forked from cleveragents/cleveragents-core
b21e0fedea
Add 8 BDD scenarios in features/fast_init_upgrade.feature that directly exercise the _fast_init_or_upgrade closure installed by _install_template_db_patch in features/environment.py. Scenarios cover all code paths: - Non-empty DB with matching prefix → early return (original NOT invoked) - Non-existent DB with matching prefix → template copied (original NOT invoked) - Existing empty DB with matching prefix → template copied (original NOT invoked) - Non-matching prefix → delegates to original init_or_upgrade - In-memory SQLite → delegates to original init_or_upgrade - Non-SQLite URL → delegates to original init_or_upgrade - Bare sqlite:// URL → delegates to original init_or_upgrade - Delegation forwards runner instance and keyword arguments correctly Test infrastructure: - features/mocks/fast_init_test_helpers.py provides a context manager (patch_original_init_or_upgrade) that replaces the _original_init_or_upgrade reference inside the closure via cell_contents manipulation, enabling precise call-tracking without recreating the function under test. - All scenarios tagged @mock_only to skip unnecessary DB setup. - Cleanup registered via context._cleanup_handlers for temp file removal. - Works in both sequential and parallel execution modes. Review fix round: - Added bare sqlite:// URL scenario covering the second branch of the in-memory disjunction (L1). - Added scenario verifying runner instance and keyword argument forwarding through the delegation path (L2, L3). - Replaced hardcoded test credentials with clearly synthetic pattern (I4). - Fixed CHANGELOG wording that incorrectly claimed mktemp replacement (L5). ISSUES CLOSED: #733