Notebook-Tests: nbmake + Subprocess-Zellen + inkrementeller Test
Alle 25 Notebooks sind nun fehlerfrei testbar (25 passed). Dafür drei
Änderungen im Build und eine neue Test-Infrastruktur:
1. pyproject.toml: nbmake>=1.5 in der dev-Gruppe.
2. build_version_04.py: Notebooks bekommen zwei Setup-Zellen und
Subprocess-Zellen für Programme, die nicht direkt im Kernel laufen:
- NOTEBOOK_SETUP_2: __file__ definieren, sys.path für or_kern,
multiprocessing auf fork (Spawn findet Kernel-Funktionen nicht).
- _braucht_subprocess: erkennt highspy (Solver-Konflikt), pytest
(SystemExit), get_context('spawn'), subprocess+__file__ (sucht
.py-Dateien), sys.exit (SystemExit). Diese Programme erscheinen
als Markdown-Codeblock (sichtbar, nicht ausführbar) plus einer
Subprocess-Zelle mit NO_COLOR=1 (verhindert ANSI-Codes, die der
Parser von Mutationstest.py nicht verarbeitet).
- Solver-Konflikt-Erkennung: wenn ein Kapitel sowohl ortools als
auch highspy importiert, laufen auch reine ortools-Programme als
Subprocess (highspy schon im Kernel).
3. teste_code_04.py: inkrementeller Test — nur geänderte/neue Programme
und Notebooks (via git status). Netzabhängige Dateien (yfinance)
werden automatisch erkannt und nur getestet, wenn Internet verfügbar.
4. PLAN.md Abschnitt 10: neuer Verifikationsschritt 4 (pytest --nbmake).
PROGRESS.md und CLAUDE.md aktualisiert.
Gefundene und behobene Probleme:
- or_kern-Import: sys.path im Notebook erweitert.
- __file__ nicht definiert: zweite Setup-Zelle setzt es.
- multiprocessing spawn: fork erzwungen (Ein_System_Vier_Ansaetze.py).
- ortools/highspy-Konflikt: Subprocess für beide Solver.
- pytest SystemExit: Subprocess für test_or_kern.py und Mutationstest.py.
- sys.exit(0): Subprocess für Installationstest.py.
- ANSI-Codes in pytest-Ausgabe: NO_COLOR=1 in Subprocess-Zelle.
This commit is contained in:
parent
0e2c011732
commit
a4fc247116
70 changed files with 4073 additions and 305 deletions
13
PROGRESS.md
13
PROGRESS.md
|
|
@ -7,6 +7,12 @@ angefallen sind. Wer nach einer Unterbrechung weitermacht, liest diese Datei zue
|
|||
|
||||
**Stand:** 7. September 2026 · Branch `main` · **Phasen 0–5 abgeschlossen**
|
||||
|
||||
*Nachträglich ergänzt (gleicher Monat):* Notebook-Test-Infrastruktur — `nbmake` in
|
||||
`pyproject.toml`, zweite Setup-Zelle in den Notebooks (`__file__`, `sys.path`,
|
||||
multiprocessing-`fork`), Subprocess-Zellen für Programme, die nicht direkt im Kernel
|
||||
laufen (Solver-Konflikt, pytest, `sys.exit`), und `teste_code_04.py` für inkrementelle
|
||||
Tests. Alle 25 Notebooks laufen fehlerfrei (`25 passed`).
|
||||
|
||||
*(Die genaue Position in der Historie liefert `git log --oneline`; ein Hash steht hier
|
||||
bewusst nicht, weil er sich mit genau dem Commit ändert, der diese Zeile enthält.)*
|
||||
|
||||
|
|
@ -37,7 +43,12 @@ python3 Operations_Research_mit_Python_Version_04/build_version_04.py --check
|
|||
python3 Operations_Research_mit_Python_Version_04/extract_programme_04.py
|
||||
MPLBACKEND=Agg bash -c 'for p in Operations_Research_mit_Python_Version_04_Programme/*.py; do
|
||||
timeout 600 python3 "$p" >/dev/null 2>&1 || echo "FEHLER: $p"; done'
|
||||
# Soll: 73 Programme, keine FEHLER-Zeile.
|
||||
# Soll: 76 Programme, keine FEHLER-Zeile (die 4 yfinance-Programme brauchen
|
||||
# Internet — ohne Internet scheitern sie am Download, nicht am Code).
|
||||
|
||||
# 3b. Laufen alle Notebooks? (ca. 13 Minuten; braucht pip install -e ".[dev,notebook]")
|
||||
pytest --nbmake --nbmake-timeout=900 Notebooks_04/ -q
|
||||
# Soll: 25 passed. Alternativ: python3 .../teste_code_04.py (nur geänderte).
|
||||
|
||||
# 4. Gegenprobe: Version 03 ist unberührt (liegt seit der Trennung daneben)
|
||||
python3 ../Version_03/Operations_Research_mit_Python_Version_03/build_version_03.py --check
|
||||
|
|
|
|||
Loading…
Reference in a new issue