generated from Luis/nextjs-python-web-template
36 lines
1.0 KiB
Python
36 lines
1.0 KiB
Python
import os
|
|
import shutil
|
|
from pathlib import Path
|
|
from tempfile import TemporaryDirectory
|
|
|
|
from environment import mock_env
|
|
from host_group import HostGroup
|
|
|
|
from clan_cli.update import deploy_nixos
|
|
|
|
|
|
def test_update(clan_flake: Path, host_group: HostGroup) -> None:
|
|
assert len(host_group.hosts) == 1
|
|
host = host_group.hosts[0]
|
|
|
|
with TemporaryDirectory() as tmpdir:
|
|
host.meta["flake_uri"] = clan_flake
|
|
host.meta["flake_path"] = str(Path(tmpdir) / "rsync-target")
|
|
host.ssh_options["SendEnv"] = "REALPATH"
|
|
bin = Path(tmpdir).joinpath("bin")
|
|
bin.mkdir()
|
|
nixos_rebuild = bin.joinpath("nixos-rebuild")
|
|
bash = shutil.which("bash")
|
|
assert bash is not None
|
|
nixos_rebuild.write_text(
|
|
f"""#!{bash}
|
|
exit 0
|
|
"""
|
|
)
|
|
nixos_rebuild.chmod(0o755)
|
|
path = f"{tmpdir}/bin:{os.environ['PATH']}"
|
|
nix_state_dir = Path(tmpdir).joinpath("nix")
|
|
nix_state_dir.mkdir()
|
|
with mock_env(REALPATH=path):
|
|
deploy_nixos(host_group)
|