diff options
| author | tv <tv@krebsco.de> | 2026-11-12 02:33:44 +0000 |
|---|---|---|
| committer | tv <tv@krebsco.de> | 2026-11-12 02:33:44 +0000 |
| commit | 81cc4f06abc644b047e0758309cfbd982dac18ed (patch) | |
| tree | 81ae9e2440212e976086ba7a8d0b4e6295c62e32 /tests/scenarios.nix | |
| parent | 352dd5ce3107e2547db56802d773b919df03690f (diff) | |
populate pipe: deliver changed output of the same size
pipe sources get a fixed modification time, so rsync's quick check took
changed output of the same size, e.g. a new commit hash or token, for
unchanged, and didn't deliver it. pipe sources get synced comparing
checksums now.
An edge case changes a pipe source's output without changing its size.
Diffstat (limited to 'tests/scenarios.nix')
| -rw-r--r-- | tests/scenarios.nix | 26 |
1 files changed, 26 insertions, 0 deletions
diff --git a/tests/scenarios.nix b/tests/scenarios.nix index f1a5958..0e54054 100644 --- a/tests/scenarios.nix +++ b/tests/scenarios.nix @@ -919,6 +919,32 @@ assert !(krops.isLocalTarget (targets.remote "/")); ''; }; }) + # Output of the same length, which rsync's quick check doesn't notice. + (s "pipe-change" { + prepareDeployer = '' + echo piped > /fixtures/pipe2-data + ''; + phases = [ + { + sources.x.pipe = "/fixtures/pipe2"; + check = '' + expect_eq x "$(cat "$T"/x)" piped + ''; + mutateDeployer = '' + echo PIPED > /fixtures/pipe2-data + ''; + } + { + sources.x.pipe = "/fixtures/pipe2"; + check = '' + expect_eq x "$(cat "$T"/x)" PIPED + ''; + mutateDeployer = '' + echo piped > /fixtures/pipe2-data + ''; + } + ]; + }) ] ++ lib.optional (targetKind == "local") # The target has the path the input is locked to. (s "uselocal" { |
