Revision history for Test-Trap

0.2.1 Tue Dec 29 23:14:45 CET 2009

Documentation
Tests
Build

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

Documentation
Tests
Build

0.1.0 Mon Jan 14 18:31:09 CET 2008

Overall
Documentation
Nomenclature
Tests

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

Overview

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.