#!/usr/bin/env python3 """ Простой тест для проверки импорта основных зависимостей после исправления конфликта """ import sys def test_imports(): """Проверяет что все основные зависимости импортируются без ошибок""" print("🧪 Тестирование импорта зависимостей...") errors = [] # Тестируем основные зависимости test_packages = [ ("gradio", "Gradio framework"), ("bandit", "Bandit security scanner"), ("detect_secrets", "Detect Secrets scanner"), ("semgrep", "Semgrep scanner"), ("smolagents", "SmolaAgents MCP framework"), ("agno", "Agno AI agent framework"), ("rich", "Rich text formatting"), ("fastapi", "FastAPI framework"), ("uvicorn", "Uvicorn ASGI server"), ("pandas", "Pandas data analysis"), ("numpy", "Numpy arrays"), ("pydantic", "Pydantic data validation"), ("aiohttp", "Async HTTP client"), ("requests", "HTTP requests library"), ("click", "Click CLI framework"), ("yaml", "PyYAML parser"), ("toml", "TOML parser"), ("dotenv", "Python dotenv") ] success_count = 0 for package, description in test_packages: try: if package == "yaml": import yaml elif package == "dotenv": from dotenv import load_dotenv else: __import__(package) print(f"✅ {package}: {description}") success_count += 1 except ImportError as e: error_msg = f"❌ {package}: {description} - {str(e)}" print(error_msg) errors.append(error_msg) except Exception as e: error_msg = f"⚠️ {package}: {description} - Unexpected error: {str(e)}" print(error_msg) errors.append(error_msg) print(f"\n📊 Результаты тестирования:") print(f"✅ Успешно импортировано: {success_count}/{len(test_packages)}") print(f"❌ Ошибок импорта: {len(errors)}") if errors: print(f"\n❌ Ошибки:") for error in errors: print(f" {error}") return False else: print(f"\n🎉 Все зависимости импортируются корректно!") return True def test_rich_version(): """Проверяет версию rich и совместимость с semgrep и smolagents""" print("\n🔍 Проверка версии Rich...") try: import rich # Пробуем получить версию через importlib.metadata (более надежный способ) try: from importlib.metadata import version rich_version_str = version('rich') except ImportError: # Fallback для старых версий Python import pkg_resources rich_version_str = pkg_resources.get_distribution('rich').version print(f"✅ Rich версия: {rich_version_str}") # Проверяем что rich >= 13.9.4 (требование smolagents) from packaging import version as pkg_version rich_version = pkg_version.parse(rich_version_str) min_required = pkg_version.parse("13.9.4") if rich_version >= min_required: print(f"✅ Rich версия {rich_version_str} соответствует требованиям smolagents (>=13.9.4)") else: print(f"⚠️ Rich версия {rich_version_str} может быть несовместима с smolagents (требуется >=13.9.4)") return False # Пробуем импортировать функции, которые используют semgrep и smolagents from rich.console import Console from rich.table import Table print("✅ Rich Console и Table импортируются корректно") return True except Exception as e: print(f"❌ Ошибка при проверке Rich: {str(e)}") return False def main(): """Основная функция тестирования""" print("🔒 Тест совместимости зависимостей VulnBuster") print("=" * 60) # Тестируем импорты imports_ok = test_imports() # Тестируем версию Rich rich_ok = test_rich_version() print("\n" + "=" * 60) if imports_ok and rich_ok: print("🎉 Все тесты пройдены успешно!") print("💡 Теперь можно запустить: docker build -t vulnbuster .") sys.exit(0) else: print("❌ Некоторые тесты не пройдены") print("💡 Проверьте requirements.txt и Dockerfile") sys.exit(1) if __name__ == "__main__": main()