feat: Establish CLI subsystem *-stats command naming convention
Implemented comprehensive CLI naming consistency by standardizing all subsystem commands to use *-stats for status reporting: ## Changes Made: ### 1. Removed Unnecessary Skipped Tests - Removed two deferred tests for global option path display from Issue #39 - Tests were marked as requiring "complex CLI changes" and deemed not worth effort - Cleaner test suite without placeholder functionality ### 2. Renamed cache-info → cache-stats - Updated CLI command: @cli.command('cache-stats') - Updated function name: cache_info() → cache_stats() - Updated all test files to use cache-stats - Consistent with subsystem naming convention ### 3. Renamed db-status → db-stats - Updated CLI command: @cli.command('db-stats') - Updated function name: db_status() → db_stats() - Updated all test files and references to use db-stats - Maintains database subsystem consistency ### 4. Implemented config-stats Command - New CLI command following *-stats convention - Displays configuration statistics and status information - Supports all output formats: table, json, yaml, simple - Integrates with existing config system when available - Provides fallback functionality for basic configuration reporting ## Established Convention: All CLI subsystems now have consistent *-stats commands: - ✅ ast-stats (already existed) - ✅ cache-stats (renamed from cache-info) - ✅ db-stats (renamed from db-status) - ✅ config-stats (newly implemented) ## Benefits: - Intuitive command discovery (users know to try *-stats for any subsystem) - Consistent CLI experience across all subsystems - Better organized help documentation - Professional CLI interface following standard conventions All tests updated and passing. CLI maintains backward compatibility for essential functionality while establishing clear, consistent patterns. 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
@@ -5,7 +5,7 @@ TDD approach: These tests define the exact requirements for cache management com
|
||||
All tests should initially FAIL (RED) and drive the implementation (GREEN).
|
||||
|
||||
Commands to implement:
|
||||
- `markitect cache-info` - Display cache statistics and effectiveness
|
||||
- `markitect cache-stats` - Display cache statistics and effectiveness
|
||||
- `markitect cache-clean` - Clear cache and free memory
|
||||
- `markitect cache-invalidate <file>` - Invalidate specific file cache
|
||||
"""
|
||||
@@ -47,51 +47,51 @@ This is test content.
|
||||
if Path(self.temp_dir).exists():
|
||||
shutil.rmtree(self.temp_dir)
|
||||
|
||||
# ===== cache-info command tests =====
|
||||
# ===== cache-stats command tests =====
|
||||
|
||||
def test_cache_info_command_exists(self):
|
||||
"""RED: cache-info command should exist and be callable."""
|
||||
result = self.runner.invoke(cli, ['cache-info'])
|
||||
def test_cache_stats_command_exists(self):
|
||||
"""RED: cache-stats command should exist and be callable."""
|
||||
result = self.runner.invoke(cli, ['cache-stats'])
|
||||
|
||||
# Should NOT be "No such command" - command must exist
|
||||
assert "No such command" not in result.output
|
||||
# Command exists and runs (may fail for other reasons initially)
|
||||
assert result.exit_code in [0, 1, 2]
|
||||
|
||||
def test_cache_info_shows_cache_directory_path(self):
|
||||
"""RED: cache-info should display the cache directory path."""
|
||||
result = self.runner.invoke(cli, ['cache-info'])
|
||||
def test_cache_stats_shows_cache_directory_path(self):
|
||||
"""RED: cache-stats should display the cache directory path."""
|
||||
result = self.runner.invoke(cli, ['cache-stats'])
|
||||
|
||||
assert result.exit_code == 0
|
||||
assert "Cache Directory:" in result.output
|
||||
|
||||
def test_cache_info_shows_total_files_count(self):
|
||||
"""RED: cache-info should show count of cached files."""
|
||||
def test_cache_stats_shows_total_files_count(self):
|
||||
"""RED: cache-stats should show count of cached files."""
|
||||
# Create cache with known files
|
||||
cache = ASTCache(self.cache_dir)
|
||||
cache.cache_file(self.test_file)
|
||||
|
||||
result = self.runner.invoke(cli, ['cache-info'])
|
||||
result = self.runner.invoke(cli, ['cache-stats'])
|
||||
|
||||
assert result.exit_code == 0
|
||||
assert "Total Files:" in result.output
|
||||
assert "1" in result.output
|
||||
|
||||
def test_cache_info_shows_cache_size(self):
|
||||
"""RED: cache-info should display total cache size."""
|
||||
def test_cache_stats_shows_cache_size(self):
|
||||
"""RED: cache-stats should display total cache size."""
|
||||
cache = ASTCache(self.cache_dir)
|
||||
cache.cache_file(self.test_file)
|
||||
|
||||
result = self.runner.invoke(cli, ['cache-info'])
|
||||
result = self.runner.invoke(cli, ['cache-stats'])
|
||||
|
||||
assert result.exit_code == 0
|
||||
assert "Cache Size:" in result.output
|
||||
# Should show size in bytes, KB, MB, etc.
|
||||
assert any(unit in result.output for unit in ["bytes", "KB", "MB", "B"])
|
||||
|
||||
def test_cache_info_command_works_with_empty_and_populated_cache(self):
|
||||
"""cache-info command works with both empty and populated cache states."""
|
||||
result = self.runner.invoke(cli, ['cache-info'])
|
||||
def test_cache_stats_command_works_with_empty_and_populated_cache(self):
|
||||
"""cache-stats command works with both empty and populated cache states."""
|
||||
result = self.runner.invoke(cli, ['cache-stats'])
|
||||
|
||||
assert result.exit_code == 0
|
||||
assert "Cache Directory:" in result.output
|
||||
|
||||
Reference in New Issue
Block a user