mirror of
https://github.com/NixOS/nixpkgs.git
synced 2025-06-10 03:23:29 +03:00

Previously, the user of postgresqlTestHook would have needed to set failureHook accordingly. However, this was not a clean solution, because postgresqlStop would also run for configure or build failures, before the server was even started. This gave odd errors from a failed shutdown in the log. Now postgresqlStop is only called when it makes sense - and whenever postgresqlTestHook is used.
53 lines
1 KiB
Nix
53 lines
1 KiB
Nix
{
|
|
lib,
|
|
postgresql,
|
|
postgresqlTestHook,
|
|
stdenvNoCC,
|
|
}:
|
|
|
|
{
|
|
asserts ? [ ],
|
|
finalPackage,
|
|
sql,
|
|
withPackages ? [ ],
|
|
...
|
|
}@extraArgs:
|
|
stdenvNoCC.mkDerivation (
|
|
{
|
|
name = "${finalPackage.name}-test-extension";
|
|
dontUnpack = true;
|
|
doCheck = true;
|
|
nativeCheckInputs = [
|
|
postgresqlTestHook
|
|
(postgresql.withPackages (ps: [ finalPackage ] ++ (map (p: ps."${p}") withPackages)))
|
|
];
|
|
postgresqlTestUserOptions = "LOGIN SUPERUSER";
|
|
passAsFile = [ "sql" ];
|
|
sql =
|
|
sql
|
|
+ lib.concatMapStrings (
|
|
{
|
|
query,
|
|
expected,
|
|
description,
|
|
}:
|
|
''
|
|
DO $$ BEGIN
|
|
ASSERT (${query}) = (${expected}), '${lib.replaceStrings [ "'" ] [ "''" ] description}';
|
|
END $$;
|
|
''
|
|
) asserts;
|
|
checkPhase = ''
|
|
runHook preCheck
|
|
psql -a -v ON_ERROR_STOP=1 -f "$sqlPath"
|
|
runHook postCheck
|
|
'';
|
|
installPhase = "touch $out";
|
|
}
|
|
// lib.removeAttrs extraArgs [
|
|
"asserts"
|
|
"finalPackage"
|
|
"sql"
|
|
"withPackages"
|
|
]
|
|
)
|