at 24.11-pre 65 lines 1.8 kB view raw
1{ lib 2, stdenv 3, fetchFromGitHub 4, perl 5, perlPackages 6, postgresql 7, postgresqlTestHook 8, which 9}: 10 11stdenv.mkDerivation (finalAttrs: { 12 pname = "pgtap"; 13 version = "1.3.3"; 14 15 src = fetchFromGitHub { 16 owner = "theory"; 17 repo = "pgtap"; 18 rev = "v${finalAttrs.version}"; 19 sha256 = "sha256-YgvfLGF7pLVcCKD66NnWAydDxtoYHH1DpLiYTEKHJ0E="; 20 }; 21 22 nativeBuildInputs = [ postgresql perl perlPackages.TAPParserSourceHandlerpgTAP which ]; 23 24 installPhase = '' 25 install -D {sql/pgtap--${finalAttrs.version}.sql,pgtap.control} -t $out/share/postgresql/extension 26 ''; 27 28 passthru.tests.extension = stdenv.mkDerivation { 29 name = "pgtap-test"; 30 dontUnpack = true; 31 doCheck = true; 32 nativeCheckInputs = [ postgresqlTestHook (postgresql.withPackages (_: [ finalAttrs.finalPackage ])) ]; 33 passAsFile = [ "sql" ]; 34 sql = '' 35 CREATE EXTENSION pgtap; 36 37 BEGIN; 38 SELECT plan(1); 39 SELECT pass('Test passed'); 40 SELECT * FROM finish(); 41 ROLLBACK; 42 ''; 43 failureHook = "postgresqlStop"; 44 checkPhase = '' 45 runHook preCheck 46 psql -a -v ON_ERROR_STOP=1 -f $sqlPath 47 runHook postCheck 48 ''; 49 installPhase = "touch $out"; 50 }; 51 52 meta = with lib; { 53 description = "A unit testing framework for PostgreSQL"; 54 longDescription = '' 55 pgTAP is a unit testing framework for PostgreSQL written in PL/pgSQL and PL/SQL. 56 It includes a comprehensive collection of TAP-emitting assertion functions, 57 as well as the ability to integrate with other TAP-emitting test frameworks. 58 It can also be used in the xUnit testing style. 59 ''; 60 maintainers = with maintainers; [ willibutz ]; 61 homepage = "https://pgtap.org"; 62 inherit (postgresql.meta) platforms; 63 license = licenses.mit; 64 }; 65})