2025-03-16 21:34:03 +01:00
|
|
|
{
|
2025-04-12 21:45:51 +02:00
|
|
|
lib,
|
2025-03-16 21:34:03 +01:00
|
|
|
postgresql,
|
|
|
|
postgresqlTestHook,
|
|
|
|
stdenvNoCC,
|
|
|
|
}:
|
|
|
|
|
|
|
|
{
|
2025-04-12 21:45:51 +02:00
|
|
|
asserts ? [ ],
|
2025-03-16 21:34:03 +01:00
|
|
|
finalPackage,
|
2025-04-12 21:45:51 +02:00
|
|
|
sql,
|
2025-03-16 21:34:03 +01:00
|
|
|
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" ];
|
2025-04-12 21:45:51 +02:00
|
|
|
sql =
|
|
|
|
sql
|
|
|
|
+ lib.concatMapStrings (
|
|
|
|
{
|
|
|
|
query,
|
|
|
|
expected,
|
|
|
|
description,
|
|
|
|
}:
|
|
|
|
''
|
|
|
|
DO $$ BEGIN
|
|
|
|
ASSERT (${query}) = (${expected}), '${lib.replaceStrings [ "'" ] [ "''" ] description}';
|
|
|
|
END $$;
|
|
|
|
''
|
|
|
|
) asserts;
|
2025-03-16 21:34:03 +01:00
|
|
|
checkPhase = ''
|
|
|
|
runHook preCheck
|
|
|
|
psql -a -v ON_ERROR_STOP=1 -f "$sqlPath"
|
|
|
|
runHook postCheck
|
|
|
|
'';
|
|
|
|
installPhase = "touch $out";
|
|
|
|
}
|
2025-04-12 21:45:51 +02:00
|
|
|
// lib.removeAttrs extraArgs [
|
|
|
|
"asserts"
|
|
|
|
"finalPackage"
|
|
|
|
"sql"
|
|
|
|
"withPackages"
|
|
|
|
]
|
2025-03-16 21:34:03 +01:00
|
|
|
)
|