SuperClaude/tests/unit/test_cli_install.py
mithun50 e2896335ba fix: resolve all ruff linting errors
Fixed 42 linting errors across codebase:
- Auto-fixed 35 import sorting issues (I001)
- Added unused imports to __all__ in execution/__init__.py
- Removed unused variable assignments (F841)
- Updated pyproject.toml to use [tool.ruff.lint] section

All ruff checks now pass successfully.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-12 18:17:39 +01:00

179 lines
5.9 KiB
Python

"""
Unit tests for CLI install command
Tests the command installation functionality.
"""
from superclaude.cli.install_commands import (
install_commands,
list_available_commands,
list_installed_commands,
)
class TestInstallCommands:
"""Test suite for install commands functionality"""
def test_list_available_commands(self):
"""Test listing available commands"""
commands = list_available_commands()
assert isinstance(commands, list)
assert len(commands) > 0
assert "research" in commands
assert "index-repo" in commands
def test_install_commands_to_temp_dir(self, tmp_path):
"""Test installing commands to a temporary directory"""
target_dir = tmp_path / "commands"
success, message = install_commands(target_path=target_dir, force=False)
assert success is True
assert "Installed" in message
assert target_dir.exists()
# Check that command files were copied
command_files = list(target_dir.glob("*.md"))
assert len(command_files) > 0
# Verify specific commands
assert (target_dir / "research.md").exists()
assert (target_dir / "index-repo.md").exists()
def test_install_commands_skip_existing(self, tmp_path):
"""Test that existing commands are skipped without --force"""
target_dir = tmp_path / "commands"
# First install
success1, message1 = install_commands(target_path=target_dir, force=False)
assert success1 is True
# Second install without force
success2, message2 = install_commands(target_path=target_dir, force=False)
assert success2 is True
assert "Skipped" in message2
def test_install_commands_force_reinstall(self, tmp_path):
"""Test force reinstall of existing commands"""
target_dir = tmp_path / "commands"
# First install
success1, message1 = install_commands(target_path=target_dir, force=False)
assert success1 is True
# Modify a file
research_file = target_dir / "research.md"
research_file.write_text("modified")
assert research_file.read_text() == "modified"
# Force reinstall
success2, message2 = install_commands(target_path=target_dir, force=True)
assert success2 is True
assert "Installed" in message2
# Verify file was overwritten
content = research_file.read_text()
assert content != "modified"
assert "research" in content.lower()
def test_list_installed_commands(self, tmp_path):
"""Test listing installed commands"""
target_dir = tmp_path / "commands"
# Before install
# Note: list_installed_commands checks ~/.claude/commands by default
# We can't easily test this without mocking, so just verify it returns a list
installed = list_installed_commands()
assert isinstance(installed, list)
# After install to temp dir
install_commands(target_path=target_dir, force=False)
# Verify files exist
command_files = list(target_dir.glob("*.md"))
assert len(command_files) > 0
def test_install_commands_creates_target_directory(self, tmp_path):
"""Test that target directory is created if it doesn't exist"""
target_dir = tmp_path / "nested" / "commands"
assert not target_dir.exists()
success, message = install_commands(target_path=target_dir, force=False)
assert success is True
assert target_dir.exists()
def test_available_commands_format(self):
"""Test that available commands have expected format"""
commands = list_available_commands()
# Should be list of strings
assert all(isinstance(cmd, str) for cmd in commands)
# Should not include file extensions
assert all(not cmd.endswith(".md") for cmd in commands)
# Should be sorted
assert commands == sorted(commands)
def test_research_command_exists(self, tmp_path):
"""Test that research command specifically gets installed"""
target_dir = tmp_path / "commands"
install_commands(target_path=target_dir, force=False)
research_file = target_dir / "research.md"
assert research_file.exists()
content = research_file.read_text()
assert "research" in content.lower()
assert len(content) > 100 # Should have substantial content
def test_all_expected_commands_available(self):
"""Test that all expected commands are available"""
commands = list_available_commands()
expected = ["agent", "index-repo", "recommend", "research"]
for expected_cmd in expected:
assert expected_cmd in commands, f"Expected command '{expected_cmd}' not found"
class TestInstallCommandsEdgeCases:
"""Test edge cases and error handling"""
def test_install_to_nonexistent_parent(self, tmp_path):
"""Test installation to path with nonexistent parent directories"""
target_dir = tmp_path / "a" / "b" / "c" / "commands"
success, message = install_commands(target_path=target_dir, force=False)
assert success is True
assert target_dir.exists()
def test_empty_target_directory_ok(self, tmp_path):
"""Test that installation works with empty target directory"""
target_dir = tmp_path / "commands"
target_dir.mkdir()
success, message = install_commands(target_path=target_dir, force=False)
assert success is True
def test_cli_integration():
"""
Integration test: verify CLI can import and use install functions
This tests that the CLI main.py can successfully import the functions
"""
from superclaude.cli.install_commands import (
list_available_commands,
)
# Should not raise ImportError
commands = list_available_commands()
assert len(commands) > 0