ALPHA: wire is a tool to deploy nixos systems wire.althaea.zone/
at trunk 63 lines 2.4 kB view raw
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"