Automatyczny tester projektów Python z GitHub w izolowanym środowisku Docker. Narzędzie analizuje README.md, wyciąga komendy shell i wykonuje je krok po kroku, logując wszystkie błędy do osobnych plików.
- Automatyczne klonowanie projektów z GitHub
- Analiza README - wyciąga komendy z bloków kodu
- Izolowane środowisko Docker z wybraną wersją Python
- Szczegółowe logowanie błędów do osobnych plików
- Inteligentne sugestie napraw dla typowych problemów
- Kolorowy interfejs z pokazywaniem postępu
- Automatyczne czyszczenie kontenerów
- Python 3.8+
- Docker (uruchomiony)
- Poetry
# Sklonuj repozytorium
git clone https://github.com/yourusername/readme-docker-tester.git
cd readme-docker-tester
# Zainstaluj zależności
poetry install
# Aktywuj środowisko wirtualne
poetry shell
poetry build
pip install dist/*.whl
# Testuj projekt z GitHub
readme-test https://github.com/py-lama/git2blog
# Z niestandardowym katalogiem roboczym
readme-test https://github.com/py-lama/git2blog -w ./my_tests
# Z wybraną wersją Python
readme-test https://github.com/py-lama/git2blog -p 3.11
# Verbose mode dla więcej szczegółów
readme-test https://github.com/py-lama/git2blog -v
readme-test [OPTIONS] GITHUB_URL
Options:
-w, --work-dir TEXT Katalog roboczy [default: ./test_projects]
-p, --python-version Wersja Python (3.8-3.11) [default: 3.9]
-t, --timeout INTEGER Timeout dla komend w sekundach [default: 300]
--cleanup/--no-cleanup Czy usuwać kontenery [default: cleanup]
-v, --verbose Więcej szczegółów w logach
--help Pokaż pomoc
Po wykonaniu testów, w katalogu roboczym znajdziesz:
test_projects/
├── project_name/ # Sklonowany projekt
├── bugs/ # Raporty błędów
│ ├── bug_001_143022.json
│ ├── bug_002_143045.json
│ └── ...
└── test_log_20241129_143020.txt # Główny log
Każdy błąd jest zapisywany w osobnym pliku JSON:
{
"timestamp": "2024-11-29T14:30:22",
"command": "pip install -r requirements.txt",
"error_details": {
"command": "pip install -r requirements.txt",
"exit_code": 1,
"output": "ERROR: Could not open requirements file...",
"index": 2
},
"suggested_fixes": [
"Sprawdź czy plik requirements.txt istnieje",
"Użyj względnej ścieżki do pliku"
]
}
- Klonowanie: Pobiera projekt z GitHub do lokalnego katalogu
- Analiza README: Skanuje README.md w poszukiwaniu bloków kodu
- Budowanie obrazu: Tworzy obraz Docker z odpowiednią wersją Python
- Wykonywanie testów: Uruchamia każdą komendę w izolowanym kontenerze
- Logowanie błędów: Zapisuje szczegóły każdego błędu do osobnego pliku
- Generowanie sugestii: Analizuje błędy i proponuje rozwiązania
- Czyszczenie: Usuwa kontenery i obrazy (opcjonalnie)
🐳 README Docker Tester v0.1.0
Testowanie: https://github.com/user/awesome-project
============================================================
📊 PODSUMOWANIE TESTÓW
============================================================
┏━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━┓
┃ Metryka ┃ Wartość ┃
┡━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━┩
│ Wszystkie komendy │ 8 │
│ Wykonane pomyślnie │ 6 │
│ Zakończone błędem │ 2 │
│ Czas wykonania │ 45.32s │
└────────────────────┴──────────┘
❌ KOMENDY Z BŁĘDAMI:
╭─ Błąd #1 ────────────────────────────────────────╮
│ Komenda: pip install torch==1.9.0 │
│ Kod wyjścia: 1 │
│ Output: ERROR: Could not find a version... │
╰──────────────────────────────────────────────────╯
💾 Szczegóły błędów zapisane w: ./test_projects/bugs
📋 Pełny log: ./test_projects/test_log_20241129_143020.txt
poetry run pytest
poetry run black readme_tester/
poetry run flake8 readme_tester/
poetry build
Mile widziane są pull requesty! Dla większych zmian, najpierw otwórz issue aby przedyskutować co chcesz zmienić.
MIT License - zobacz plik LICENSE dla szczegółów.
- Niektóre interaktywne komendy mogą się zawiesić
- Komendy wymagające GUI nie będą działać w kontenerze
- Bardzo długie outputy mogą być obcięte w raportach
- Obsługa Docker Compose
- Integracja z CI/CD
- Eksport raportów do HTML
- Automatyczne tworzenie issue na GitHub
- Obsługa wielu systemów operacyjnych w Docker
- Plugin system dla niestandardowych analizatorów
Made with ❤️ for automated testing