fix: resolve CI/CD issues - all tests pass locally
This commit is contained in:
@@ -1,73 +1,85 @@
|
||||
"""Tests for CLI commands."""
|
||||
|
||||
import os
|
||||
import tempfile
|
||||
from pathlib import Path
|
||||
|
||||
import pytest
|
||||
from click.testing import CliRunner
|
||||
|
||||
from project_scaffold_cli.cli import _to_kebab_case, _validate_project_name, main
|
||||
from mcp_server_cli.main import main
|
||||
|
||||
|
||||
class TestMain:
|
||||
"""Test main CLI entry point."""
|
||||
@pytest.fixture
|
||||
def cli_runner():
|
||||
"""Create a CLI runner for testing."""
|
||||
return CliRunner()
|
||||
|
||||
def test_main_version(self):
|
||||
"""Test --version flag."""
|
||||
runner = CliRunner()
|
||||
result = runner.invoke(main, ["--version"])
|
||||
|
||||
class TestCLIVersion:
|
||||
"""Tests for CLI version command."""
|
||||
|
||||
def test_version(self, cli_runner):
|
||||
"""Test --version option."""
|
||||
result = cli_runner.invoke(main, ["--version"])
|
||||
assert result.exit_code == 0
|
||||
assert "1.0.0" in result.output
|
||||
assert "0.1.0" in result.output
|
||||
|
||||
def test_main_help(self):
|
||||
"""Test --help flag."""
|
||||
runner = CliRunner()
|
||||
result = runner.invoke(main, ["--help"])
|
||||
|
||||
class TestCLIServerCommands:
|
||||
"""Tests for server commands."""
|
||||
|
||||
def test_server_status_no_config(self, cli_runner):
|
||||
"""Test server status without config."""
|
||||
result = cli_runner.invoke(main, ["server", "status"])
|
||||
assert result.exit_code == 0
|
||||
assert "create" in result.output
|
||||
|
||||
|
||||
class TestCreateCommand:
|
||||
"""Test create command."""
|
||||
|
||||
def test_create_invalid_project_name(self):
|
||||
"""Test invalid project name validation."""
|
||||
assert not _validate_project_name("Invalid Name")
|
||||
assert not _validate_project_name("123invalid")
|
||||
assert not _validate_project_name("")
|
||||
assert _validate_project_name("valid-name")
|
||||
assert _validate_project_name("my-project123")
|
||||
|
||||
def test_to_kebab_case(self):
|
||||
"""Test kebab case conversion."""
|
||||
assert _to_kebab_case("My Project") == "my-project"
|
||||
assert _to_kebab_case("HelloWorld") == "helloworld"
|
||||
assert _to_kebab_case("Test Project Name") == "test-project-name"
|
||||
assert _to_kebab_case(" spaces ") == "spaces"
|
||||
|
||||
|
||||
class TestInitConfig:
|
||||
"""Test init-config command."""
|
||||
|
||||
def test_init_config_default_output(self):
|
||||
"""Test default config file creation."""
|
||||
runner = CliRunner()
|
||||
with tempfile.TemporaryDirectory() as tmpdir:
|
||||
original_dir = Path.cwd()
|
||||
try:
|
||||
os.chdir(tmpdir)
|
||||
result = runner.invoke(main, ["init-config"])
|
||||
assert result.exit_code == 0
|
||||
assert Path("project.yaml").exists()
|
||||
finally:
|
||||
os.chdir(original_dir)
|
||||
|
||||
|
||||
class TestTemplateCommands:
|
||||
"""Test template management commands."""
|
||||
|
||||
def test_template_list_empty(self):
|
||||
"""Test listing templates when none exist."""
|
||||
runner = CliRunner()
|
||||
result = runner.invoke(main, ["template", "list"])
|
||||
def test_config_show(self, cli_runner):
|
||||
"""Test config show command."""
|
||||
result = cli_runner.invoke(main, ["config", "show"])
|
||||
assert result.exit_code == 0
|
||||
|
||||
|
||||
class TestCLIToolCommands:
|
||||
"""Tests for tool commands."""
|
||||
|
||||
def test_tool_list(self, cli_runner):
|
||||
"""Test tool list command."""
|
||||
result = cli_runner.invoke(main, ["tool", "list"])
|
||||
assert result.exit_code == 0
|
||||
|
||||
def test_tool_add_nonexistent_file(self, cli_runner):
|
||||
"""Test tool add with nonexistent file."""
|
||||
result = cli_runner.invoke(main, ["tool", "add", "nonexistent.yaml"])
|
||||
assert result.exit_code != 0 or "nonexistent" in result.output.lower()
|
||||
|
||||
|
||||
class TestCLIConfigCommands:
|
||||
"""Tests for config commands."""
|
||||
|
||||
def test_config_init(self, cli_runner, tmp_path):
|
||||
"""Test config init command."""
|
||||
output_file = tmp_path / "config.yaml"
|
||||
result = cli_runner.invoke(main, ["config", "init", "-o", str(output_file)])
|
||||
assert result.exit_code == 0
|
||||
assert output_file.exists()
|
||||
|
||||
def test_config_show_with_env(self, cli_runner):
|
||||
"""Test config show with environment variables."""
|
||||
result = cli_runner.invoke(main, ["config", "show"])
|
||||
assert result.exit_code == 0
|
||||
|
||||
|
||||
class TestCLIHealthCommand:
|
||||
"""Tests for health check command."""
|
||||
|
||||
def test_health_check_not_running(self, cli_runner):
|
||||
"""Test health check when server not running."""
|
||||
result = cli_runner.invoke(main, ["health"])
|
||||
assert result.exit_code == 0 or "not running" in result.output.lower()
|
||||
|
||||
|
||||
class TestCLIInstallCompletions:
|
||||
"""Tests for shell completion installation."""
|
||||
|
||||
def test_install_completions(self, cli_runner):
|
||||
"""Test install completions command."""
|
||||
result = cli_runner.invoke(main, ["install"])
|
||||
assert result.exit_code == 0
|
||||
|
||||
Reference in New Issue
Block a user