Docs: Alte jamulix/GitHub-Verweise auf Forgejo umgestellt
- README, HILFE.md, welcome.html: Clone-/Release-/Profil-/Issue-Links und UI-Link auf https://kitux.de/forgejo/dschlueter/typewriter_tutor - README CI/CD-Abschnitt abgerüstet: tote GitHub-Actions-Badges entfernt, auf reale lokale Validierung per Pre-commit-Hook reduziert - CI_CD.md gelöscht (beschrieb die bereits entfernten .github/workflows) - tests/README.md: CI-Beispielkommentar host-neutral formuliert Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
parent
f5751374ba
commit
50326fa1b7
5 changed files with 16 additions and 344 deletions
319
CI_CD.md
319
CI_CD.md
|
|
@ -1,319 +0,0 @@
|
|||
# CI/CD Integration - Typewriter Trainer
|
||||
|
||||
Dieses Dokument beschreibt die Continuous Integration und Continuous Deployment (CI/CD) Setup für den Typewriter Trainer.
|
||||
|
||||
## Übersicht
|
||||
|
||||
Die Test-Suite ist vollständig in CI/CD-Pipelines integriert und bietet:
|
||||
|
||||
- ✅ **Automatische Tests** bei jedem Push und Pull Request
|
||||
- ✅ **Multi-Python-Version Support** (3.9, 3.10, 3.11, 3.12)
|
||||
- ✅ **Coverage Reports** mit HTML-Visualisierung
|
||||
- ✅ **Pre-commit Hooks** für lokale Validierung
|
||||
- ✅ **Code Quality Checks** (flake8 Linting)
|
||||
|
||||
## GitHub Actions Workflows
|
||||
|
||||
### 1. Tests Workflow (`.github/workflows/tests.yml`)
|
||||
|
||||
**Trigger:**
|
||||
- Push auf `main` und `develop` Branches
|
||||
- Pull Requests auf `main` und `develop`
|
||||
- Manuell über `workflow_dispatch`
|
||||
|
||||
**Jobs:**
|
||||
|
||||
#### Test Job
|
||||
- Führt Tests auf Python 3.9, 3.10, 3.11, 3.12 aus
|
||||
- Installiert Dependencies aus `requirements.txt`
|
||||
- Führt Unit Tests aus (schnell, < 1 Sekunde)
|
||||
- Führt Integration Tests aus (~3 Sekunden)
|
||||
- Führt alle Tests kombiniert aus
|
||||
- Matrix-Build für Multi-Version-Kompatibilität
|
||||
|
||||
#### Test Summary Job
|
||||
- Läuft nach allen Tests (immer, auch bei Fehlern)
|
||||
- Generiert Test-Zusammenfassung in GitHub Actions Summary
|
||||
- Zeigt Anzahl der Tests und Status an
|
||||
|
||||
#### Lint Job
|
||||
- Code Quality Check mit flake8
|
||||
- Prüft auf Syntax-Fehler und undefined names
|
||||
- Complexity und Line-Length Checks (nicht blockierend)
|
||||
|
||||
**Badge Status:**
|
||||
```markdown
|
||||

|
||||
```
|
||||
|
||||
### 2. Coverage Workflow (`.github/workflows/coverage.yml`)
|
||||
|
||||
**Trigger:**
|
||||
- Push auf `main` und `develop` Branches
|
||||
- Pull Requests auf `main` und `develop`
|
||||
- Manuell über `workflow_dispatch`
|
||||
|
||||
**Features:**
|
||||
- Generiert Test Coverage Report mit `coverage.py`
|
||||
- Erstellt HTML Coverage Report als Artifact
|
||||
- Berechnet Coverage-Prozentsatz
|
||||
- Generiert dynamisches Coverage-Badge (grün ≥90%, gelb ≥60%, rot <60%)
|
||||
- Kommentiert Coverage auf Pull Requests
|
||||
- Speichert HTML-Report für 30 Tage
|
||||
|
||||
**Badge Status:**
|
||||
```markdown
|
||||

|
||||
```
|
||||
|
||||
**Coverage Report anzeigen:**
|
||||
1. Gehe zu Actions → Coverage Workflow → Latest Run
|
||||
2. Lade "coverage-report" Artifact herunter
|
||||
3. Öffne `htmlcov/index.html` im Browser
|
||||
|
||||
## Lokale Test-Ausführung
|
||||
|
||||
### Alle Tests ausführen
|
||||
|
||||
```bash
|
||||
# Alle Tests (Unit + Integration)
|
||||
python -m unittest discover -s tests -p "test_*.py" -v
|
||||
|
||||
# Nur Unit Tests (schnell)
|
||||
python -m unittest tests.test_lesson_service tests.test_statistics_service tests.test_settings_service -v
|
||||
|
||||
# Nur Integration Tests
|
||||
python -m unittest tests.test_integration_progress tests.test_integration_statistics -v
|
||||
```
|
||||
|
||||
### Coverage Report generieren
|
||||
|
||||
**Mit Script:**
|
||||
```bash
|
||||
./run_coverage.sh
|
||||
```
|
||||
|
||||
**Manuell:**
|
||||
```bash
|
||||
# Coverage installieren
|
||||
pip install coverage
|
||||
|
||||
# Tests mit Coverage ausführen
|
||||
coverage run -m unittest discover -s tests -p "test_*.py"
|
||||
|
||||
# Terminal Report
|
||||
coverage report -m
|
||||
|
||||
# HTML Report
|
||||
coverage html
|
||||
# Öffne htmlcov/index.html im Browser
|
||||
```
|
||||
|
||||
## Pre-commit Hooks
|
||||
|
||||
### Automatische Test-Validierung vor jedem Commit
|
||||
|
||||
Der Pre-commit Hook führt automatisch alle Tests aus, bevor ein Commit erstellt wird.
|
||||
|
||||
**Installation:**
|
||||
```bash
|
||||
# Hook ist bereits installiert in .git/hooks/pre-commit
|
||||
# Falls nicht, kopiere aus Template:
|
||||
cp .githooks/pre-commit .git/hooks/pre-commit
|
||||
chmod +x .git/hooks/pre-commit
|
||||
```
|
||||
|
||||
**Funktionsweise:**
|
||||
1. ✅ Führt Unit Tests aus
|
||||
2. ✅ Führt Integration Tests aus
|
||||
3. ✅ Blockiert Commit bei Test-Fehlern
|
||||
4. ✅ Zeigt farbiges Output für bessere Übersicht
|
||||
|
||||
**Hook überspringen (nicht empfohlen):**
|
||||
```bash
|
||||
git commit --no-verify -m "message"
|
||||
```
|
||||
|
||||
## Test-Statistiken
|
||||
|
||||
### Gesamt-Übersicht
|
||||
|
||||
| Kategorie | Anzahl | Status |
|
||||
|-----------|--------|--------|
|
||||
| **Gesamt Tests** | 80 | ✅ 100% |
|
||||
| **Unit Tests** | 54 | ✅ Bestanden |
|
||||
| **Integration Tests** | 26 | ✅ Bestanden |
|
||||
| **Ausführungszeit** | ~2.9s | ⚡ Schnell |
|
||||
|
||||
### Unit Tests Breakdown
|
||||
|
||||
| Service | Tests | Coverage |
|
||||
|---------|-------|----------|
|
||||
| LessonService | 17 | Navigation & Validierung |
|
||||
| StatisticsService | 15 | Berechnungen (ZPM/WPM) |
|
||||
| SettingsService | 22 | Validierungen |
|
||||
|
||||
### Integration Tests Breakdown
|
||||
|
||||
| Service | Tests | Coverage |
|
||||
|---------|-------|----------|
|
||||
| ProgressService | 12 | CRUD & State Management |
|
||||
| StatisticsService | 14 | DB Operations & Daily Practice |
|
||||
|
||||
## Coverage Konfiguration
|
||||
|
||||
Die Coverage-Konfiguration ist in `.coveragerc` definiert:
|
||||
|
||||
```ini
|
||||
[run]
|
||||
source = .
|
||||
omit =
|
||||
*/tests/*
|
||||
*/venv/*
|
||||
*/migrations/*
|
||||
setup.py
|
||||
|
||||
[report]
|
||||
precision = 2
|
||||
show_missing = True
|
||||
|
||||
[html]
|
||||
directory = htmlcov
|
||||
```
|
||||
|
||||
**Ausgeschlossene Dateien:**
|
||||
- Test-Dateien selbst
|
||||
- Virtual Environments
|
||||
- Migrations
|
||||
- Setup-Scripts
|
||||
|
||||
## Best Practices
|
||||
|
||||
### Für Entwickler
|
||||
|
||||
1. **Immer Tests schreiben** für neue Features
|
||||
2. **Lokale Tests ausführen** vor dem Push:
|
||||
```bash
|
||||
python -m unittest discover tests -v
|
||||
```
|
||||
3. **Coverage checken** für neue Code-Bereiche:
|
||||
```bash
|
||||
./run_coverage.sh
|
||||
```
|
||||
4. **Pre-commit Hook aktiv lassen** für automatische Validierung
|
||||
|
||||
### Für Pull Requests
|
||||
|
||||
1. ✅ Alle Tests müssen bestehen (automatisch geprüft)
|
||||
2. ✅ Coverage sollte nicht sinken
|
||||
3. ✅ Lint-Checks sollten bestehen
|
||||
4. ✅ Review GitHub Actions Summary
|
||||
|
||||
### Für Releases
|
||||
|
||||
1. Erstelle Branch von `develop`
|
||||
2. Alle Tests auf `main` müssen grün sein
|
||||
3. Coverage Report prüfen
|
||||
4. Merge nach `main` → automatische Tests laufen
|
||||
|
||||
## Troubleshooting
|
||||
|
||||
### Tests schlagen in CI fehl, aber lokal nicht
|
||||
|
||||
**Mögliche Ursachen:**
|
||||
- Python-Version unterschiedlich (CI tested 3.9-3.12)
|
||||
- Dependencies nicht korrekt in `requirements.txt`
|
||||
- Plattform-spezifische Unterschiede (Linux vs. macOS/Windows)
|
||||
|
||||
**Lösung:**
|
||||
```bash
|
||||
# Teste mit verschiedenen Python-Versionen lokal
|
||||
python3.9 -m unittest discover tests -v
|
||||
python3.11 -m unittest discover tests -v
|
||||
```
|
||||
|
||||
### Coverage Report zeigt falsche Werte
|
||||
|
||||
**Lösung:**
|
||||
```bash
|
||||
# Lösche alte Coverage-Daten
|
||||
rm -rf .coverage htmlcov/
|
||||
|
||||
# Neu generieren
|
||||
./run_coverage.sh
|
||||
```
|
||||
|
||||
### Pre-commit Hook blockiert Commit
|
||||
|
||||
**Das ist gewollt!** Der Hook verhindert, dass fehlerhafte Tests in den Code kommen.
|
||||
|
||||
**Lösung:**
|
||||
1. Prüfe Test-Output: `python -m unittest discover tests -v`
|
||||
2. Fixe die fehlschlagenden Tests
|
||||
3. Commit erneut
|
||||
|
||||
**Nur in Notfällen umgehen:**
|
||||
```bash
|
||||
git commit --no-verify -m "message"
|
||||
```
|
||||
|
||||
### GitHub Actions schlagen fehl mit "Module not found"
|
||||
|
||||
**Lösung:**
|
||||
- Stelle sicher, dass alle Dependencies in `requirements.txt` sind
|
||||
- Prüfe ob `requirements.txt` im Repository committed ist
|
||||
|
||||
## Workflow-Diagramm
|
||||
|
||||
```
|
||||
┌─────────────────────────────────────────────────────────────┐
|
||||
│ Developer Workflow │
|
||||
└─────────────────────────────────────────────────────────────┘
|
||||
|
||||
1. Code ändern
|
||||
│
|
||||
↓
|
||||
2. Lokale Tests (optional)
|
||||
│ ./run_coverage.sh
|
||||
↓
|
||||
3. git add / git commit
|
||||
│
|
||||
↓
|
||||
4. Pre-commit Hook
|
||||
│ ✅ Unit Tests
|
||||
│ ✅ Integration Tests
|
||||
│ ❌ Blockiert bei Fehler
|
||||
↓
|
||||
5. git push
|
||||
│
|
||||
↓
|
||||
┌────────────────────────┐
|
||||
│ GitHub Actions │
|
||||
├────────────────────────┤
|
||||
│ • Tests (Multi-Python) │
|
||||
│ • Coverage Report │
|
||||
│ • Lint Check │
|
||||
│ • Artifact Upload │
|
||||
└────────────────────────┘
|
||||
│
|
||||
↓
|
||||
6. Review & Merge
|
||||
```
|
||||
|
||||
## Weitere Ressourcen
|
||||
|
||||
- **Test-Dokumentation:** `tests/README.md`
|
||||
- **GitHub Actions Docs:** https://docs.github.com/actions
|
||||
- **Coverage.py Docs:** https://coverage.readthedocs.io
|
||||
- **Python unittest:** https://docs.python.org/3/library/unittest.html
|
||||
|
||||
## Zusammenfassung
|
||||
|
||||
✅ **80 Tests**, alle bestanden (100% Erfolgsrate)
|
||||
✅ **GitHub Actions** für automatische Tests
|
||||
✅ **Coverage Reports** mit HTML-Visualisierung
|
||||
✅ **Pre-commit Hooks** für lokale Validierung
|
||||
✅ **Multi-Python-Version** Support (3.9-3.12)
|
||||
✅ **Code Quality** Checks mit flake8
|
||||
|
||||
Die Test-Suite ist **produktionsbereit** und vollständig in CI/CD integriert! 🎉
|
||||
4
HILFE.md
4
HILFE.md
|
|
@ -419,8 +419,8 @@ Der Text scrollt **automatisch**, sodass:
|
|||
## 📞 Weitere Hilfe
|
||||
|
||||
- 📖 **Projekt-Dokumentation**: Siehe README.md
|
||||
- 🐛 **Bug melden**: GitHub Issues
|
||||
- 💡 **Feature-Vorschlag**: GitHub Discussions
|
||||
- 🐛 **Bug melden**: [Forgejo Issues](https://kitux.de/forgejo/dschlueter/typewriter_tutor/issues)
|
||||
- 💡 **Feature-Vorschlag**: [Forgejo Issues](https://kitux.de/forgejo/dschlueter/typewriter_tutor/issues)
|
||||
- 📧 **Support**: Siehe README für Kontakt
|
||||
|
||||
---
|
||||
|
|
|
|||
29
README.md
29
README.md
|
|
@ -56,11 +56,11 @@ Ein moderner, webbasierter Tipptrainer mit **adaptivem Metronom** und umfangreic
|
|||
|
||||
1. **Repository klonen oder Download:**
|
||||
```bash
|
||||
git clone https://github.com/jamulix/typewriter.git
|
||||
cd typewriter
|
||||
git clone https://kitux.de/forgejo/dschlueter/typewriter_tutor.git
|
||||
cd typewriter_tutor
|
||||
```
|
||||
|
||||
Alternativ: [Neuestes Release herunterladen](https://github.com/jamulix/typewriter/tags)
|
||||
Alternativ: [Neuestes Release herunterladen](https://kitux.de/forgejo/dschlueter/typewriter_tutor/tags)
|
||||
|
||||
2. **Virtuelle Umgebung erstellen (empfohlen):**
|
||||
```bash
|
||||
|
|
@ -205,9 +205,9 @@ Die Statistik-Seite (`/statistics`) bietet:
|
|||
- **Datenexport**: CSV und JSON-Download Ihrer Statistiken
|
||||
- **Verlaufsanalyse**: Sehen Sie Ihre Fortschritte über mehrere Sitzungen
|
||||
|
||||
## 🧪 Tests & CI/CD
|
||||
## 🧪 Tests
|
||||
|
||||
Das Projekt enthält eine umfassende Test-Suite mit **80 Tests** (100% Erfolgsrate) und vollständiger CI/CD-Integration.
|
||||
Das Projekt enthält eine umfassende Test-Suite mit **80 Tests** (100% Erfolgsrate) und lokaler Validierung per Pre-commit-Hook.
|
||||
|
||||
### Test-Übersicht
|
||||
|
||||
|
|
@ -256,18 +256,12 @@ python test_metronome_velocity.py
|
|||
- ✅ **App-Tests**: Statistik-Berechnungen, API-Endpoints, Input-Validierung, CSV/JSON-Export
|
||||
- ✅ **Metronom-Tests**: 5 Anpassungsregeln, Realistische Szenarien, Edge Cases
|
||||
|
||||
### CI/CD Integration
|
||||
### Lokale Validierung
|
||||
|
||||
**GitHub Actions Workflows:**
|
||||
Die Validierung läuft lokal über einen Git-Pre-commit-Hook (aktuell ist keine serverseitige CI eingerichtet).
|
||||
|
||||

|
||||

|
||||
|
||||
- ✅ **Automatische Tests** bei jedem Push und Pull Request
|
||||
- ✅ **Multi-Python-Version** Support (3.9, 3.10, 3.11, 3.12)
|
||||
- ✅ **Coverage Reports** mit HTML-Visualisierung
|
||||
- ✅ **Pre-commit Hooks** für lokale Validierung
|
||||
- ✅ **Code Quality Checks** (flake8 Linting)
|
||||
- ✅ **Pre-commit Hook** führt Unit- und Integrationstests vor jedem Commit aus und blockiert bei Fehlern
|
||||
- ✅ **Coverage Reports** mit HTML-Visualisierung (lokal via `./run_coverage.sh`)
|
||||
|
||||
**Pre-commit Hook Installation:**
|
||||
```bash
|
||||
|
|
@ -276,11 +270,8 @@ cp .githooks/pre-commit .git/hooks/pre-commit
|
|||
chmod +x .git/hooks/pre-commit
|
||||
```
|
||||
|
||||
Der Pre-commit Hook führt automatisch alle Tests vor jedem Commit aus und blockiert bei Fehlern.
|
||||
|
||||
**Weitere Informationen:**
|
||||
- 📖 Service Tests: [`tests/README.md`](tests/README.md)
|
||||
- 📖 CI/CD Setup: [`CI_CD.md`](CI_CD.md)
|
||||
- 📖 Metronom Tests: [`README_METRONOME_TESTS.md`](README_METRONOME_TESTS.md)
|
||||
|
||||
## 🔧 Entwicklung
|
||||
|
|
@ -532,7 +523,7 @@ MIT License - siehe [LICENSE](LICENSE) Datei für Details.
|
|||
|
||||
**Dieter Schlüter**
|
||||
📧 dieter.schlueter@linix.de
|
||||
🌐 [GitHub: @jamulix](https://github.com/jamulix)
|
||||
🌐 [Forgejo: @dschlueter](https://kitux.de/forgejo/dschlueter)
|
||||
|
||||
---
|
||||
|
||||
|
|
|
|||
|
|
@ -120,9 +120,9 @@
|
|||
<div class="mt-3 text-muted">
|
||||
<small>
|
||||
Entwickelt mit ❤️ für effektives Tipptraining<br>
|
||||
<a href="https://github.com/jamulix/typewriter" target="_blank" class="text-decoration-none">
|
||||
<i data-lucide="github" style="width: 16px; height: 16px; display: inline;"></i>
|
||||
GitHub
|
||||
<a href="https://kitux.de/forgejo/dschlueter/typewriter_tutor" target="_blank" class="text-decoration-none">
|
||||
<i data-lucide="git-branch" style="width: 16px; height: 16px; display: inline;"></i>
|
||||
Forgejo
|
||||
</a>
|
||||
| © 2025 <a href="mailto:dieter.schlueter@linix.de" class="text-decoration-none">Dieter Schlüter</a>
|
||||
</small>
|
||||
|
|
|
|||
|
|
@ -227,7 +227,7 @@ Für vollständige Integration Tests (mit Datenbank, Flask-Context, etc.) siehe
|
|||
Diese Tests können einfach in CI/CD-Pipelines integriert werden:
|
||||
|
||||
```bash
|
||||
# In GitHub Actions / GitLab CI
|
||||
# In CI/CD (z.B. Forgejo Actions / GitLab CI)
|
||||
python -m unittest discover tests -v
|
||||
```
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue