test_server.pyโข4.94 kB
#!/usr/bin/env python3
"""Test script for the GitHub MCP Server with styled code reviews."""
import server
import json
def test_list_styles():
"""Test the list_review_styles function."""
print("๐งช TEST 1: List Review Styles")
print("=" * 50)
result = server.list_review_styles.__wrapped__()
print(f"โ
Total styles available: {result['total_styles']}")
print(f"โ
Default style: {result['default_style']}")
print("\n๐ Available styles:")
for style in result['available_styles']:
print(f" - {style}")
print("\n" + "=" * 50)
return result
def test_download_files():
"""Test the download_github_files function."""
print("๐งช TEST 2: Download GitHub Files")
print("=" * 50)
urls = [
"https://raw.githubusercontent.com/microsoft/vscode/main/README.md",
"https://raw.githubusercontent.com/facebook/react/main/package.json"
]
result = server.download_github_files.__wrapped__(urls)
print(f"โ
Total URLs: {result['summary']['total_urls']}")
print(f"โ
Successful downloads: {result['summary']['successful_downloads']}")
print(f"โ
Failed downloads: {result['summary']['failed_downloads']}")
print(f"โ
Success rate: {result['summary']['success_rate']}")
for i, file_data in enumerate(result['files']):
if file_data['success']:
print(f"\n๐ File {i+1}: {file_data['metadata']['filename']}")
print(f" Repository: {file_data['metadata']['owner']}/{file_data['metadata']['repo']}")
print(f" Size: {file_data['metadata']['size_bytes']} bytes")
print(f" Extension: {file_data['metadata']['file_extension']}")
else:
print(f"\nโ File {i+1}: Failed - {file_data['error']}")
print("\n" + "=" * 50)
return result
def test_download_and_review():
"""Test the download_and_review_github_files function."""
print("๐งช TEST 3: Download and Review GitHub Files")
print("=" * 50)
urls = ["https://raw.githubusercontent.com/microsoft/vscode/main/README.md"]
style = "pirate"
result = server.download_and_review_github_files.__wrapped__(urls, style)
print(f"โ
Total files: {result['summary']['total_files']}")
print(f"โ
Successful reviews: {result['summary']['successful_reviews']}")
print(f"โ
Failed reviews: {result['summary']['failed_reviews']}")
print(f"โ
Style used: {result['summary']['style_used']}")
for i, review in enumerate(result['reviews']):
if 'error' not in review:
print(f"\n๐ Review {i+1}: {review['filename']}")
print(f" Repository: {review['repository']}")
print(f" Style: {review['style_used']}")
print(f" Size: {review['size_bytes']} bytes")
print(f"\n๐ญ Review Preview:")
# Show first 300 characters of the review
preview = review['review'][:300] + "..." if len(review['review']) > 300 else review['review']
print(f" {preview}")
else:
print(f"\nโ Review {i+1}: Failed - {review['error']}")
print("\n" + "=" * 50)
return result
def test_invalid_style():
"""Test with an invalid style."""
print("๐งช TEST 4: Invalid Style Handling")
print("=" * 50)
urls = ["https://raw.githubusercontent.com/microsoft/vscode/main/README.md"]
invalid_style = "invalid_style"
result = server.download_and_review_github_files.__wrapped__(urls, invalid_style)
if 'error' in result:
print(f"โ
Correctly caught invalid style: {result['error']}")
else:
print("โ Should have caught invalid style")
print("\n" + "=" * 50)
return result
def test_empty_urls():
"""Test with empty URLs."""
print("๐งช TEST 5: Empty URLs Handling")
print("=" * 50)
result = server.download_and_review_github_files.__wrapped__([])
if 'error' in result:
print(f"โ
Correctly caught empty URLs: {result['error']}")
else:
print("โ Should have caught empty URLs")
print("\n" + "=" * 50)
return result
def main():
"""Run all tests."""
print("๐ GitHub MCP Server Test Suite")
print("=" * 60)
print()
try:
# Run all tests
test_list_styles()
test_download_files()
test_download_and_review()
test_invalid_style()
test_empty_urls()
print("๐ All tests completed successfully!")
print("\n๐ Summary:")
print("โ
Server imports correctly")
print("โ
All tools are functional")
print("โ
Error handling works")
print("โ
Ready for Cursor integration!")
except Exception as e:
print(f"โ Test failed with error: {e}")
import traceback
traceback.print_exc()
if __name__ == "__main__":
main()