43 lines
1.8 KiB
Nix
43 lines
1.8 KiB
Nix
{ pkgs, protocol }:
|
|||
|
|
let
|
||
|
|
base = ''quixos-lock version 1 { quixos source { repository "https://example.test/quixos.git"; commit "1111111111111111111111111111111111111111"; } }'';
|
||
|
|
fixture =
|
||
|
|
extra: lock:
|
||
|
|
pkgs.runCommand "qx-lock-source-fixture" { } ''
|
||
|
|
mkdir -p "$out/nested"
|
||
|
|
printf '%s' ${pkgs.lib.escapeShellArg lock} > "$out/quixos.lock"
|
||
|
|
printf '%s' ${pkgs.lib.escapeShellArg extra} > "$out/implementation.ts"
|
||
|
|
printf '%s' 'quixos-lock fragment version 1 {}' > "$out/nested/dependencies.txt"
|
||
|
|
'';
|
||
|
|
first = fixture "first implementation" base;
|
||
|
|
edited = fixture "edited implementation" base;
|
||
|
|
changed = fixture "first implementation" (
|
||
|
|
builtins.replaceStrings
|
||
|
|
[ "1111111111111111111111111111111111111111" ]
|
||
|
|
[ "2222222222222222222222222222222222222222" ]
|
||
|
|
base
|
||
|
|
);
|
||
|
|
fragments = fixture "first implementation" (
|
||
|
|
builtins.replaceStrings [ "quixos source" ] [ ''import "nested/dependencies.txt"; quixos source'' ]
|
||
|
|
base
|
||
|
|
);
|
||
|
|
conservative = fixture "first implementation" (base + "\n// import in a comment\n");
|
||
|
|
slice = source: import ./lock-source.nix { inherit source; };
|
||
|
|
parse =
|
||
|
|
source:
|
||
|
|
pkgs.runCommand "qx-source-lock.json" { } ''
|
||
|
|
${protocol}/bin/quixos-lock-check ${slice source}/quixos.lock > "$out"
|
||
|
|
'';
|
||
|
|
in
|
||
|
|
assert slice first == slice edited;
|
||
|
|
assert (parse first).drvPath == (parse edited).drvPath;
|
||
|
|
assert slice first != slice changed;
|
||
|
|
pkgs.runCommand "qx-lock-source-check" { } ''
|
||
|
|
${protocol}/bin/quixos-lock-check ${slice first}/quixos.lock > first.json
|
||
|
|
${protocol}/bin/quixos-lock-check ${slice edited}/quixos.lock > edited.json
|
||
|
|
cmp first.json edited.json
|
||
|
|
${protocol}/bin/quixos-lock-check ${slice conservative}/quixos.lock > comment.json
|
||
|
|
cmp first.json comment.json
|
||
|
|
${protocol}/bin/quixos-lock-check ${slice fragments}/quixos.lock > "$out"
|
||
|
|
''
|