From d387bc8936b5911a288d86e8402ef26a6188afa7 Mon Sep 17 00:00:00 2001 From: WilliButz Date: Fri, 29 Sep 2017 16:15:59 +0200 Subject: [PATCH 1/4] pgjwt: 0.0.1 -> unstable-2017-04-24 - updated to the latest revision - fixed version format as there are no releases yet --- pkgs/servers/sql/postgresql/pgjwt/default.nix | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/pkgs/servers/sql/postgresql/pgjwt/default.nix b/pkgs/servers/sql/postgresql/pgjwt/default.nix index b4955f8184c..3e01d9bfe2c 100644 --- a/pkgs/servers/sql/postgresql/pgjwt/default.nix +++ b/pkgs/servers/sql/postgresql/pgjwt/default.nix @@ -1,12 +1,12 @@ { stdenv, fetchFromGitHub }: stdenv.mkDerivation rec { name = "pgjwt-${version}"; - version = "0.0.1"; + version = "unstable-2017-04-24"; src = fetchFromGitHub { owner = "michelp"; repo = "pgjwt"; - rev = "12a41eef15e6d3a22399e03178560d5174d496a3"; - sha256 = "1dgx7kqkf9d7j5qj3xykx238xm8jg0s6c8h7zyl4lx8dmbz9sgsv"; + rev = "546a2911027b716586e241be7fd4c6f1785237cd"; + sha256 = "1riz0xvwb6y02j0fljbr9hcbqb2jqs4njlivmavy9ysbcrrv1vrf"; }; dontBuild = true; installPhase = '' From d09604155b428e9de5de6d18e04870a9a0fa290a Mon Sep 17 00:00:00 2001 From: WilliButz Date: Fri, 29 Sep 2017 16:18:21 +0200 Subject: [PATCH 2/4] perlPackages/TAPParserSourceHandlerpgTAP: 3.30 -> 3.33 - update and refactor a bit --- pkgs/top-level/perl-packages.nix | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/pkgs/top-level/perl-packages.nix b/pkgs/top-level/perl-packages.nix index eae18c1b5ed..2c721cbc2c5 100644 --- a/pkgs/top-level/perl-packages.nix +++ b/pkgs/top-level/perl-packages.nix @@ -12857,11 +12857,11 @@ let self = _self // overrides; _self = with self; { }; }; - TAPParserSourceHandlerpgTAP = buildPerlModule { - name = "TAP-Parser-SourceHandler-pgTAP-3.30"; + TAPParserSourceHandlerpgTAP = buildPerlModule rec { + name = "TAP-Parser-SourceHandler-pgTAP-3.33"; src = fetchurl { - url = mirror://cpan/authors/id/D/DW/DWHEELER/TAP-Parser-SourceHandler-pgTAP-3.30.tar.gz; - sha256 = "08gadqf898r23sx07sn13555cp9zkwp8igjlh1fza2ycfivpfl9f"; + url = "mirror://cpan/authors/id/D/DW/DWHEELER/${name}.tar.gz"; + sha256 = "35q46y2hbp2ij5n9ir76lmspqj3n8gb0z9l5ipb5g7q90l160m4k"; }; meta = { homepage = http://search.cpan.org/dist/Tap-Parser-Sourcehandler-pgTAP/; From 2ebc40f95f5195beffaa47bf7ef192cbd635f9ba Mon Sep 17 00:00:00 2001 From: WilliButz Date: Fri, 29 Sep 2017 16:20:15 +0200 Subject: [PATCH 3/4] pgtap: init at version 0.97.0 --- pkgs/servers/sql/postgresql/pgtap/default.nix | 32 +++++++++++++++++++ pkgs/top-level/all-packages.nix | 2 ++ 2 files changed, 34 insertions(+) create mode 100644 pkgs/servers/sql/postgresql/pgtap/default.nix diff --git a/pkgs/servers/sql/postgresql/pgtap/default.nix b/pkgs/servers/sql/postgresql/pgtap/default.nix new file mode 100644 index 00000000000..b17446ca778 --- /dev/null +++ b/pkgs/servers/sql/postgresql/pgtap/default.nix @@ -0,0 +1,32 @@ +{ stdenv, fetchFromGitHub, postgresql, perl, perlPackages, which }: + +stdenv.mkDerivation rec { + name = "pgtap-${version}"; + version = "0.97.0"; + + src = fetchFromGitHub { + owner = "theory"; + repo = "pgtap"; + rev = "v${version}"; + sha256 = "1vzc8pxzi0rbywmrvx7i5awngsvzcz75i4jl9bk2vqr223chax6f"; + }; + + nativeBuildInputs = [ postgresql perl perlPackages.TAPParserSourceHandlerpgTAP which ]; + + installPhase = '' + install -D {sql/pgtap--${version}.sql,pgtap.control} -t $out/share/extension + ''; + + meta = with stdenv.lib; { + description = "pgTAP is a unit testing framework for PostgreSQL"; + longDescription = '' + pgTAP is a unit testing framework for PostgreSQL written in PL/pgSQL and PL/SQL. + It includes a comprehensive collection of TAP-emitting assertion functions, + as well as the ability to integrate with other TAP-emitting test frameworks. + It can also be used in the xUnit testing style. + ''; + maintainers = with maintainers; [ willibutz ]; + homepage = http://pgtap.org; + inherit (postgresql.meta) platforms; + }; +} diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index c945bbe4060..2b7803c6131 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -2475,6 +2475,8 @@ with pkgs; pgjwt = callPackage ../servers/sql/postgresql/pgjwt {}; + pgtap = callPackage ../servers/sql/postgresql/pgtap {}; + pigz = callPackage ../tools/compression/pigz { }; pixz = callPackage ../tools/compression/pixz { }; From 7d09fc6ea78a9788a74b13e2e13aa2f9e9547bf2 Mon Sep 17 00:00:00 2001 From: WilliButz Date: Fri, 29 Sep 2017 16:22:51 +0200 Subject: [PATCH 4/4] nixos/tests: rewrite pgjwt test - now using the test contained in the pgjwt source repo - also compatible with the new `superUser` option of the `postgresql` service --- nixos/tests/pgjwt.nix | 56 +++++++++++++++++++++---------------------- 1 file changed, 28 insertions(+), 28 deletions(-) diff --git a/nixos/tests/pgjwt.nix b/nixos/tests/pgjwt.nix index 2cf2963ae31..5af2f38035e 100644 --- a/nixos/tests/pgjwt.nix +++ b/nixos/tests/pgjwt.nix @@ -1,42 +1,42 @@ -import ./make-test.nix ({ pkgs, ...} : +import ./make-test.nix ({ pkgs, lib, ...}: let - test = pkgs.writeText "test.sql" '' - CREATE EXTENSION pgcrypto; - CREATE EXTENSION pgjwt; - select sign('{"sub":"1234567890","name":"John Doe","admin":true}', 'secret'); - select * from verify('eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiYWRtaW4iOnRydWV9.TJVA95OrM7E2cBab30RMHrHDcEfxjoYZgeFONFh7HgQ', 'secret'); + test = with pkgs; runCommand "patch-test" { + nativeBuildInputs = [ pgjwt ]; + } + '' + sed -e '12 i CREATE EXTENSION pgcrypto;\nCREATE EXTENSION pgtap;\nSET search_path TO tap,public;' ${pgjwt.src}/test.sql > $out; ''; in -{ +with pkgs; { name = "pgjwt"; - meta = with pkgs.stdenv.lib.maintainers; { - maintainers = [ spinus ]; + meta = with lib.maintainers; { + maintainers = [ spinus willibutz ]; }; nodes = { - master = - { pkgs, config, ... }: - - { - services.postgresql = let mypg = pkgs.postgresql95; in { - enable = true; - package = mypg; - extraPlugins =[pkgs.pgjwt]; - initialScript = pkgs.writeText "postgresql-init.sql" - '' - CREATE ROLE postgres WITH superuser login createdb; - ''; - }; + master = { pkgs, config, ... }: + { + services.postgresql = { + enable = true; + package = postgresql96; + extraPlugins = [ pgjwt pgtap ]; + initialScript = writeText "postgresql-init.sql" + '' + CREATE ROLE postgres WITH superuser login createdb; + ''; }; + }; }; - testScript = '' + testScript = { nodes, ... }: + let + sqlSU = "${nodes.master.config.services.postgresql.superUser}"; + pgProve = "${pkgs.perlPackages.TAPParserSourceHandlerpgTAP}"; + in + '' startAll; $master->waitForUnit("postgresql"); - $master->succeed("timeout 10 bash -c 'while ! psql postgres -c \"SELECT 1;\";do sleep 1;done;'"); - $master->succeed("cat ${test} | psql postgres"); - # I can't make original test working :[ - # $master->succeed("${pkgs.perlPackages.TAPParserSourceHandlerpgTAP}/bin/pg_prove -d postgres ${pkgs.pgjwt.src}/test.sql"); - + $master->copyFileFromHost("${test}","/tmp/test.sql"); + $master->succeed("${pkgs.sudo}/bin/sudo -u ${sqlSU} PGOPTIONS=--search_path=tap,public ${pgProve}/bin/pg_prove -d postgres -v -f /tmp/test.sql"); ''; })