Files
code-doc-cli/.tests/unit/test_cli.py
7000pctAUTO 2c5c494191
Some checks failed
CI / test (push) Has been cancelled
Add unit tests
2026-01-29 16:55:05 +00:00

83 lines
2.6 KiB
Python

"""Unit tests for CLI interface."""
import pytest
import os
from click.testing import CliRunner
from code_doc_cli.cli.main import cli, ExitCode
class TestCLI:
"""Tests for CLI commands."""
@pytest.fixture
def runner(self):
return CliRunner()
def test_version_command(self, runner):
"""Test version command."""
result = runner.invoke(cli, ["version"])
assert result.exit_code == 0
assert "version" in result.output.lower()
def test_languages_command(self, runner):
"""Test languages command."""
result = runner.invoke(cli, ["languages"])
assert result.exit_code == 0
assert "python" in result.output
assert "typescript" in result.output
assert "go" in result.output
def test_init_command(self, runner):
"""Test init command."""
with runner.isolated_filesystem():
result = runner.invoke(cli, ["init"], input="y\n")
assert result.exit_code == 0
assert "code-doc.toml" in result.output
def test_generate_no_files_error(self, runner):
"""Test generate with no files."""
with runner.isolated_filesystem():
result = runner.invoke(cli, ["generate"])
assert result.exit_code == ExitCode.NO_FILES
assert "No source files" in result.output
def test_generate_python_file(self, runner):
"""Test generate with Python file."""
with runner.isolated_filesystem():
with open("test.py", "w") as f:
f.write('''
def add(a: int, b: int) -> int:
"""Add two numbers."""
return a + b
''')
result = runner.invoke(cli, ["generate", "test.py"])
assert result.exit_code == 0
assert "API Documentation" in result.output
assert "add" in result.output
class TestExitCodes:
"""Tests for exit codes."""
@pytest.fixture
def runner(self):
return CliRunner()
def test_success_exit_code(self, runner):
"""Test successful execution returns 0."""
with runner.isolated_filesystem():
with open("test.py", "w") as f:
f.write('''
def add(a: int, b: int) -> int:
"""Add two numbers."""
return a + b
''')
result = runner.invoke(cli, ["generate", "test.py"])
assert result.exit_code == ExitCode.SUCCESS
def test_no_files_exit_code(self, runner):
"""Test no files found returns 1."""
with runner.isolated_filesystem():
result = runner.invoke(cli, ["generate"])
assert result.exit_code == ExitCode.NO_FILES