diff --git a/install.sh b/install.sh index 8533f58..28678d7 100755 --- a/install.sh +++ b/install.sh @@ -140,7 +140,7 @@ controleer_systeem() { bepaal_rechten [ "$(uname -s)" = "Linux" ] || waarschuw "Dit script is voor Linux; op $(uname -s) is het onbeproefd." 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 goed "$(uname -s) $(uname -m)" } diff --git a/tests/test_install_script.py b/tests/test_install_script.py index e64ef6b..9fa4fd5 100644 --- a/tests/test_install_script.py +++ b/tests/test_install_script.py @@ -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}" +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(): tekst = SCRIPT.read_text(encoding="utf-8") assert 'GIT_HOST="git.ramonbesselink.nl"' in tekst