diff --git a/DEPENDENCIES.md b/DEPENDENCIES.md new file mode 100644 index 00000000..62912945 --- /dev/null +++ b/DEPENDENCIES.md @@ -0,0 +1,92 @@ +# MarkiTect Project Dependencies + +## Overview +This document lists all project dependencies for the MarkiTect project. + +## Production Dependencies +These are required for running the application: + +- **markdown-it-py** - Markdown parsing library +- **PyYAML** - YAML file processing +- **click>=8.0.0** - Command-line interface framework +- **tabulate>=0.9.0** - Table formatting for output +- **jsonpath-ng>=1.5.0** - JSONPath query support +- **aiohttp>=3.8.0** - Async HTTP client/server +- **toml** - TOML file parsing (for frontmatter support) + +## Development Dependencies +These are required for development, testing, and code quality: + +- **pytest** - Testing framework +- **pytest-cov** - Test coverage reporting +- **black** - Code formatting +- **flake8** - Code linting +- **mypy** - Type checking + +## Test Dependencies +Additional dependencies for testing (from tests/requirements-test.txt if present): +- See `tests/requirements-test.txt` for any additional test-specific dependencies + +## Installation + +### Quick Setup +```bash +# Install production dependencies only +pip install -e . + +# Install with development dependencies +make dev +``` + +### Manual Installation +```bash +# Production dependencies +pip install markdown-it-py PyYAML click>=8.0.0 tabulate>=0.9.0 jsonpath-ng>=1.5.0 aiohttp>=3.8.0 toml + +# Development dependencies +pip install pytest pytest-cov black flake8 mypy +``` + +### Virtual Environment Setup +```bash +# Create and activate virtual environment +python3 -m venv .venv +source .venv/bin/activate + +# Install dependencies +make dev +``` + +## Running Tests +After installing dependencies: + +```bash +# Run all tests +make test + +# Run tests with coverage +pytest --cov + +# Run specific test layers +make test-foundation +make test-infrastructure +make test-integration +``` + +## Code Quality Tools + +```bash +# Format code +make format + +# Run linting +make lint + +# Type checking +mypy markitect/ +``` + +## Notes +- Python 3.8+ is required +- Virtual environment (.venv) is recommended +- All dependencies are managed through pyproject.toml \ No newline at end of file diff --git a/tests/test_l5_infrastructure_cache_management.py b/tests/test_l5_infrastructure_cache_management.py index 74c746e0..ec914756 100644 --- a/tests/test_l5_infrastructure_cache_management.py +++ b/tests/test_l5_infrastructure_cache_management.py @@ -67,8 +67,13 @@ This is test content. def test_cache_stats_shows_total_files_count(self): """RED: cache-stats should show count of cached files.""" - # Create cache with known files - cache = ASTCache(self.cache_dir) + # Clean existing cache first + self.runner.invoke(cli, ['cache-clean']) + + # Create cache with known files using the project's default cache location + from pathlib import Path + project_cache_dir = Path.cwd() / ".ast_cache" + cache = ASTCache(project_cache_dir) cache.cache_file(self.test_file) result = self.runner.invoke(cli, ['cache-stats']) diff --git a/tests/test_schema_visualization.py b/tests/test_schema_visualization.py index bb73b79d..82e1c962 100644 --- a/tests/test_schema_visualization.py +++ b/tests/test_schema_visualization.py @@ -60,7 +60,7 @@ class TestSchemaVisualization: """Test that emoji mode produces expected output format.""" try: result = subprocess.run([ - sys.executable, 'visualize_schema.py', str(sample_markdown_file) + sys.executable, 'tools/visualize_schema.py', str(sample_markdown_file) ], capture_output=True, text=True, cwd=Path(__file__).parent.parent) assert result.returncode == 0 @@ -106,7 +106,7 @@ class TestSchemaVisualization: """Test that ASCII mode produces expected output format.""" try: result = subprocess.run([ - sys.executable, 'visualize_schema.py', str(sample_markdown_file), '--ascii' + sys.executable, 'tools/visualize_schema.py', str(sample_markdown_file), '--ascii' ], capture_output=True, text=True, cwd=Path(__file__).parent.parent) assert result.returncode == 0 @@ -166,7 +166,7 @@ class TestSchemaVisualization: """Test that depth limitation works correctly.""" try: result = subprocess.run([ - sys.executable, 'visualize_schema.py', + sys.executable, 'tools/visualize_schema.py', str(sample_markdown_file), '--max-depth', '2' ], capture_output=True, text=True, cwd=Path(__file__).parent.parent) @@ -187,7 +187,7 @@ class TestSchemaVisualization: """Test that schema summary emoji mode produces expected format.""" try: result = subprocess.run([ - sys.executable, 'schema_summary.py', str(sample_markdown_file) + sys.executable, 'tools/schema_summary.py', str(sample_markdown_file) ], capture_output=True, text=True, cwd=Path(__file__).parent.parent) assert result.returncode == 0 @@ -218,7 +218,7 @@ class TestSchemaVisualization: """Test that schema summary ASCII mode produces expected format.""" try: result = subprocess.run([ - sys.executable, 'schema_summary.py', str(sample_markdown_file), '--ascii' + sys.executable, 'tools/schema_summary.py', str(sample_markdown_file), '--ascii' ], capture_output=True, text=True, cwd=Path(__file__).parent.parent) assert result.returncode == 0 @@ -257,12 +257,12 @@ class TestSchemaVisualization: try: # Test emoji mode result_emoji = subprocess.run([ - sys.executable, 'visualize_schema.py', str(sample_markdown_file) + sys.executable, 'tools/visualize_schema.py', str(sample_markdown_file) ], capture_output=True, text=True, cwd=Path(__file__).parent.parent) # Test ASCII mode result_ascii = subprocess.run([ - sys.executable, 'visualize_schema.py', str(sample_markdown_file), '--ascii' + sys.executable, 'tools/visualize_schema.py', str(sample_markdown_file), '--ascii' ], capture_output=True, text=True, cwd=Path(__file__).parent.parent) assert result_emoji.returncode == 0 @@ -289,7 +289,7 @@ class TestSchemaVisualization: # Test both modes for args in [[], ['--ascii']]: result = subprocess.run([ - sys.executable, 'visualize_schema.py', str(sample_markdown_file) + sys.executable, 'tools/visualize_schema.py', str(sample_markdown_file) ] + args, capture_output=True, text=True, cwd=Path(__file__).parent.parent) assert result.returncode == 0 @@ -318,7 +318,7 @@ class TestSchemaVisualization: try: result = subprocess.run([ - sys.executable, 'visualize_schema.py', str(empty_file) + sys.executable, 'tools/visualize_schema.py', str(empty_file) ], capture_output=True, text=True, cwd=Path(__file__).parent.parent) # Should handle empty file gracefully @@ -335,7 +335,7 @@ class TestSchemaVisualization: def test_visualization_error_handling(self): """Test error handling for non-existent files.""" result = subprocess.run([ - sys.executable, 'visualize_schema.py', 'nonexistent_file.md' + sys.executable, 'tools/visualize_schema.py', 'nonexistent_file.md' ], capture_output=True, text=True, cwd=Path(__file__).parent.parent) assert result.returncode == 1 @@ -344,7 +344,7 @@ class TestSchemaVisualization: def test_help_output_format(self): """Test help output contains expected information.""" result = subprocess.run([ - sys.executable, 'visualize_schema.py', '--help' + sys.executable, 'tools/visualize_schema.py', '--help' ], capture_output=True, text=True, cwd=Path(__file__).parent.parent) assert result.returncode == 0 @@ -369,7 +369,7 @@ class TestOutputConsistency: try: result = subprocess.run([ - sys.executable, 'visualize_schema.py', str(test_file), '--ascii' + sys.executable, 'tools/visualize_schema.py', str(test_file), '--ascii' ], capture_output=True, text=True, cwd=Path(__file__).parent.parent) assert result.returncode == 0 @@ -393,7 +393,7 @@ class TestOutputConsistency: try: for mode_args in [[], ['--ascii']]: result = subprocess.run([ - sys.executable, 'visualize_schema.py', str(test_file) + sys.executable, 'tools/visualize_schema.py', str(test_file) ] + mode_args, capture_output=True, text=True, cwd=Path(__file__).parent.parent) assert result.returncode == 0