nix-templating/tests/template.nix
2025-05-27 12:37:30 +02:00

39 lines
1.2 KiB
Nix

{ legacyPackages, system, nixpkgs }:
let
# this file would usually be outside of the store
# but in this test it isn't, because setting it up in other ways is hard :)
secret_file = (nixpkgs.legacyPackages.${system}.writeText "secret" "secret");
in (nixpkgs.lib.nixos.runTest {
hostPkgs = nixpkgs.legacyPackages.${system};
name = "nix_templates";
nodes.machine = {config, pkgs, ...}: {
config = {
systemd.services.testservice = {
wantedBy = [ "multi-user.target" ];
serviceConfig = {
Type = "oneshot";
ExecStartPre = "${legacyPackages.${system}.template_text {
name = "test";
text = ''
public text
${legacyPackages.${system}.fileContents secret_file}
'';
outPath = "./test";
}}/bin/test";
ExecStart = pkgs.writeScript "test_file_got_templates" ''
#!/bin/sh
cat ./test | grep -q 'secret'
'';
};
};
};
};
testScript = ''
start_all()
print(machine.execute("uname -a"))
machine.wait_for_unit("testservice.service")
print(machine.succeed("cat /root/test | grep -q secret"))
'';
})