#!/usr/bin/env python3 # -*- coding: utf-8 -*- # Timestamp: 2026-01-20 # File: tests/python/test_scitex_writer_cli.py """Tests for scitex_writer CLI module.""" import subprocess import sys from unittest.mock import patch class TestVersion: """Test version-related functionality.""" def test_version_import(self): """Test that version can be imported.""" from scitex_writer import __version__ assert __version__ is not None assert isinstance(__version__, str) assert len(__version__.split(".")) >= 2 def test_version_cli_flag(self): """Test --version flag.""" from scitex_writer import __version__ result = subprocess.run( [sys.executable, "-m", "scitex_writer", "--version"], capture_output=True, text=True, ) assert result.returncode == 0 assert "scitex-writer" in result.stdout assert __version__ in result.stdout def test_version_short_flag(self): """Test -V flag.""" result = subprocess.run( [sys.executable, "-m", "scitex_writer", "-V"], capture_output=True, text=True, ) assert result.returncode == 0 assert "scitex-writer" in result.stdout class TestMainHelp: """Test main help functionality.""" def test_help_flag(self): """Test --help flag.""" result = subprocess.run( [sys.executable, "-m", "scitex_writer", "--help"], capture_output=True, text=True, ) assert result.returncode == 0 assert "SciTeX Writer" in result.stdout assert "mcp" in result.stdout def test_short_help_flag(self): """Test -h flag.""" result = subprocess.run( [sys.executable, "-m", "scitex_writer", "-h"], capture_output=True, text=True, ) assert result.returncode == 0 assert "mcp" in result.stdout class TestMcpCommand: """Test MCP subcommand.""" def test_mcp_help(self): """Test mcp --help.""" result = subprocess.run( [sys.executable, "-m", "scitex_writer", "mcp", "--help"], capture_output=True, text=True, ) assert result.returncode == 0 assert "installation" in result.stdout assert "start" in result.stdout class TestMcpInstallation: """Test mcp installation subcommand.""" def test_mcp_installation(self): """Test mcp installation output.""" result = subprocess.run( [sys.executable, "-m", "scitex_writer", "mcp", "installation"], capture_output=True, text=True, ) assert result.returncode == 0 assert "mcpServers" in result.stdout or "Installation" in result.stdout class TestMcpStart: """Test mcp start subcommand.""" def test_mcp_start_help(self): """Test mcp start --help.""" result = subprocess.run( [sys.executable, "-m", "scitex_writer", "mcp", "start", "--help"], capture_output=True, text=True, ) assert result.returncode == 0 assert "--transport" in result.stdout or "-t" in result.stdout class TestMainFunction: """Test main() function directly.""" def test_main_no_args(self): """Test main() with no arguments shows help.""" from scitex_writer._cli import main with patch("sys.argv", ["scitex-writer"]): result = main() assert result == 0 def test_main_mcp_no_subcommand(self): """Test main() with mcp but no subcommand shows help.""" from scitex_writer._cli import main with patch("sys.argv", ["scitex-writer", "mcp"]): result = main() assert result == 0 # EOF