From a8db913b7144dbcdbe479f32c12c4dd8c21e0675 Mon Sep 17 00:00:00 2001 From: tv Date: Fri, 13 Nov 2026 20:28:01 +0000 Subject: populate: run pipe commands through a shell A pipe source's command is an absolute path, which a shell runs as a script if it isn't a program, e.g. lacks #!. The program ran it directly, which fails for such a command. pipe-script runs a pipe command without #!. --- tests/scenarios.nix | 13 +++++++++++++ 1 file changed, 13 insertions(+) (limited to 'tests') diff --git a/tests/scenarios.nix b/tests/scenarios.nix index 15d0a53..362a854 100644 --- a/tests/scenarios.nix +++ b/tests/scenarios.nix @@ -1176,6 +1176,19 @@ assert !(krops.isLocalTarget (targets.remote "/")); expect.fail = "error: flake /fixtures/top has no input nope"; }]; }) + # A pipe command without #!, which a shell runs as a script. + (s "pipe-script" { + prepareDeployer = '' + printf 'echo piped\n' > /tmp/pipe-script + chmod +x /tmp/pipe-script + ''; + phases = [{ + sources.x.pipe = "/tmp/pipe-script"; + check = '' + expect_eq x "$(cat "$T"/x)" piped + ''; + }]; + }) # An input locked to a path the target doesn't have. (s "gone" { phases = [{ -- cgit v1.3.1