selfprivacy-tests/flake.nix

71 lines
2.0 KiB
Nix

{
description = "Tests for SelfPrivacy";
inputs.nixpkgs.url = github:nixos/nixpkgs;
outputs = { self, nixpkgs }:
let
system = "x86_64-linux";
pkgs = nixpkgs.legacyPackages.${system};
lib = nixpkgs.lib;
# Generate a user-friendly version number. TODO
version = (builtins.substring 0 8 self.lastModifiedDate) + self.shortRev;
makeTestProgram = { name, script, env-vars }:
pkgs.runCommandLocal name
{
nativeBuildInputs = [ pkgs.makeWrapper ];
} ''
ls -l
install -m755 ${script} \
-D $out/bin/${name}
patchShebangs $out/bin/${name}
wrapProgram $out/bin/${name} \
${lib.strings.concatMapStringsSep "\n"
({name, value}: "--prefix ${name} : ${value}") env-vars} \
--prefix PATH : ${with pkgs; lib.makeBinPath [
curl
diffutils
gzip
jd-diff-patch
jq
openssh
gnutar
]}
'';
in
{
packages.${system} = lib.attrsets.listToAttrs (map
(a@{ name, ... }: lib.attrsets.nameValuePair name (makeTestProgram a))
[
{
name = "query-minimum-services";
script = ./query-services-state.sh;
env-vars = [{
name = "EXPECTED_RESPONSE_FILE";
value = ./minimal-services-expected-response.json;
}];
}
{
name = "query-all-services";
script = ./query-services-state.sh;
env-vars = [{
name = "EXPECTED_RESPONSE_FILE";
value = ./all-services-expected-response.json;
}];
}
{
name = "enable-service";
script = ./enable-service.sh;
env-vars = [ ];
}
{
name = "nixos-rebuild";
script = ./nixos-rebuild.sh;
env-vars = [ ];
}
]);
};
}