diff --git a/pkgs/servers/sql/postgresql/ext/pgtap.nix b/pkgs/servers/sql/postgresql/ext/pgtap.nix index 24c0e3e59b8a..c51de681a3cc 100644 --- a/pkgs/servers/sql/postgresql/ext/pgtap.nix +++ b/pkgs/servers/sql/postgresql/ext/pgtap.nix @@ -1,22 +1,57 @@ -{ lib, stdenv, fetchFromGitHub, postgresql, perl, perlPackages, which }: +{ lib +, stdenv +, fetchFromGitHub +, perl +, perlPackages +, postgresql +, postgresqlTestHook +, which +}: stdenv.mkDerivation rec { pname = "pgtap"; - version = "1.3.0"; + version = "1.3.1"; src = fetchFromGitHub { owner = "theory"; repo = "pgtap"; rev = "v${version}"; - sha256 = "sha256-RaafUnrMRbvyf2m2Z+tK6XxVXDGnaOkYkSMxIJLnf6A="; + sha256 = "sha256-HOgCb1CCfsfbMbMMWuzFJ4B8CfVm9b0sI2zBY3/kqyI="; }; nativeBuildInputs = [ postgresql perl perlPackages.TAPParserSourceHandlerpgTAP which ]; installPhase = '' + install -D src/pgtap.so -t $out/lib install -D {sql/pgtap--${version}.sql,pgtap.control} -t $out/share/postgresql/extension ''; + passthru.tests.extension = stdenv.mkDerivation { + name = "pgtap-test"; + dontUnpack = true; + doCheck = true; + buildInputs = [ postgresqlTestHook ]; + nativeCheckInputs = [ (postgresql.withPackages (ps: [ ps.pgtap ])) ]; + postgresqlTestUserOptions = "LOGIN SUPERUSER"; + passAsFile = [ "sql" ]; + sql = '' + CREATE EXTENSION pgtap; + + BEGIN; + SELECT plan(1); + SELECT pass('Test passed'); + SELECT * FROM finish(); + ROLLBACK; + ''; + failureHook = "postgresqlStop"; + checkPhase = '' + runHook preCheck + psql -a -v ON_ERROR_STOP=1 -f $sqlPath + runHook postCheck + ''; + installPhase = "touch $out"; + }; + meta = with lib; { description = "A unit testing framework for PostgreSQL"; longDescription = ''