Files
codesnap/tests/unit/test_cli.py

60 lines
2.2 KiB
Python

"""Unit tests for CLI module."""
import pytest
import os
import tempfile
from click.testing import CliRunner
from codesnap.cli import main
class TestCLI:
"""Tests for CLI commands."""
def setup_method(self) -> None:
self.runner = CliRunner()
def test_main_help(self) -> None:
result = self.runner.invoke(main, ["--help"])
assert result.exit_code == 0
assert "CodeSnap" in result.output
def test_cli_version(self) -> None:
result = self.runner.invoke(main, ["--version"])
assert result.exit_code == 0
assert "0.1.0" in result.output
def test_cli_analyze_nonexistent_path(self) -> None:
result = self.runner.invoke(main, ["analyze", "/nonexistent/path"])
assert result.exit_code != 0
def test_cli_analyze_current_directory(self) -> None:
with tempfile.TemporaryDirectory() as tmpdir:
with open(os.path.join(tmpdir, "test.py"), "w") as f:
f.write("def test(): pass\n")
result = self.runner.invoke(main, ["analyze", tmpdir])
assert result.exit_code == 0
def test_cli_analyze_with_output_format(self) -> None:
with tempfile.TemporaryDirectory() as tmpdir:
with open(os.path.join(tmpdir, "test.py"), "w") as f:
f.write("def test(): pass\n")
result = self.runner.invoke(main, ["analyze", tmpdir, "--format", "json"])
assert result.exit_code == 0
def test_cli_analyze_with_max_files(self) -> None:
with tempfile.TemporaryDirectory() as tmpdir:
with open(os.path.join(tmpdir, "test.py"), "w") as f:
f.write("def test(): pass\n")
result = self.runner.invoke(main, ["analyze", tmpdir, "--max-files", "10"])
assert result.exit_code == 0
def test_cli_languages(self) -> None:
result = self.runner.invoke(main, ["languages"])
assert result.exit_code == 0
assert "python" in result.output.lower()
def test_cli_info_languages(self) -> None:
result = self.runner.invoke(main, ["info", "--languages"])
assert result.exit_code == 0
assert "python" in result.output.lower()