Spaces:
Running
Running
#!/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() |