ALPHA: wire is a tool to deploy nixos systems
wire.althaea.zone/
1# SPDX-License-Identifier: AGPL-3.0-or-later
2# Copyright 2024-2025 wire Contributors
3
4from typing import TYPE_CHECKING
5from typing import Callable, ContextManager
6
7if TYPE_CHECKING:
8 from test_driver.machine import Machine
9
10 deployer: Machine = None # type: ignore[invalid-assignment]
11 receiver: Machine = None # type: ignore[invalid-assignment]
12
13 TEST_DIR = ""
14
15 # https://github.com/NixOS/nixpkgs/blob/d10d9933b1c206f9b2950e5e1d68268c5ed0a3c7/nixos/lib/test-script-prepend.py#L43
16 subtest: Callable[[str], ContextManager[None]] = None # type: ignore[invalid-assignment]
17
18# typing-end
19
20with subtest("Test unreachable hosts"):
21 deployer.fail(
22 f"wire apply --on receiver-unreachable --no-progress --path {TEST_DIR}/hive.nix --no-keys -vvv >&2"
23 )
24
25with subtest("Check basic apply: Interactive"):
26 deployer.succeed(
27 f"wire apply --on receiver --no-progress --path {TEST_DIR}/hive.nix --no-keys --ssh-accept-host -vvv >&2"
28 )
29
30 identity = receiver.succeed("cat /etc/identity")
31 assert identity == "first", "Identity of first apply wasn't as expected"
32
33with subtest("Check basic apply: NonInteractive"):
34 deployer.succeed(
35 f"wire apply --on receiver-third --no-progress --path {TEST_DIR}/hive.nix --no-keys --ssh-accept-host --non-interactive -vvv >&2"
36 )
37
38 identity = receiver.succeed("cat /etc/identity")
39 assert identity == "third", "Identity of non-interactive apply wasn't as expected"
40
41with subtest("Check boot apply"):
42 first_system = receiver.succeed("readlink -f /run/current-system")
43
44deployer.succeed(
45 f"wire apply boot --on receiver-second --no-progress --path {TEST_DIR}/hive.nix --no-keys --ssh-accept-host -vvv >&2"
46)
47
48_first_system = receiver.succeed("readlink -f /run/current-system")
49assert first_system == _first_system, (
50 "apply boot without --reboot changed /run/current-system"
51)
52
53# with subtest("Check /etc/identity after reboot"):
54# receiver.reboot()
55#
56# identity = receiver.succeed("cat /etc/identity")
57# assert identity == "second", "Identity didn't change after second apply"
58
59# with subtest("Check --reboot"):
60# deployer.succeed(f"wire apply boot --on receiver-third --no-progress --path {TEST_DIR}/hive.nix --reboot --no-keys -vvv >&2")
61#
62# identity = receiver.succeed("cat /etc/identity")
63# assert identity == "third", "Identity didn't change after third apply"