diff --git a/tests/unit/test_cli.py b/tests/unit/test_cli.py new file mode 100644 index 0000000..a82c1d4 --- /dev/null +++ b/tests/unit/test_cli.py @@ -0,0 +1,59 @@ +"""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()