v0.7.30-beta - proefdraai werkt zonder curl

De teststap draait in python:3.12-slim, waar curl ontbreekt. Het
installatiescript brak daar af op de vereistencontrole, waardoor
test_dry_run_wijzigt_niets en test_dry_run_toont_de_hele_gang_van_zaken
faalden op de runner (runs 74 en 75).

Ontbrekende curl/tar is nu een waarschuwing bij --dry-run in plaats van
een harde fout, net als bij Docker: een proefdraai hoort juist te tonen
wat er zou gebeuren op een machine waar nog niets staat.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01C7oLCRYzY5ixJ5Sv8Y8EFb
This commit is contained in:
Ramon 2026-07-27 20:37:34 +02:00
parent 2862f7844c
commit 0bc944de5f
2 changed files with 35 additions and 1 deletions

View file

@ -140,7 +140,7 @@ controleer_systeem() {
bepaal_rechten bepaal_rechten
[ "$(uname -s)" = "Linux" ] || waarschuw "Dit script is voor Linux; op $(uname -s) is het onbeproefd." [ "$(uname -s)" = "Linux" ] || waarschuw "Dit script is voor Linux; op $(uname -s) is het onbeproefd."
for hulp in curl tar; do for hulp in curl tar; do
heeft "$hulp" || fout "'$hulp' ontbreekt. Installeer het en probeer opnieuw." heeft "$hulp" || fout_tenzij_droog "'$hulp' ontbreekt. Installeer het en probeer opnieuw."
done done
goed "$(uname -s) $(uname -m)" goed "$(uname -s) $(uname -m)"
} }

View file

@ -91,6 +91,40 @@ def test_dry_run_toont_de_hele_gang_van_zaken(tmp_path):
assert kop in r.stdout, f"stap ontbreekt: {kop}" assert kop in r.stdout, f"stap ontbreekt: {kop}"
def _pad_zonder(tmp_path, *weglaten):
"""Een PATH met alles erin behalve de genoemde commando's."""
nep = tmp_path / "bin"
nep.mkdir()
import os
for map_ in os.environ.get("PATH", "").split(os.pathsep):
p = Path(map_)
if not p.is_dir():
continue
for f in p.iterdir():
if f.name in weglaten or (nep / f.name).exists():
continue
try:
(nep / f.name).symlink_to(f)
except OSError:
pass
return str(nep)
def test_proefdraai_werkt_zonder_curl_en_tar(tmp_path):
"""De CI-runner draait in python:3.12-slim, waar curl ontbreekt. Een
proefdraai hoort dan nog steeds de hele voorvertoning te tonen: dat is juist
het moment waarop je wil zien wat er zou gebeuren."""
r = subprocess.run(["sh", str(SCRIPT), "--dry-run", "--dir",
str(tmp_path / "su"), "--yes"],
capture_output=True, text=True, timeout=60,
env={"PATH": _pad_zonder(tmp_path, "curl", "tar"),
"HOME": str(tmp_path)})
assert r.returncode == 0, r.stderr
assert "[droog]" in r.stdout
assert "Bouwen en starten" in r.stdout
assert not (tmp_path / "su").exists()
def test_verwijst_naar_het_juiste_git_domein(): def test_verwijst_naar_het_juiste_git_domein():
tekst = SCRIPT.read_text(encoding="utf-8") tekst = SCRIPT.read_text(encoding="utf-8")
assert 'GIT_HOST="git.ramonbesselink.nl"' in tekst assert 'GIT_HOST="git.ramonbesselink.nl"' in tekst