diff options
| author | tv <tv@krebsco.de> | 2026-11-13 14:01:28 +0000 |
|---|---|---|
| committer | tv <tv@krebsco.de> | 2026-11-13 15:07:23 +0100 |
| commit | afdb3ee5fe6e6ce2447f4838ca88108525b0ee4b (patch) | |
| tree | f88feea397764c8bd86bce7e9141b1eb1790f100 /tests/scenarios.nix | |
| parent | 36cfd6b9fa8d729172f90e8fdd507349905d4f11 (diff) | |
krops: add allocateTTY to writeDeploy
With allocateTTY, nixos-rebuild runs with a terminal, so it shows colours
and progress: on remote targets, ssh gets -t, which allocates a terminal
if its own input is one, and on the local target, expect's unbuffer
provides one.
The nixos-rebuild stand-in records whether its output is a terminal.
Diffstat (limited to 'tests/scenarios.nix')
| -rw-r--r-- | tests/scenarios.nix | 23 |
1 files changed, 22 insertions, 1 deletions
diff --git a/tests/scenarios.nix b/tests/scenarios.nix index e618fcd..2fc1bd7 100644 --- a/tests/scenarios.nix +++ b/tests/scenarios.nix @@ -786,7 +786,28 @@ assert !(krops.isLocalTarget (targets.remote "/")); expect_eq arguments "$(sed -n 3p /tmp/nixos-rebuild.log)" "$expected" ''; }; - }); + }) + + # writeDeploy with allocateTTY: nixos-rebuild's output is a terminal on + # the local target. ssh allocates one on remote targets only if its own + # input is a terminal, which the tests' isn't. + ++ map (targetKind: scenario { + name = "deploy-${targetKind}-allocateTTY"; + inherit targetKind; + prepare = '' + rm -f /tmp/nixos-rebuild.log /etc/nixos/flake.nix + ''; + phases = [{ + sources.x.file = "/fixtures/alt"; + deploy.allocateTTY = true; + check = '' + expect_eq arguments "$(sed -n 3p /tmp/nixos-rebuild.log)" switch + expect_eq terminal "$(sed -n 4p /tmp/nixos-rebuild.log)" ${ + if targetKind == "local" then "terminal" else "'no terminal'" + } + ''; + }]; + }) targetKinds; # Features spanning several sources. features = concatMap (targetKind: let |
