95 lines
2.5 KiB
Nix
95 lines
2.5 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 ];
|
|
} ''
|
|
install -m755 ${script} -D $out/bin/${name}
|
|
patchShebangs $out/bin/${name}
|
|
wrapProgram $out/bin/${name} \
|
|
${lib.strings.concatMapStringsSep "\n"
|
|
({name, value}: ''--set ${name} "${value}"'') env-vars} \
|
|
--prefix PATH : ${with pkgs; lib.makeBinPath [
|
|
curl
|
|
diffutils
|
|
gnutar
|
|
gzip
|
|
jd-diff-patch
|
|
jq
|
|
openssh
|
|
]}
|
|
'';
|
|
scripts-with-envs = [
|
|
{
|
|
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 = [ ];
|
|
}
|
|
];
|
|
in
|
|
{
|
|
packages.${system} = lib.attrsets.listToAttrs
|
|
(map
|
|
(a@{ name, ... }: lib.attrsets.nameValuePair name (makeTestProgram a))
|
|
scripts-with-envs
|
|
)
|
|
//
|
|
{
|
|
library = pkgs.writeText "library.sh" (lib.strings.concatStrings [
|
|
(builtins.readFile ./library.sh)
|
|
"export PATH=$PATH:"
|
|
(lib.makeBinPath
|
|
(map (x: self.packages.${system}.${x.name}) scripts-with-envs))
|
|
]);
|
|
};
|
|
devShells.${system}.default = pkgs.mkShell
|
|
{
|
|
packages = with pkgs;
|
|
[
|
|
curl
|
|
diffutils
|
|
gzip
|
|
jd-diff-patch
|
|
jq
|
|
openssh
|
|
gnutar
|
|
iputils
|
|
];
|
|
};
|
|
};
|
|
}
|