"""Integration tests for all output formats.""" import tempfile from pathlib import Path from doc2man.parsers.python import parse_python_file from doc2man.generators.man import generate_man_page from doc2man.generators.markdown import generate_markdown from doc2man.generators.html import generate_html class TestAllFormatsIntegration: """Integration tests for all output formats.""" def test_man_format(self): """Test man page format output.""" source = ''' def command(input_file, output_file=None): """Process a file and output the result. Args: input_file: Path to input file. output_file: Optional path to output file. Returns: Processed data. """ return "processed" ''' with tempfile.NamedTemporaryFile(suffix=".py", delete=False) as f: f.write(source.encode()) f.flush() parsed = parse_python_file(Path(f.name)) with tempfile.NamedTemporaryFile(suffix=".1", delete=False) as out: result = generate_man_page([{"file": f.name, "data": parsed}], Path(out.name)) assert ".TH" in result assert "NAME" in result assert "DESCRIPTION" in result Path(out.name).unlink() Path(f.name).unlink() def test_markdown_format(self): """Test markdown format output.""" source = ''' def api(endpoint, method="GET"): """Make an API request. Args: endpoint: The API endpoint URL. method: HTTP method to use. Returns: Response JSON data. """ return {"status": "ok"} ''' with tempfile.NamedTemporaryFile(suffix=".py", delete=False) as f: f.write(source.encode()) f.flush() parsed = parse_python_file(Path(f.name)) with tempfile.NamedTemporaryFile(suffix=".md", delete=False) as out: result = generate_markdown([{"file": f.name, "data": parsed}], Path(out.name)) assert "#" in result assert "## Functions" in result or "#" in result Path(out.name).unlink() Path(f.name).unlink() def test_html_format(self): """Test HTML format output.""" source = ''' class DataProcessor: """Process data efficiently.""" def process(self, data): """Process the given data. Args: data: Input data to process. Returns: Processed result. """ return data.upper() ''' with tempfile.NamedTemporaryFile(suffix=".py", delete=False) as f: f.write(source.encode()) f.flush() parsed = parse_python_file(Path(f.name)) with tempfile.NamedTemporaryFile(suffix=".html", delete=False) as out: result = generate_html([{"file": f.name, "data": parsed}], Path(out.name)) assert "" in result assert "" in result assert "
" in result assert "