Skip to content

multigit-com/readmetest

Repository files navigation

README Docker Tester 🐳

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.

🚀 Funkcje

  • 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

📦 Instalacja

Wymagania

  • Python 3.8+
  • Docker (uruchomiony)
  • Poetry

Instalacja z 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

Instalacja systemowa

poetry build
pip install dist/*.whl

🔧 Użycie

Podstawowe użycie

# 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

Wszystkie opcje

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

📁 Struktura wyników

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

Format raportu błędu

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"
  ]
}

🐳 Jak to działa

  1. Klonowanie: Pobiera projekt z GitHub do lokalnego katalogu
  2. Analiza README: Skanuje README.md w poszukiwaniu bloków kodu
  3. Budowanie obrazu: Tworzy obraz Docker z odpowiednią wersją Python
  4. Wykonywanie testów: Uruchamia każdą komendę w izolowanym kontenerze
  5. Logowanie błędów: Zapisuje szczegóły każdego błędu do osobnego pliku
  6. Generowanie sugestii: Analizuje błędy i proponuje rozwiązania
  7. Czyszczenie: Usuwa kontenery i obrazy (opcjonalnie)

🔍 Przykład wyniku

🐳 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

🛠️ Rozwój

Uruchamianie testów

poetry run pytest

Formatowanie kodu

poetry run black readme_tester/
poetry run flake8 readme_tester/

Budowanie paczki

poetry build

🤝 Wkład

Mile widziane są pull requesty! Dla większych zmian, najpierw otwórz issue aby przedyskutować co chcesz zmienić.

📄 Licencja

MIT License - zobacz plik LICENSE dla szczegółów.

🐛 Znane problemy

  • 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

🔮 Planowane funkcje

  • 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

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published