diff --git a/pkgs/servers/sql/postgresql/ext/plv8.nix b/pkgs/servers/sql/postgresql/ext/plv8.nix index 3fc6460adadb..eaf9c389e926 100644 --- a/pkgs/servers/sql/postgresql/ext/plv8.nix +++ b/pkgs/servers/sql/postgresql/ext/plv8.nix @@ -1,6 +1,8 @@ -{ lib, stdenv, fetchFromGitHub, v8, perl, postgresql }: +{ lib, stdenv, fetchFromGitHub, v8, perl, postgresql +# For test +, runCommand, coreutils, gnugrep }: -stdenv.mkDerivation rec { +let self = stdenv.mkDerivation rec { pname = "plv8"; version = "3.0.0"; @@ -53,6 +55,28 @@ stdenv.mkDerivation rec { "-DJSONB_DIRECT_CONVERSION" "-DV8_COMPRESS_POINTERS=1" "-DV8_31BIT_SMIS_ON_64BIT_ARCH=1" ]; + passthru.tests.smoke = runCommand "${pname}-test" {} '' + export PATH=${lib.makeBinPath [ (postgresql.withPackages (_: [self])) coreutils gnugrep ]} + db="$PWD/testdb" + initdb "$db" + postgres -k "$db" -D "$db" & + pid="$!" + + for i in $(seq 1 100); do + if psql -h "$db" -d postgres -c "" 2>/dev/null; then + break + elif ! kill -0 "$pid"; then + exit 1 + else + sleep 0.1 + fi + done + + psql -h "$db" -d postgres -c 'CREATE EXTENSION plv8; DO $$ plv8.elog(NOTICE, plv8.version); $$ LANGUAGE plv8;' 2> "$out" + grep -q "${version}" "$out" + kill -0 "$pid" + ''; + meta = with lib; { description = "V8 Engine Javascript Procedural Language add-on for PostgreSQL"; homepage = "https://plv8.github.io/"; @@ -60,4 +84,4 @@ stdenv.mkDerivation rec { platforms = [ "x86_64-linux" ]; license = licenses.postgresql; }; -} +}; in self