#!/usr/bin/env python3 """ Simple test to verify the basic components work without Docker. This tests the core components without requiring Docker build. """ import sys import os # Add the project root to the path sys.path.insert(0, os.path.dirname(os.path.abspath(__file__))) def test_imports(): """Test that all modules can be imported.""" try: # Test core modules from src.pr_reviewer.state import FileInfo, ContextOverrides, PRReviewState from src.pr_reviewer.llm import create_llm from src.pr_reviewer.context import resolve_context print("✓ Core modules imported successfully") # Test state creation state = PRReviewState( pr_id="123", pr_title="Test PR", repo_name="test-repo", repo_url="https://github.com/test/repo", branch="feature", base_branch="main" ) print("✓ State creation works") # Test context resolution (will use default files if they exist) context = resolve_context(state) print(f"✓ Context resolution works: {list(context.keys())}") # Test file info file_info = FileInfo( path="test.py", content="print('hello')", status="added", additions=1, deletions=0 ) print("✓ FileInfo creation works") # Test context overrides context_overrides = ContextOverrides( code_review="Custom code review", security_review="Custom security review" ) print("✓ ContextOverrides creation works") print("\n✓ All basic component tests passed!") return True except Exception as e: print(f"✗ Test failed with error: {e}") import traceback traceback.print_exc() return False def test_crew_imports(): """Test that crew modules can be imported.""" try: from crews.code_review_crew.code_review_crew import CodeReviewCrew from crews.security_review_crew.security_review_crew import SecurityReviewCrew from crews.infra_review_crew.infra_review_crew import InfraReviewCrew from crews.summariser_crew.summariser_crew import SummariserCrew print("✓ Crew modules imported successfully") # Try to instantiate (might fail due to missing dependencies, but that's ok for import test) code_crew = CodeReviewCrew() security_crew = SecurityReviewCrew() infra_crew = InfraReviewCrew() summariser_crew = SummariserCrew() print("✓ Crew instantiation works") return True except Exception as e: print(f"⚠ Crew test warning (may be expected if dependencies missing): {e}") # This might fail due to missing crewai or other dependencies, which is ok for this test return True # Don't fail the overall test for this def test_api_imports(): """Test that API modules can be imported.""" try: from src.pr_reviewer.main import app from src.pr_reviewer.flow import CodeReviewFlow print("✓ API modules imported successfully") return True except Exception as e: print(f"✗ API import failed: {e}") return False if __name__ == "__main__": print("Running simple component tests...\n") success = True success &= test_imports() success &= test_crew_imports() success &= test_api_imports() if success: print("\n🎉 All tests passed! The basic components are working.") print("\nTo test with Docker:") print("1. Fix any Docker build issues if needed") print("2. Run: ./start.sh") print("3. Or manually: docker build -t pr-reviewer . && docker run -p 8000:8000 pr-reviewer") else: print("\n❌ Some tests failed. Please check the errors above.") sys.exit(1)