> On 23 Apr 2017, at 15:05, Craig Ringer <craig.rin...@2ndquadrant.com> wrote: > > On 23 Apr. 2017 10:32, "Michael Paquier" <michael.paqu...@gmail.com > <mailto:michael.paqu...@gmail.com>> wrote: > On Sun, Apr 23, 2017 at 7:48 AM, Daniel Gustafsson <dan...@yesql.se > <mailto:dan...@yesql.se>> wrote: > > Skipping the tempdir and instead using ${testname}_data_${name} without a > > random suffix, we can achieve this with something along the lines of the > > attached PoC. It works as now (retain of failure, remove on success unless > > overridden) but that logic can easily be turned around if we want that. If > > it’s of interest I can pursue this after some sleep (tomorrow has become > > today > > at this point). > > Yes, something like that may make sense as well for readability. > > Keeping folders in case of failures is something that I have been > advocating in favor of for some time, but this never got into the tree > :( > > Huh? We do keep test temp datadirs etc in case of failure. Just not on > success. > > Our definition of failure there sucks a bit though. We keep the datadirs if > any test fails in a script. If the script its self crashes we still blow away > the datadirs which is kind of counterintuitive. > > I'd like to change the __DIE__ sig handler to only delete on clean script > exit code, tap reporting success, and if some env bar like PG_TESTS_NOCLEAN > is undefined. The later could also be used in pg_regress etc.
That sounds like a good idea, even though END might be enough when not using tempdir() for the datadirs since die() should set a non-zero $? afaik (still doesn’t hurt to capture with __DIE__ though). I extended my previous test with this, and other comments in this thread: it produces non-random datadirs, retains them on die|exit|test-failure or if PG_TESTS_NOCLEAN is set. Theres also a check-clean target for cleaning out retained datadirs. Given that the datadirs do occupy quite some space, perhaps a PG_TESTS_DOCLEAN (or similar) would be good as well to always blow away the datadirs regardless of test status? I’m np Perl expert though so there might be better/cleaner ways to achieve this, in testing it seems to work though. rmtree() is supported at least since Perl 5.6 from what I can see. cheers ./daniel
tap_retaindir_v3.diff
Description: Binary data
-- Sent via pgsql-hackers mailing list (pgsql-hackers@postgresql.org) To make changes to your subscription: http://www.postgresql.org/mailpref/pgsql-hackers