Revision history for Test-Trap
0.2.1 Tue Dec 29 23:14:45 CET 2009
0.2.0 Tue Sep 30 04:28:30 CEST 2008
Test::Trap::Builder::SystemSafe:
- add explicit close()s, as it seems various files otherwise
remain open for too long;
- register the teardown sub as soon as we have a tempfile, so
that we'll close it in teardown even if internal exceptions
are raised;
Test::Trap::Builder::Tempfile:
- added an explicit close($fh), as it seems it otherwise
remains open for too long;
- register the teardown sub as soon as we have a tempfile, so
that we'll close it in teardown even if internal exceptions
are raised;
Test::Trap::Builder:
- add an ' id ' member to the object, for use with tag-on
properties, as the ref stringification does not survive a
pseudo-fork (inside-out objects are hard);
- make sure all registered teardowns are called, even after
one or more internal exceptions;
Test::Trap:
- use a different workaround (by way of Teardown) for
$SIG{__WARN__} temporary value, as it seems local %SIG does
not restore the previous value or lack thereof upon scope
exit (may perlbug that one);
Tests:
- add a regression test for $SIG{__WARN__} restoration to
t/03-files.pl;
- add a regression test for the ", <$fh> line 1." bug to
t/03-files.pl;
- t/03-files.pl and t/06-layers.t: add necessary close()s and
local *FH to make sure all files are closed before exiting
(as otherwise, tempfiles are not being cleaned on windows);
- added "~" to the characters accepted in the $^X path, for
t/11-systemsafe-basic.pl;
- reorganize: move "unnumbered" tests to xt/author;
Build:
- bump the minor version number, in response to the internal
changes in Test::Trap::Builder;
- don't list Config as a prereq, as that seems to mess up
CPANPLUS(?) installations;
- updated MANIFEST, MANIFEST.SKIP, and Build.PL (adding
ACTION_authortest) in accordance with the above test
reorganization.
0.1.2 Fri Sep 12 17:30:42 CEST 2008
Test::Trap::Builder::TempFile:
- use *$globref, not $globref directly -- I have no idea why
this suddenly broke, but it did;
Tests:
- make t/10-tester.t independent of the exact format of the
Test::More diagnostics -- just dependent on it staying the
same within one process;
- thanks go to Andreas Koenig, cpantesters, and Michael
Schwern for providing early warning that this was going
to fail!
- make t/03-files.pl use backticks (`) instead of null chars
(\0) as a warning record separator -- makeshift fix --
I should do better, but this must do for now;
Build:
- up the perl dependency to 5.6.2 -- 5.6.0/5.6.1 may be
salvageable, but do not seem worth it.
0.1.1 Tue Mar 11 20:08:31 CET 2008
0.1.0 Mon Jan 14 18:31:09 CET 2008
for now (just don't advertise it in the docs); Test::Trap::Builder:
0.0.23 Mon Jun 25 22:47:50 CEST 2007
More blead stuff; otherwise just making a convenient small-stuff cut.
Test::Trap:
- Don't use IO::Handle here. (Only needed with File::Temp.)
Test::Trap::Builder::PerlIO:
- Don't need ->autoflush, nor IO::Handle.
Test::Trap::Builder::TempFile:
- Need IO::Handle, so use it.
Test::Trap::Builder::SystemSafe:
- Need IO::Handle, so use it.
- The strange buffering bug seems to have disappeared
(between revisions 99 and 100), though I have no idea how.
This ought to mean I no longer need to maintain the clumsy
work-around. So, removed!
Tests:
- As a concession to the CPANTS game, reinstated the pod tests. :)
- The regression test for the workaround for the pseudo-fork
bug was broken. Fixed by using the (implicit) :default
layer in t/08-fork.pl.
- t/02-reentrant.t caused a warning under bleed. Fixed.
- t/03-files.pl is now blead-ready (warning texts changed).
- t/11-systemsafe-basic.pl now detects system() failure and
fails the relevant tests as well (thank you cpan testsers).
0.0.22 Sun May 20 23:21:36 CEST 2007
No big changes this time.
Cleanup:
- remove unused Getopt::Long from tests;
- rearrange some tests for better readability;
- rewrite some systemsafe pod for better readability.
Tests:
- delete $ENV{ENV} (tainted);
- for coverage, first don't use Test::More in t/99-coverage.t;
- for coverage, test the internals of exiting breaking badly;
- simpler (and better covering) subclass tests.
Test::Trap:
- don't AUTOLOAD on behalf of Test::More after all (unclean);
- last TEST_TRAP_EXITING rather than goto EXITING (avoid collisions).
Test::Trap::Builder:
- localize the builder's internals of the trap object, so
that they are gone as soon as the trap has sprung, leaving
pay data only;
- last TEST_TRAP_BUILDER_INTERNAL_EXCEPTION rather than
goto INTERNAL_EXCEPTION (avoid collision);
- note (in the pod) a caveat for diamond inheritance wrt
autogeneration of test methods.
Build:
- don't include author's tests (pod*, kwalitee, etc) in the tarball;
- note all mandatory module dependencies (overkill?).
0.0.21 Sun Oct 29 15:53:07 CET 2006
Test::Trap::Builder::SystemSafe:
- Fix typo in the NAME section of the POD.
Test::Trap::Builder:
- Export a method ->TestAccessor, giving the tested accessor's name.
- Remove (ugly) register method ->test_method.
- Add (cleaner) register method ->test.
Test::Trap:
- Better diagnostics to failing ok/nok test.
- AUTOLOAD Test::More when required.
0.0.20 Sun Oct 22 09:21:55 CEST 2006
Test::Trap::Builder:
- Backend implementations are now methods, almost layers, not functions.
- Called with the (layer) name, the fileno, and the globref.
- local($globref) is now left to the implementation.
- Add method ->trap, implementing trap entry.
- Add exportable methods Run, Next, Exception, Teardown:
- Run runs the user's code;
- Next continues to the next layer;
- Exception raises an internal exception;
- Teardown registers cleanup code.
Test::Trap::Builder::TempFile, Test::Trap::Builder::PerlIO:
- Use ->Teardown instead of &DESTROY.
Add Test::Trap::Builder::SystemSafe.
- Add three test scripts for this.
- Work hard, and make those tests pass on 5.6.2! :-)
t/03-files.pl: Simpler, less hacky, choice of backend.
t/07-subclass.t: Use the core alarm(), not the Time::HiRes one.
t/08-fork.t: Remember to wait() on all children.
t/99-coverage.t: What I cannot test without hacking.
t/{-no-,-}taint.t:
- Since Windows fork() does not work with taint mode.
t/.t, t/.pl:
- Add comments and refactor into subroutines.
- Replace pass()/fail() with simpler/clearer ok().
0.0.19 Wed Sep 27 20:48:20 CEST 2006
No new functionality -- just bugfixes!
Address three portability issues:
- added binmode to the second handle on the tempfile;
- skip timout tests if Time::HiRes::ualarm cannot be imported;
- todo & skip the fork test on windows;
- thanks go to Alexandr Ciornii for reporting these failures!
Also:
- document the fork() issue on Windows as a Test::Trap bug;
- just skip the fork tests on platforms without fork;
- drop the Time::HiRes dependency (we only need it for a test);
- a little more POD and code (readability) cleanup.
0.0.18 Mon Sep 25 23:49:48 CEST 2006
Basically just pushing to get a well-packaged version out.
Packaged with a newer MB to get a (hopefully) better META.yml.
Cleaned up the error messages somewhat.
0.0.17 Sat Sep 23 00:47:13 CEST 2006
:stdout(perlio) :stdout(tempfile) :stderr(perlio) :stderr(tempfile)
0.0.16 Tue Sep 19 21:52:03 CEST 2006
Note dependency on perl 5.8.0 and Time::HiRes.
Pod updates to Builder.pm.
Added tests for layer permutation :raw:warn:stderr:stdout:exit:die.
Added tester tests for TODO and SKIP.
0.0.15 Mon Sep 18 23:53:05 CEST 2006
Move the extension interface into its own Test::Trap::Builder.
Change the extension interface somewhat:
- methods on the builder object, not the calling package;
- simpler methods for making accessors;
- methods also for registering test method prototypes;
- generate test methods from accessor + test pairs;
- ... even if the test or accessor is inherited;
- &layer_implementation needs both $module and $Builder now;
- update the tests accordingly.
Also, added some new tests for the builder.
0.0.14 Tue Sep 5 16:40:13 CEST 2006
Rewrite the "layer:$name" methods:
- return the layer implementation rather than be it, and
- can handle multi_layer definitions as well,
- changing &layer, &layer_implementation, and &multi_layer.
Update the POD accordingly.
Add an example using the extension interface.
Polish the POD, and add some more vertical spacing.
0.0.13 Tue Aug 29 06:54:05 CEST 2006
Add the standard test methods.
Document them -- overall, not one by one.
Test them -- using Test::Tester.
Add a dependency on Test::Tester.
Add a trustme for the pod coverage check.
Add a dependency on Data::Dump (for quoting, more or less).
Add factories for accessors and test methods.
Let array accessors produce elements and slices as well.
Add extra test methods: did_die, did_exit, did_return, quiet.
Document these.
Test them -- using Test::Tester.
0.0.12 Sun Aug 27 03:05:45 CEST 2006
Don't trap exits in children! Revert to outer exit-handler instead.
Test undefined *CORE::GLOBAL::exit.
Test forked exits.
Document the fork/exit caveat.
Rename some layers: :return:raw are now :raw:flow.
Base non-empty layer specifications too on :default.
Tests updated accordingly.
0.0.11 Sun Aug 27 01:51:30 CEST 2006
Test a bad class definition.
Clean up the code.
0.0.10 Sun Aug 27 01:18:09 CEST 2006
Add tests for subclassing.
Implement subclassing.
0.0.9 Sat Aug 26 23:51:26 CEST 2006
Implement layers as methods, anonymous or with mangled names.
Update the special layers test accordingly.
Move POD to beyond __END__.
0.0.8 Sat Aug 26 22:19:53 CEST 2006
s/mode/leaveby/g;
0.0.7 Thu Aug 24 04:35:04 CEST 2006
Implement user-defined trapper layers! Wrappers are now layers!
Test trapper layers!
0.0.6 Thu Aug 24 02:28:08 CEST 2006
Protect the method calls of the local $trap test.
Pull the wrapper list out of the exported sub and into its factory.
Add a &write_trapper factory to replace &trapstd{err,out}.
Trap warnings as well.
Add tests for trapping warnings.
0.0.5 Wed Aug 23 18:32:28 CEST 2006
Back to exporting just a scalar instead of the glob.
Export an anonymous closure combo instead of our $trap / &trap.
Eliminate our $trap / &trap. (Use a factory instead.)
Update the tests accordingly.
0.0.4 Wed Aug 23 15:44:00 CEST 2006
New test: Apply local() to the scalar.
Implementation: Export a glob instead of just the scalar.
0.0.3 Wed Aug 23 03:39:03 CEST 2006
Decompose the different wrappers. Eliminate the %trap hash.
Update tests to account for:
- missing 'die' was '', is now undef;
- void 'return' was [undef], is now [];
- missing 'return' was context dependent, is now undef.
0.0.2 Wed Aug 23 00:01:14 CEST 2006
Export a global scalar, by default $trap, instead of &trapped.
Make &trap merely the default name of the function.
Update tests accordingly.
Test for ->import failing in various ways.
Query exists &CORE::GLOBAL::exit instead of defined *...{CODE}.
Add pod.
0.0.1 Sun Aug 6 15:26:47 CEST 2006
Began extracting useful stuff from messy old code.