1{
2 lib,
3 postgresql,
4 postgresqlTestHook,
5 stdenvNoCC,
6}:
7
8{
9 asserts ? [ ],
10 finalPackage,
11 sql,
12 withPackages ? [ ],
13 ...
14}@extraArgs:
15stdenvNoCC.mkDerivation (
16 {
17 name = "${finalPackage.name}-test-extension";
18 dontUnpack = true;
19 doCheck = true;
20 nativeCheckInputs = [
21 postgresqlTestHook
22 (postgresql.withPackages (ps: [ finalPackage ] ++ (map (p: ps."${p}") withPackages)))
23 ];
24 postgresqlTestUserOptions = "LOGIN SUPERUSER";
25 passAsFile = [ "sql" ];
26 sql =
27 sql
28 + lib.concatMapStrings (
29 {
30 query,
31 expected,
32 description,
33 }:
34 ''
35 DO $$ BEGIN
36 ASSERT (${query}) = (${expected}), '${lib.replaceStrings [ "'" ] [ "''" ] description}';
37 END $$;
38 ''
39 ) asserts;
40 checkPhase = ''
41 runHook preCheck
42 psql -a -v ON_ERROR_STOP=1 -f "$sqlPath"
43 runHook postCheck
44 '';
45 installPhase = "touch $out";
46 }
47 // lib.removeAttrs extraArgs [
48 "asserts"
49 "finalPackage"
50 "sql"
51 "withPackages"
52 ]
53)