Commit f1d1d929 authored by Eric Duminil's avatar Eric Duminil
Browse files

Removing stuff

parent 6d4cd584
"""Tests for the simstadt --install command."""
import io
import sys
import zipfile
from pathlib import Path
from unittest.mock import MagicMock, patch
import pytest
from simstadt.cli import app, build_parser
from simstadt.cli import app
from simstadt.install import _get_java_version, _parse_simstadt_name
def _make_test_zip(version="0.14.0-SNAPSHOT", branch="develop", rev="4431e10", date="20260520"):
manifest = f"Implementation-Version: {version} ({branch}, rev. {rev}, {date}\n )\n"
jar_buf = io.BytesIO()
with zipfile.ZipFile(jar_buf, "w") as jar:
jar.writestr("META-INF/MANIFEST.MF", manifest)
zip_buf = io.BytesIO()
with zipfile.ZipFile(zip_buf, "w") as zf:
zf.writestr(f"lib/simstadt-desktop-{version}.jar", jar_buf.getvalue())
info = zipfile.ZipInfo("SimStadt.sh")
info.external_attr = 0o755 << 16
zf.writestr(info, "#!/bin/bash\n")
return zip_buf.getvalue()
# ---------------------------------------------------------------------------
# _parse_simstadt_name
# ---------------------------------------------------------------------------
########################
# Get SimStadt name #
########################
def test_parse_simstadt_name():
manifest = "Implementation-Version: 0.14.0-SNAPSHOT (develop, rev. 4431e10, 20260520\n )\n"
assert _parse_simstadt_name(manifest) == "SimStadt2_0.14.0-SNAPSHOT_develop_20260520_4431e10"
manifest = (
"Implementation-Version: 0.14.0-SNAPSHOT (develop, rev. 4431e10, 20260520\n )\n"
)
assert (
_parse_simstadt_name(manifest)
== "SimStadt2_0.14.0-SNAPSHOT_develop_20260520_4431e10"
)
def test_parse_simstadt_name_invalid():
......@@ -41,14 +29,16 @@ def test_parse_simstadt_name_invalid():
_parse_simstadt_name("Manifest-Version: 1.0\nCreated-By: Maven\n")
# ---------------------------------------------------------------------------
# _get_java_version
# ---------------------------------------------------------------------------
########################
# Test Java Version #
########################
def test_get_java_version_17():
with patch("simstadt.install.subprocess.run") as mock_run:
mock_run.return_value = MagicMock(stderr='openjdk version "17.0.3" 2023-04-18\n')
mock_run.return_value = MagicMock(
stderr='openjdk version "17.0.3" 2023-04-18\n'
)
assert _get_java_version() == 17
......@@ -69,95 +59,6 @@ def test_get_java_version_unrecognised_output():
assert _get_java_version() is None
# ---------------------------------------------------------------------------
# cmd_install
# ---------------------------------------------------------------------------
def test_install_new_version(monkeypatch, capsys, tmp_path):
desktop = tmp_path / "Desktop"
desktop.mkdir()
zip_bytes = _make_test_zip()
def mock_urlretrieve(url, dest):
Path(dest).write_bytes(zip_bytes)
monkeypatch.setattr("urllib.request.urlretrieve", mock_urlretrieve)
monkeypatch.setattr("simstadt.install._get_java_version", lambda: 17)
monkeypatch.setattr(Path, "home", lambda: tmp_path)
monkeypatch.setattr(sys, "argv", ["simstadt", "--install"])
app()
out, _ = capsys.readouterr()
assert "Installed:" in out
dest = desktop / "SimStadt2_0.14.0-SNAPSHOT_develop_20260520_4431e10"
assert dest.is_dir()
sh = dest / "SimStadt.sh"
assert sh.exists()
assert sh.stat().st_mode & 0o111 # executable bits preserved from ZIP
def test_install_already_installed(monkeypatch, capsys, tmp_path):
desktop = tmp_path / "Desktop"
desktop.mkdir()
(desktop / "SimStadt2_0.14.0-SNAPSHOT_develop_20260520_4431e10").mkdir()
zip_bytes = _make_test_zip()
def mock_urlretrieve(url, dest):
Path(dest).write_bytes(zip_bytes)
monkeypatch.setattr("urllib.request.urlretrieve", mock_urlretrieve)
monkeypatch.setattr(Path, "home", lambda: tmp_path)
monkeypatch.setattr(sys, "argv", ["simstadt", "--install"])
app()
out, _ = capsys.readouterr()
assert "Already installed" in out
def test_install_warns_missing_java(monkeypatch, capsys, tmp_path):
desktop = tmp_path / "Desktop"
desktop.mkdir()
zip_bytes = _make_test_zip()
def mock_urlretrieve(url, dest):
Path(dest).write_bytes(zip_bytes)
monkeypatch.setattr("urllib.request.urlretrieve", mock_urlretrieve)
monkeypatch.setattr("simstadt.install._get_java_version", lambda: None)
monkeypatch.setattr(Path, "home", lambda: tmp_path)
monkeypatch.setattr(sys, "argv", ["simstadt", "--install"])
app()
_, err = capsys.readouterr()
assert "Java not found" in err
assert "bell-sw.com" in err
def test_install_warns_old_java(monkeypatch, capsys, tmp_path):
desktop = tmp_path / "Desktop"
desktop.mkdir()
zip_bytes = _make_test_zip()
def mock_urlretrieve(url, dest):
Path(dest).write_bytes(zip_bytes)
monkeypatch.setattr("urllib.request.urlretrieve", mock_urlretrieve)
monkeypatch.setattr("simstadt.install._get_java_version", lambda: 11)
monkeypatch.setattr(Path, "home", lambda: tmp_path)
monkeypatch.setattr(sys, "argv", ["simstadt", "--install"])
app()
_, err = capsys.readouterr()
assert "Java 11" in err
assert "bell-sw.com" in err
def test_install_parser_flag():
args = build_parser().parse_args(["--install"])
assert args.install is True
def test_install_no_desktop(monkeypatch, capsys, tmp_path):
monkeypatch.setattr(Path, "home", lambda: tmp_path)
monkeypatch.setattr(sys, "argv", ["simstadt", "--install"])
......
Supports Markdown
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment