In perl.git, the branch blead has been updated

<http://perl5.git.perl.org/perl.git/commitdiff/07308ed1589cc2f7837b5d3a1303d200a49b9338?hp=b17645516d4569fdfc26a2ed61c6e8704ced92cf>

- Log -----------------------------------------------------------------
commit 07308ed1589cc2f7837b5d3a1303d200a49b9338
Author: Chad Granum <[email protected]>
Date:   Thu Oct 23 12:03:23 2014 -0700

    Import Test-More 1.301001 alpha 63
-----------------------------------------------------------------------

Summary of changes:
 MANIFEST                                           |  376 ++-
 Makefile.SH                                        |   35 +-
 cpan/Test-Simple/lib/Test/Builder.pm               | 3026 ++++++--------------
 cpan/Test-Simple/lib/Test/Builder/Module.pm        |  128 +-
 cpan/Test-Simple/lib/Test/Builder/Tester.pm        |  237 +-
 cpan/Test-Simple/lib/Test/Builder/Tester/Color.pm  |  105 +-
 cpan/Test-Simple/lib/Test/FAQ.pod                  |  477 +++
 cpan/Test-Simple/lib/Test/More.pm                  | 1607 +++++------
 cpan/Test-Simple/lib/Test/More/DeepCheck.pm        |  223 ++
 cpan/Test-Simple/lib/Test/More/DeepCheck/Strict.pm |  328 +++
 .../lib/Test/More/DeepCheck/Tolerant.pm            |  330 +++
 cpan/Test-Simple/lib/Test/More/Tools.pm            |  540 ++++
 cpan/Test-Simple/lib/Test/MostlyLike.pm            |  292 ++
 cpan/Test-Simple/lib/Test/Simple.pm                |  155 +-
 cpan/Test-Simple/lib/Test/Stream.pm                | 1083 +++++++
 cpan/Test-Simple/lib/Test/Stream/Architecture.pod  |  444 +++
 cpan/Test-Simple/lib/Test/Stream/ArrayBase.pm      |  374 +++
 cpan/Test-Simple/lib/Test/Stream/ArrayBase/Meta.pm |  257 ++
 cpan/Test-Simple/lib/Test/Stream/Carp.pm           |  142 +
 cpan/Test-Simple/lib/Test/Stream/Context.pm        |  635 ++++
 cpan/Test-Simple/lib/Test/Stream/Event.pm          |  400 +++
 cpan/Test-Simple/lib/Test/Stream/Event/Bail.pm     |  182 ++
 cpan/Test-Simple/lib/Test/Stream/Event/Child.pm    |  144 +
 cpan/Test-Simple/lib/Test/Stream/Event/Diag.pm     |  198 ++
 cpan/Test-Simple/lib/Test/Stream/Event/Finish.pm   |  127 +
 cpan/Test-Simple/lib/Test/Stream/Event/Note.pm     |  169 ++
 cpan/Test-Simple/lib/Test/Stream/Event/Ok.pm       |  386 +++
 cpan/Test-Simple/lib/Test/Stream/Event/Plan.pm     |  219 ++
 cpan/Test-Simple/lib/Test/Stream/Event/Subtest.pm  |  275 ++
 cpan/Test-Simple/lib/Test/Stream/ExitMagic.pm      |  259 ++
 .../lib/Test/Stream/ExitMagic/Context.pm           |  131 +
 cpan/Test-Simple/lib/Test/Stream/Exporter.pm       |  315 ++
 cpan/Test-Simple/lib/Test/Stream/Exporter/Meta.pm  |  183 ++
 cpan/Test-Simple/lib/Test/Stream/IOSets.pm         |  243 ++
 cpan/Test-Simple/lib/Test/Stream/Meta.pm           |  202 ++
 cpan/Test-Simple/lib/Test/Stream/PackageUtil.pm    |  188 ++
 cpan/Test-Simple/lib/Test/Stream/Tester.pm         |  725 +++++
 cpan/Test-Simple/lib/Test/Stream/Tester/Checks.pm  |  401 +++
 .../lib/Test/Stream/Tester/Checks/Event.pm         |  194 ++
 cpan/Test-Simple/lib/Test/Stream/Tester/Events.pm  |  166 ++
 .../lib/Test/Stream/Tester/Events/Event.pm         |  199 ++
 cpan/Test-Simple/lib/Test/Stream/Tester/Grab.pm    |  215 ++
 cpan/Test-Simple/lib/Test/Stream/Threads.pm        |  163 ++
 cpan/Test-Simple/lib/Test/Stream/Toolset.pm        |  350 +++
 cpan/Test-Simple/lib/Test/Stream/Util.pm           |  331 +++
 cpan/Test-Simple/lib/Test/Tester.pm                |  769 +++++
 cpan/Test-Simple/lib/Test/Tester/Capture.pm        |  159 +
 .../Test-Simple/lib/Test/Tutorial/WritingTests.pod |  198 ++
 .../Test-Simple/lib/Test/Tutorial/WritingTools.pod |  295 ++
 cpan/Test-Simple/lib/Test/use/ok.pm                |  150 +
 cpan/Test-Simple/lib/ok.pm                         |  142 +
 cpan/Test-Simple/t/00test_harness_check.t          |   26 -
 cpan/Test-Simple/t/Behavior/MonkeyPatching_diag.t  |   97 +
 .../t/Behavior/MonkeyPatching_done_testing.t       |   61 +
 cpan/Test-Simple/t/Behavior/MonkeyPatching_note.t  |   97 +
 cpan/Test-Simple/t/Behavior/MonkeyPatching_ok.t    |  108 +
 cpan/Test-Simple/t/Behavior/MonkeyPatching_plan.t  |   86 +
 cpan/Test-Simple/t/Behavior/Munge.t                |   30 +
 cpan/Test-Simple/t/Behavior/NotTB15.t              |   48 +
 cpan/Test-Simple/t/Behavior/Tester2_subtest.t      |   69 +
 cpan/Test-Simple/t/Behavior/cmp_ok_xor.t           |   13 +
 cpan/Test-Simple/t/Behavior/encoding_test.t        |   35 +
 cpan/Test-Simple/t/Behavior/fork_new_end.t         |   53 +
 .../t/Behavior/threads_with_taint_mode.t           |   47 +
 cpan/Test-Simple/t/Behavior/todo.t                 |   43 +
 cpan/Test-Simple/t/Builder/fork_with_new_stdout.t  |   54 -
 cpan/Test-Simple/t/Builder/try.t                   |   42 -
 cpan/Test-Simple/t/{ => Legacy}/BEGIN_require_ok.t |    0
 cpan/Test-Simple/t/{ => Legacy}/BEGIN_use_ok.t     |    0
 cpan/Test-Simple/t/{ => Legacy}/Builder/Builder.t  |    0
 cpan/Test-Simple/t/{ => Legacy}/Builder/carp.t     |    9 +-
 cpan/Test-Simple/t/{ => Legacy}/Builder/create.t   |    0
 .../t/{ => Legacy}/Builder/current_test.t          |    0
 .../Builder/current_test_without_plan.t            |    0
 cpan/Test-Simple/t/{ => Legacy}/Builder/details.t  |    0
 .../t/{ => Legacy}/Builder/done_testing.t          |    0
 .../t/{ => Legacy}/Builder/done_testing_double.t   |    0
 .../Builder/done_testing_plan_mismatch.t           |    0
 .../Builder/done_testing_with_no_plan.t            |    0
 .../Builder/done_testing_with_number.t             |    0
 .../{ => Legacy}/Builder/done_testing_with_plan.t  |    2 +-
 .../t/Legacy/Builder/fork_with_new_stdout.t        |   57 +
 cpan/Test-Simple/t/{ => Legacy}/Builder/has_plan.t |    0
 .../Test-Simple/t/{ => Legacy}/Builder/has_plan2.t |    0
 cpan/Test-Simple/t/{ => Legacy}/Builder/is_fh.t    |    2 +-
 .../t/{ => Legacy}/Builder/is_passing.t            |    0
 .../t/{ => Legacy}/Builder/maybe_regex.t           |    2 +-
 cpan/Test-Simple/t/{ => Legacy}/Builder/no_diag.t  |    0
 .../Test-Simple/t/{ => Legacy}/Builder/no_ending.t |    0
 .../Test-Simple/t/{ => Legacy}/Builder/no_header.t |    0
 .../t/{ => Legacy}/Builder/no_plan_at_all.t        |    0
 cpan/Test-Simple/t/{ => Legacy}/Builder/ok_obj.t   |    0
 cpan/Test-Simple/t/{ => Legacy}/Builder/output.t   |    0
 cpan/Test-Simple/t/{ => Legacy}/Builder/reset.t    |    3 -
 cpan/Test-Simple/t/Legacy/Builder/reset_outputs.t  |   35 +
 cpan/Test-Simple/t/{ => Legacy}/More.t             |    7 +-
 cpan/Test-Simple/t/Legacy/PerlIO.t                 |   11 +
 cpan/Test-Simple/t/{ => Legacy}/Simple/load.t      |    0
 cpan/Test-Simple/t/Legacy/TestTester/auto.t        |   32 +
 cpan/Test-Simple/t/Legacy/TestTester/check_tests.t |  116 +
 cpan/Test-Simple/t/Legacy/TestTester/depth.t       |   39 +
 cpan/Test-Simple/t/Legacy/TestTester/is_bug.t      |   31 +
 cpan/Test-Simple/t/Legacy/TestTester/run_test.t    |  145 +
 .../t/{ => Legacy}/Tester/tbt_01basic.t            |    2 +-
 .../t/{ => Legacy}/Tester/tbt_02fhrestore.t        |    4 +-
 cpan/Test-Simple/t/{ => Legacy}/Tester/tbt_03die.t |    0
 .../t/{ => Legacy}/Tester/tbt_04line_num.t         |    0
 .../t/{ => Legacy}/Tester/tbt_05faildiag.t         |    0
 .../t/{ => Legacy}/Tester/tbt_06errormess.t        |    2 +-
 .../Test-Simple/t/{ => Legacy}/Tester/tbt_07args.t |    2 +-
 .../t/{ => Legacy}/Tester/tbt_08subtest.t          |    0
 cpan/Test-Simple/t/{ => Legacy}/Tester/tbt_09do.t  |    0
 .../t/{ => Legacy}/Tester/tbt_09do_script.pl       |    0
 cpan/Test-Simple/t/{ => Legacy}/bad_plan.t         |    0
 cpan/Test-Simple/t/{ => Legacy}/bail_out.t         |    0
 cpan/Test-Simple/t/{ => Legacy}/buffer.t           |    0
 cpan/Test-Simple/t/{ => Legacy}/c_flag.t           |    0
 cpan/Test-Simple/t/{ => Legacy}/circular_data.t    |    2 +-
 cpan/Test-Simple/t/{ => Legacy}/cmp_ok.t           |    4 +-
 cpan/Test-Simple/t/{ => Legacy}/dependents.t       |    0
 cpan/Test-Simple/t/{ => Legacy}/diag.t             |    0
 cpan/Test-Simple/t/{ => Legacy}/died.t             |    0
 .../t/{ => Legacy}/dont_overwrite_die_handler.t    |    1 +
 cpan/Test-Simple/t/{ => Legacy}/eq_set.t           |    2 +-
 cpan/Test-Simple/t/{ => Legacy}/exit.t             |    5 +-
 cpan/Test-Simple/t/{ => Legacy}/explain.t          |    0
 cpan/Test-Simple/t/{ => Legacy}/extra.t            |   11 +-
 cpan/Test-Simple/t/{ => Legacy}/extra_one.t        |    0
 cpan/Test-Simple/t/{ => Legacy}/fail-like.t        |    8 +-
 cpan/Test-Simple/t/{ => Legacy}/fail-more.t        |   15 +-
 cpan/Test-Simple/t/{ => Legacy}/fail.t             |    0
 cpan/Test-Simple/t/{ => Legacy}/fail_one.t         |    0
 cpan/Test-Simple/t/{ => Legacy}/filehandles.t      |    0
 cpan/Test-Simple/t/{ => Legacy}/fork.t             |    6 +-
 cpan/Test-Simple/t/Legacy/fork_in_subtest.t        |   40 +
 cpan/Test-Simple/t/{ => Legacy}/harness_active.t   |    2 +-
 cpan/Test-Simple/t/{ => Legacy}/import.t           |    0
 .../Test-Simple/t/{ => Legacy}/is_deeply_dne_bug.t |    0
 cpan/Test-Simple/t/{ => Legacy}/is_deeply_fail.t   |    4 +-
 .../t/{ => Legacy}/is_deeply_with_threads.t        |   17 +-
 cpan/Test-Simple/t/{ => Legacy}/missing.t          |    0
 cpan/Test-Simple/t/{ => Legacy}/new_ok.t           |    4 +-
 cpan/Test-Simple/t/{ => Legacy}/no_plan.t          |    0
 cpan/Test-Simple/t/{ => Legacy}/no_tests.t         |    0
 cpan/Test-Simple/t/{ => Legacy}/note.t             |    0
 cpan/Test-Simple/t/{ => Legacy}/overload.t         |    2 +-
 cpan/Test-Simple/t/{ => Legacy}/overload_threads.t |    0
 cpan/Test-Simple/t/{ => Legacy}/plan.t             |    4 +-
 cpan/Test-Simple/t/{ => Legacy}/plan_bad.t         |    0
 cpan/Test-Simple/t/{ => Legacy}/plan_is_noplan.t   |    0
 cpan/Test-Simple/t/{ => Legacy}/plan_no_plan.t     |    4 +
 .../t/{ => Legacy}/plan_shouldnt_import.t          |    0
 cpan/Test-Simple/t/{ => Legacy}/plan_skip_all.t    |    0
 cpan/Test-Simple/t/Legacy/pod.t                    |    7 +
 cpan/Test-Simple/t/{ => Legacy}/require_ok.t       |    9 +-
 cpan/Test-Simple/t/Legacy/ribasushi_diag.t         |   59 +
 cpan/Test-Simple/t/Legacy/ribasushi_threads.t      |   77 +
 cpan/Test-Simple/t/Legacy/ribasushi_threads2.t     |   51 +
 cpan/Test-Simple/t/{ => Legacy}/simple.t           |    0
 cpan/Test-Simple/t/{ => Legacy}/skip.t             |   15 +-
 cpan/Test-Simple/t/{ => Legacy}/skipall.t          |    2 +-
 cpan/Test-Simple/t/Legacy/strays.t                 |   27 +
 cpan/Test-Simple/t/{ => Legacy}/subtest/args.t     |    1 +
 cpan/Test-Simple/t/{ => Legacy}/subtest/bail_out.t |   29 +-
 cpan/Test-Simple/t/{ => Legacy}/subtest/basic.t    |   11 +-
 cpan/Test-Simple/t/{ => Legacy}/subtest/die.t      |    0
 cpan/Test-Simple/t/{ => Legacy}/subtest/do.t       |    2 +-
 .../t/{ => Legacy}/subtest/exceptions.t            |   10 +-
 .../t/{ => Legacy}/subtest/for_do_t.test           |    0
 cpan/Test-Simple/t/{ => Legacy}/subtest/fork.t     |   12 +-
 .../t/{ => Legacy}/subtest/implicit_done.t         |    0
 .../t/{ => Legacy}/subtest/line_numbers.t          |   21 +-
 cpan/Test-Simple/t/{ => Legacy}/subtest/plan.t     |    0
 .../Test-Simple/t/{ => Legacy}/subtest/predicate.t |   12 +-
 .../Test-Simple/t/{ => Legacy}/subtest/singleton.t |    0
 cpan/Test-Simple/t/{ => Legacy}/subtest/threads.t  |    4 +-
 cpan/Test-Simple/t/{ => Legacy}/subtest/todo.t     |   24 +-
 cpan/Test-Simple/t/{ => Legacy}/subtest/wstat.t    |    0
 .../t/{ => Legacy}/tbm_doesnt_set_exported_to.t    |    2 +-
 cpan/Test-Simple/t/Legacy/test_use_ok.t            |   40 +
 cpan/Test-Simple/t/{ => Legacy}/thread_taint.t     |    0
 cpan/Test-Simple/t/Legacy/threads.t                |   47 +
 cpan/Test-Simple/t/{ => Legacy}/todo.t             |   14 +-
 cpan/Test-Simple/t/{ => Legacy}/undef.t            |   13 +-
 cpan/Test-Simple/t/{ => Legacy}/use_ok.t           |    0
 cpan/Test-Simple/t/{ => Legacy}/useing.t           |    0
 cpan/Test-Simple/t/{ => Legacy}/utf8.t             |    6 +-
 cpan/Test-Simple/t/Legacy/versions.t               |   50 +
 cpan/Test-Simple/t/Test-Builder.t                  |   10 +
 cpan/Test-Simple/t/Test-More-DeepCheck.t           |    7 +
 cpan/Test-Simple/t/Test-More.t                     |   29 +
 cpan/Test-Simple/t/Test-MostlyLike.t               |  159 +
 cpan/Test-Simple/t/Test-Simple.t                   |   24 +
 cpan/Test-Simple/t/Test-Stream-ArrayBase-Meta.t    |   10 +
 cpan/Test-Simple/t/Test-Stream-ArrayBase.t         |   97 +
 cpan/Test-Simple/t/Test-Stream-Carp.t              |   53 +
 cpan/Test-Simple/t/Test-Stream-Event-Diag.t        |   24 +
 cpan/Test-Simple/t/Test-Stream-Event-Finish.t      |    7 +
 cpan/Test-Simple/t/Test-Stream-Event-Note.t        |   19 +
 cpan/Test-Simple/t/Test-Stream-Event.t             |   30 +
 cpan/Test-Simple/t/Test-Stream-ExitMagic-Context.t |    8 +
 cpan/Test-Simple/t/Test-Stream-Exporter-Meta.t     |    9 +
 cpan/Test-Simple/t/Test-Stream-Exporter.t          |   87 +
 cpan/Test-Simple/t/Test-Stream-IOSets.t            |   31 +
 cpan/Test-Simple/t/Test-Stream-Meta.t              |   16 +
 cpan/Test-Simple/t/Test-Stream-PackageUtil.t       |   38 +
 cpan/Test-Simple/t/Test-Stream-Tester-Grab.t       |   11 +
 cpan/Test-Simple/t/Test-Stream-Tester.t            |  140 +
 cpan/Test-Simple/t/Test-Stream-Toolset.t           |   11 +
 cpan/Test-Simple/t/Test-Stream-Util.t              |   45 +
 cpan/Test-Simple/t/Test-Tester-Capture.t           |    9 +
 cpan/Test-Simple/t/Test-Tester.t                   |    9 +
 cpan/Test-Simple/t/Test-use-ok.t                   |   25 +
 cpan/Test-Simple/t/lib/MyTest.pm                   |   15 +
 cpan/Test-Simple/t/lib/SmallTest.pm                |   35 +
 cpan/Test-Simple/t/threads.t                       |   33 -
 cpan/Test-Simple/t/versions.t                      |   28 -
 cpan/Test-Simple/t/{ => xt}/dependents.t           |   15 +-
 ext/DynaLoader/t/DynaLoader.t                      |   27 +-
 ext/XS-APItest/t/svpeek.t                          |    2 +-
 lib/.gitignore                                     |    1 +
 221 files changed, 18345 insertions(+), 3677 deletions(-)
 create mode 100644 cpan/Test-Simple/lib/Test/FAQ.pod
 create mode 100644 cpan/Test-Simple/lib/Test/More/DeepCheck.pm
 create mode 100644 cpan/Test-Simple/lib/Test/More/DeepCheck/Strict.pm
 create mode 100644 cpan/Test-Simple/lib/Test/More/DeepCheck/Tolerant.pm
 create mode 100644 cpan/Test-Simple/lib/Test/More/Tools.pm
 create mode 100644 cpan/Test-Simple/lib/Test/MostlyLike.pm
 create mode 100644 cpan/Test-Simple/lib/Test/Stream.pm
 create mode 100644 cpan/Test-Simple/lib/Test/Stream/Architecture.pod
 create mode 100644 cpan/Test-Simple/lib/Test/Stream/ArrayBase.pm
 create mode 100644 cpan/Test-Simple/lib/Test/Stream/ArrayBase/Meta.pm
 create mode 100644 cpan/Test-Simple/lib/Test/Stream/Carp.pm
 create mode 100644 cpan/Test-Simple/lib/Test/Stream/Context.pm
 create mode 100644 cpan/Test-Simple/lib/Test/Stream/Event.pm
 create mode 100644 cpan/Test-Simple/lib/Test/Stream/Event/Bail.pm
 create mode 100644 cpan/Test-Simple/lib/Test/Stream/Event/Child.pm
 create mode 100644 cpan/Test-Simple/lib/Test/Stream/Event/Diag.pm
 create mode 100644 cpan/Test-Simple/lib/Test/Stream/Event/Finish.pm
 create mode 100644 cpan/Test-Simple/lib/Test/Stream/Event/Note.pm
 create mode 100644 cpan/Test-Simple/lib/Test/Stream/Event/Ok.pm
 create mode 100644 cpan/Test-Simple/lib/Test/Stream/Event/Plan.pm
 create mode 100644 cpan/Test-Simple/lib/Test/Stream/Event/Subtest.pm
 create mode 100644 cpan/Test-Simple/lib/Test/Stream/ExitMagic.pm
 create mode 100644 cpan/Test-Simple/lib/Test/Stream/ExitMagic/Context.pm
 create mode 100644 cpan/Test-Simple/lib/Test/Stream/Exporter.pm
 create mode 100644 cpan/Test-Simple/lib/Test/Stream/Exporter/Meta.pm
 create mode 100644 cpan/Test-Simple/lib/Test/Stream/IOSets.pm
 create mode 100644 cpan/Test-Simple/lib/Test/Stream/Meta.pm
 create mode 100644 cpan/Test-Simple/lib/Test/Stream/PackageUtil.pm
 create mode 100644 cpan/Test-Simple/lib/Test/Stream/Tester.pm
 create mode 100644 cpan/Test-Simple/lib/Test/Stream/Tester/Checks.pm
 create mode 100644 cpan/Test-Simple/lib/Test/Stream/Tester/Checks/Event.pm
 create mode 100644 cpan/Test-Simple/lib/Test/Stream/Tester/Events.pm
 create mode 100644 cpan/Test-Simple/lib/Test/Stream/Tester/Events/Event.pm
 create mode 100644 cpan/Test-Simple/lib/Test/Stream/Tester/Grab.pm
 create mode 100644 cpan/Test-Simple/lib/Test/Stream/Threads.pm
 create mode 100644 cpan/Test-Simple/lib/Test/Stream/Toolset.pm
 create mode 100644 cpan/Test-Simple/lib/Test/Stream/Util.pm
 create mode 100644 cpan/Test-Simple/lib/Test/Tester.pm
 create mode 100644 cpan/Test-Simple/lib/Test/Tester/Capture.pm
 create mode 100644 cpan/Test-Simple/lib/Test/Tutorial/WritingTests.pod
 create mode 100644 cpan/Test-Simple/lib/Test/Tutorial/WritingTools.pod
 create mode 100644 cpan/Test-Simple/lib/Test/use/ok.pm
 create mode 100644 cpan/Test-Simple/lib/ok.pm
 delete mode 100644 cpan/Test-Simple/t/00test_harness_check.t
 create mode 100644 cpan/Test-Simple/t/Behavior/MonkeyPatching_diag.t
 create mode 100644 cpan/Test-Simple/t/Behavior/MonkeyPatching_done_testing.t
 create mode 100644 cpan/Test-Simple/t/Behavior/MonkeyPatching_note.t
 create mode 100644 cpan/Test-Simple/t/Behavior/MonkeyPatching_ok.t
 create mode 100644 cpan/Test-Simple/t/Behavior/MonkeyPatching_plan.t
 create mode 100644 cpan/Test-Simple/t/Behavior/Munge.t
 create mode 100644 cpan/Test-Simple/t/Behavior/NotTB15.t
 create mode 100644 cpan/Test-Simple/t/Behavior/Tester2_subtest.t
 create mode 100644 cpan/Test-Simple/t/Behavior/cmp_ok_xor.t
 create mode 100644 cpan/Test-Simple/t/Behavior/encoding_test.t
 create mode 100644 cpan/Test-Simple/t/Behavior/fork_new_end.t
 create mode 100644 cpan/Test-Simple/t/Behavior/threads_with_taint_mode.t
 create mode 100644 cpan/Test-Simple/t/Behavior/todo.t
 delete mode 100644 cpan/Test-Simple/t/Builder/fork_with_new_stdout.t
 delete mode 100644 cpan/Test-Simple/t/Builder/try.t
 rename cpan/Test-Simple/t/{ => Legacy}/BEGIN_require_ok.t (100%)
 rename cpan/Test-Simple/t/{ => Legacy}/BEGIN_use_ok.t (100%)
 rename cpan/Test-Simple/t/{ => Legacy}/Builder/Builder.t (100%)
 rename cpan/Test-Simple/t/{ => Legacy}/Builder/carp.t (69%)
 rename cpan/Test-Simple/t/{ => Legacy}/Builder/create.t (100%)
 rename cpan/Test-Simple/t/{ => Legacy}/Builder/current_test.t (100%)
 rename cpan/Test-Simple/t/{ => Legacy}/Builder/current_test_without_plan.t 
(100%)
 rename cpan/Test-Simple/t/{ => Legacy}/Builder/details.t (100%)
 rename cpan/Test-Simple/t/{ => Legacy}/Builder/done_testing.t (100%)
 rename cpan/Test-Simple/t/{ => Legacy}/Builder/done_testing_double.t (100%)
 rename cpan/Test-Simple/t/{ => Legacy}/Builder/done_testing_plan_mismatch.t 
(100%)
 rename cpan/Test-Simple/t/{ => Legacy}/Builder/done_testing_with_no_plan.t 
(100%)
 rename cpan/Test-Simple/t/{ => Legacy}/Builder/done_testing_with_number.t 
(100%)
 rename cpan/Test-Simple/t/{ => Legacy}/Builder/done_testing_with_plan.t (83%)
 create mode 100644 cpan/Test-Simple/t/Legacy/Builder/fork_with_new_stdout.t
 rename cpan/Test-Simple/t/{ => Legacy}/Builder/has_plan.t (100%)
 rename cpan/Test-Simple/t/{ => Legacy}/Builder/has_plan2.t (100%)
 rename cpan/Test-Simple/t/{ => Legacy}/Builder/is_fh.t (99%)
 rename cpan/Test-Simple/t/{ => Legacy}/Builder/is_passing.t (100%)
 rename cpan/Test-Simple/t/{ => Legacy}/Builder/maybe_regex.t (99%)
 rename cpan/Test-Simple/t/{ => Legacy}/Builder/no_diag.t (100%)
 rename cpan/Test-Simple/t/{ => Legacy}/Builder/no_ending.t (100%)
 rename cpan/Test-Simple/t/{ => Legacy}/Builder/no_header.t (100%)
 rename cpan/Test-Simple/t/{ => Legacy}/Builder/no_plan_at_all.t (100%)
 rename cpan/Test-Simple/t/{ => Legacy}/Builder/ok_obj.t (100%)
 rename cpan/Test-Simple/t/{ => Legacy}/Builder/output.t (100%)
 rename cpan/Test-Simple/t/{ => Legacy}/Builder/reset.t (97%)
 create mode 100644 cpan/Test-Simple/t/Legacy/Builder/reset_outputs.t
 rename cpan/Test-Simple/t/{ => Legacy}/More.t (98%)
 create mode 100644 cpan/Test-Simple/t/Legacy/PerlIO.t
 rename cpan/Test-Simple/t/{ => Legacy}/Simple/load.t (100%)
 create mode 100644 cpan/Test-Simple/t/Legacy/TestTester/auto.t
 create mode 100644 cpan/Test-Simple/t/Legacy/TestTester/check_tests.t
 create mode 100644 cpan/Test-Simple/t/Legacy/TestTester/depth.t
 create mode 100644 cpan/Test-Simple/t/Legacy/TestTester/is_bug.t
 create mode 100644 cpan/Test-Simple/t/Legacy/TestTester/run_test.t
 rename cpan/Test-Simple/t/{ => Legacy}/Tester/tbt_01basic.t (99%)
 rename cpan/Test-Simple/t/{ => Legacy}/Tester/tbt_02fhrestore.t (96%)
 rename cpan/Test-Simple/t/{ => Legacy}/Tester/tbt_03die.t (100%)
 rename cpan/Test-Simple/t/{ => Legacy}/Tester/tbt_04line_num.t (100%)
 rename cpan/Test-Simple/t/{ => Legacy}/Tester/tbt_05faildiag.t (100%)
 rename cpan/Test-Simple/t/{ => Legacy}/Tester/tbt_06errormess.t (99%)
 rename cpan/Test-Simple/t/{ => Legacy}/Tester/tbt_07args.t (99%)
 rename cpan/Test-Simple/t/{ => Legacy}/Tester/tbt_08subtest.t (100%)
 rename cpan/Test-Simple/t/{ => Legacy}/Tester/tbt_09do.t (100%)
 rename cpan/Test-Simple/t/{ => Legacy}/Tester/tbt_09do_script.pl (100%)
 rename cpan/Test-Simple/t/{ => Legacy}/bad_plan.t (100%)
 rename cpan/Test-Simple/t/{ => Legacy}/bail_out.t (100%)
 rename cpan/Test-Simple/t/{ => Legacy}/buffer.t (100%)
 rename cpan/Test-Simple/t/{ => Legacy}/c_flag.t (100%)
 rename cpan/Test-Simple/t/{ => Legacy}/circular_data.t (99%)
 rename cpan/Test-Simple/t/{ => Legacy}/cmp_ok.t (99%)
 copy cpan/Test-Simple/t/{ => Legacy}/dependents.t (100%)
 rename cpan/Test-Simple/t/{ => Legacy}/diag.t (100%)
 rename cpan/Test-Simple/t/{ => Legacy}/died.t (100%)
 rename cpan/Test-Simple/t/{ => Legacy}/dont_overwrite_die_handler.t (95%)
 rename cpan/Test-Simple/t/{ => Legacy}/eq_set.t (92%)
 rename cpan/Test-Simple/t/{ => Legacy}/exit.t (94%)
 rename cpan/Test-Simple/t/{ => Legacy}/explain.t (100%)
 rename cpan/Test-Simple/t/{ => Legacy}/extra.t (86%)
 rename cpan/Test-Simple/t/{ => Legacy}/extra_one.t (100%)
 rename cpan/Test-Simple/t/{ => Legacy}/fail-like.t (91%)
 rename cpan/Test-Simple/t/{ => Legacy}/fail-more.t (95%)
 rename cpan/Test-Simple/t/{ => Legacy}/fail.t (100%)
 rename cpan/Test-Simple/t/{ => Legacy}/fail_one.t (100%)
 rename cpan/Test-Simple/t/{ => Legacy}/filehandles.t (100%)
 rename cpan/Test-Simple/t/{ => Legacy}/fork.t (83%)
 create mode 100644 cpan/Test-Simple/t/Legacy/fork_in_subtest.t
 rename cpan/Test-Simple/t/{ => Legacy}/harness_active.t (98%)
 rename cpan/Test-Simple/t/{ => Legacy}/import.t (100%)
 rename cpan/Test-Simple/t/{ => Legacy}/is_deeply_dne_bug.t (100%)
 rename cpan/Test-Simple/t/{ => Legacy}/is_deeply_fail.t (99%)
 rename cpan/Test-Simple/t/{ => Legacy}/is_deeply_with_threads.t (82%)
 rename cpan/Test-Simple/t/{ => Legacy}/missing.t (100%)
 rename cpan/Test-Simple/t/{ => Legacy}/new_ok.t (81%)
 rename cpan/Test-Simple/t/{ => Legacy}/no_plan.t (100%)
 rename cpan/Test-Simple/t/{ => Legacy}/no_tests.t (100%)
 rename cpan/Test-Simple/t/{ => Legacy}/note.t (100%)
 rename cpan/Test-Simple/t/{ => Legacy}/overload.t (97%)
 rename cpan/Test-Simple/t/{ => Legacy}/overload_threads.t (100%)
 rename cpan/Test-Simple/t/{ => Legacy}/plan.t (58%)
 rename cpan/Test-Simple/t/{ => Legacy}/plan_bad.t (100%)
 rename cpan/Test-Simple/t/{ => Legacy}/plan_is_noplan.t (100%)
 rename cpan/Test-Simple/t/{ => Legacy}/plan_no_plan.t (84%)
 rename cpan/Test-Simple/t/{ => Legacy}/plan_shouldnt_import.t (100%)
 rename cpan/Test-Simple/t/{ => Legacy}/plan_skip_all.t (100%)
 create mode 100644 cpan/Test-Simple/t/Legacy/pod.t
 rename cpan/Test-Simple/t/{ => Legacy}/require_ok.t (56%)
 create mode 100644 cpan/Test-Simple/t/Legacy/ribasushi_diag.t
 create mode 100644 cpan/Test-Simple/t/Legacy/ribasushi_threads.t
 create mode 100644 cpan/Test-Simple/t/Legacy/ribasushi_threads2.t
 rename cpan/Test-Simple/t/{ => Legacy}/simple.t (100%)
 rename cpan/Test-Simple/t/{ => Legacy}/skip.t (88%)
 rename cpan/Test-Simple/t/{ => Legacy}/skipall.t (98%)
 create mode 100644 cpan/Test-Simple/t/Legacy/strays.t
 rename cpan/Test-Simple/t/{ => Legacy}/subtest/args.t (96%)
 rename cpan/Test-Simple/t/{ => Legacy}/subtest/bail_out.t (55%)
 rename cpan/Test-Simple/t/{ => Legacy}/subtest/basic.t (94%)
 rename cpan/Test-Simple/t/{ => Legacy}/subtest/die.t (100%)
 rename cpan/Test-Simple/t/{ => Legacy}/subtest/do.t (83%)
 rename cpan/Test-Simple/t/{ => Legacy}/subtest/exceptions.t (88%)
 rename cpan/Test-Simple/t/{ => Legacy}/subtest/for_do_t.test (100%)
 rename cpan/Test-Simple/t/{ => Legacy}/subtest/fork.t (82%)
 rename cpan/Test-Simple/t/{ => Legacy}/subtest/implicit_done.t (100%)
 rename cpan/Test-Simple/t/{ => Legacy}/subtest/line_numbers.t (90%)
 rename cpan/Test-Simple/t/{ => Legacy}/subtest/plan.t (100%)
 rename cpan/Test-Simple/t/{ => Legacy}/subtest/predicate.t (95%)
 rename cpan/Test-Simple/t/{ => Legacy}/subtest/singleton.t (100%)
 rename cpan/Test-Simple/t/{ => Legacy}/subtest/threads.t (74%)
 rename cpan/Test-Simple/t/{ => Legacy}/subtest/todo.t (87%)
 rename cpan/Test-Simple/t/{ => Legacy}/subtest/wstat.t (100%)
 rename cpan/Test-Simple/t/{ => Legacy}/tbm_doesnt_set_exported_to.t (88%)
 create mode 100644 cpan/Test-Simple/t/Legacy/test_use_ok.t
 rename cpan/Test-Simple/t/{ => Legacy}/thread_taint.t (100%)
 create mode 100644 cpan/Test-Simple/t/Legacy/threads.t
 rename cpan/Test-Simple/t/{ => Legacy}/todo.t (93%)
 rename cpan/Test-Simple/t/{ => Legacy}/undef.t (90%)
 rename cpan/Test-Simple/t/{ => Legacy}/use_ok.t (100%)
 rename cpan/Test-Simple/t/{ => Legacy}/useing.t (100%)
 rename cpan/Test-Simple/t/{ => Legacy}/utf8.t (98%)
 create mode 100644 cpan/Test-Simple/t/Legacy/versions.t
 create mode 100644 cpan/Test-Simple/t/Test-Builder.t
 create mode 100644 cpan/Test-Simple/t/Test-More-DeepCheck.t
 create mode 100644 cpan/Test-Simple/t/Test-More.t
 create mode 100644 cpan/Test-Simple/t/Test-MostlyLike.t
 create mode 100644 cpan/Test-Simple/t/Test-Simple.t
 create mode 100644 cpan/Test-Simple/t/Test-Stream-ArrayBase-Meta.t
 create mode 100644 cpan/Test-Simple/t/Test-Stream-ArrayBase.t
 create mode 100644 cpan/Test-Simple/t/Test-Stream-Carp.t
 create mode 100644 cpan/Test-Simple/t/Test-Stream-Event-Diag.t
 create mode 100644 cpan/Test-Simple/t/Test-Stream-Event-Finish.t
 create mode 100644 cpan/Test-Simple/t/Test-Stream-Event-Note.t
 create mode 100644 cpan/Test-Simple/t/Test-Stream-Event.t
 create mode 100644 cpan/Test-Simple/t/Test-Stream-ExitMagic-Context.t
 create mode 100644 cpan/Test-Simple/t/Test-Stream-Exporter-Meta.t
 create mode 100644 cpan/Test-Simple/t/Test-Stream-Exporter.t
 create mode 100644 cpan/Test-Simple/t/Test-Stream-IOSets.t
 create mode 100644 cpan/Test-Simple/t/Test-Stream-Meta.t
 create mode 100644 cpan/Test-Simple/t/Test-Stream-PackageUtil.t
 create mode 100644 cpan/Test-Simple/t/Test-Stream-Tester-Grab.t
 create mode 100644 cpan/Test-Simple/t/Test-Stream-Tester.t
 create mode 100644 cpan/Test-Simple/t/Test-Stream-Toolset.t
 create mode 100644 cpan/Test-Simple/t/Test-Stream-Util.t
 create mode 100644 cpan/Test-Simple/t/Test-Tester-Capture.t
 create mode 100644 cpan/Test-Simple/t/Test-Tester.t
 create mode 100644 cpan/Test-Simple/t/Test-use-ok.t
 create mode 100644 cpan/Test-Simple/t/lib/MyTest.pm
 create mode 100644 cpan/Test-Simple/t/lib/SmallTest.pm
 delete mode 100644 cpan/Test-Simple/t/threads.t
 delete mode 100644 cpan/Test-Simple/t/versions.t
 rename cpan/Test-Simple/t/{ => xt}/dependents.t (66%)

diff --git a/MANIFEST b/MANIFEST
index 50c9460..ce5f1a4 100644
--- a/MANIFEST
+++ b/MANIFEST
@@ -2246,146 +2246,242 @@ cpan/Test-Harness/t/yamlish-output.t                  
Test::Harness test
 cpan/Test-Harness/t/yamlish.t                          Test::Harness test
 cpan/Test-Harness/t/yamlish-writer.t                   Test::Harness test
 cpan/Test/lib/Test.pm          A simple framework for writing test scripts
-cpan/Test-Simple/lib/Test/Builder/Module.pm            Base class for test 
modules
-cpan/Test-Simple/lib/Test/Builder.pm                   For writing new test 
libraries
-cpan/Test-Simple/lib/Test/Builder/Tester/Color.pm      Turn on color in 
Test::Builder::Tester
-cpan/Test-Simple/lib/Test/Builder/Tester.pm            For testing 
Test::Builder based classes
-cpan/Test-Simple/lib/Test/More.pm                      More utilities for 
writing tests
-cpan/Test-Simple/lib/Test/Simple.pm                    Basic utility for 
writing tests
-cpan/Test-Simple/lib/Test/Tutorial.pod                 A tutorial on writing 
tests
-cpan/Test-Simple/t/00test_harness_check.t              Test::Simple test
-cpan/Test-Simple/t/bad_plan.t                          Test::Builder plan() 
test
-cpan/Test-Simple/t/bail_out.t                          Test::Builder BAIL_OUT 
test
-cpan/Test-Simple/t/BEGIN_require_ok.t                  Test::More require_ok() 
testing
-cpan/Test-Simple/t/BEGIN_use_ok.t                      Test::More use_ok() 
testing
-cpan/Test-Simple/t/buffer.t                            Test::Builder buffering 
test
-cpan/Test-Simple/t/Builder/Builder.t                   Test::Builder tests
-cpan/Test-Simple/t/Builder/carp.t                      Test::Builder test
-cpan/Test-Simple/t/Builder/create.t                    Test::Builder test
-cpan/Test-Simple/t/Builder/current_test.t              Test::Builder tests
-cpan/Test-Simple/t/Builder/current_test_without_plan.t Test::Builder tests
-cpan/Test-Simple/t/Builder/details.t                   Test::Builder tests
-cpan/Test-Simple/t/Builder/done_testing_double.t               Test::Builder 
tests
-cpan/Test-Simple/t/Builder/done_testing_plan_mismatch.t        Test::Builder 
tests
-cpan/Test-Simple/t/Builder/done_testing.t              Test::Builder tests
-cpan/Test-Simple/t/Builder/done_testing_with_no_plan.t Test::Builder tests
-cpan/Test-Simple/t/Builder/done_testing_with_number.t  Test::Builder tests
-cpan/Test-Simple/t/Builder/done_testing_with_plan.t    Test::Builder tests
-cpan/Test-Simple/t/Builder/fork_with_new_stdout.t      Test::Builder tests
-cpan/Test-Simple/t/Builder/has_plan2.t                 Test::Builder tests
-cpan/Test-Simple/t/Builder/has_plan.t                  Test::Builder tests
-cpan/Test-Simple/t/Builder/is_fh.t                     Test::Builder tests
-cpan/Test-Simple/t/Builder/is_passing.t                        Test::Builder 
tests
-cpan/Test-Simple/t/Builder/maybe_regex.t               Test::Builder tests
-cpan/Test-Simple/t/Builder/no_diag.t                   Test::Builder tests
-cpan/Test-Simple/t/Builder/no_ending.t                 Test::Builder tests
-cpan/Test-Simple/t/Builder/no_header.t                 Test::Builder tests
-cpan/Test-Simple/t/Builder/no_plan_at_all.t            Test::Builder tests
-cpan/Test-Simple/t/Builder/ok_obj.t                    Test::Builder tests
-cpan/Test-Simple/t/Builder/output.t                    Test::Builder tests
-cpan/Test-Simple/t/Builder/reset.t                     Test::Builder tests
-cpan/Test-Simple/t/Builder/try.t                       Test::Builder tests
-cpan/Test-Simple/t/c_flag.t                            Test::Simple test
-cpan/Test-Simple/t/circular_data.t                     Test::Simple test
-cpan/Test-Simple/t/cmp_ok.t                            Test::More test
-cpan/Test-Simple/t/dependents.t                                Test::More test
-cpan/Test-Simple/t/diag.t                              Test::More diag() test
-cpan/Test-Simple/t/died.t                              Test::Simple test
-cpan/Test-Simple/t/dont_overwrite_die_handler.t                Test::More tests
-cpan/Test-Simple/t/eq_set.t                            Test::Simple test
-cpan/Test-Simple/t/exit.t                              Test::Simple test, exit 
codes
-cpan/Test-Simple/t/explain.t                           Test::Simple test
-cpan/Test-Simple/t/extra_one.t                         Test::Simple test
-cpan/Test-Simple/t/extra.t                             Test::Simple test
-cpan/Test-Simple/t/fail-like.t                         Test::More test, like() 
failures
-cpan/Test-Simple/t/fail-more.t                         Test::More test, tests 
failing
-cpan/Test-Simple/t/fail_one.t                          Test::Simple test
-cpan/Test-Simple/t/fail.t                              Test::Simple test, test 
failures
-cpan/Test-Simple/t/filehandles.t                       Test::Simple test, 
STDOUT can be played with
-cpan/Test-Simple/t/fork.t                              Test::More fork tests
-cpan/Test-Simple/t/harness_active.t                    Test::Simple test
-cpan/Test-Simple/t/import.t                            Test::More test, 
importing functions
-cpan/Test-Simple/t/is_deeply_dne_bug.t                 Test::More test
-cpan/Test-Simple/t/is_deeply_fail.t                    Test::More test, 
is_deeply()
-cpan/Test-Simple/t/is_deeply_with_threads.t            Test::More test
-cpan/Test-Simple/t/lib/Dev/Null.pm                     Test::More test module
-cpan/Test-Simple/t/lib/Dummy.pm                                Test::More test 
module
-cpan/Test-Simple/t/lib/MyOverload.pm                   Test::More test module
-cpan/Test-Simple/t/lib/NoExporter.pm                   Test::Simple test module
-cpan/Test-Simple/t/lib/SigDie.pm                       Test module for 
Test::More
-cpan/Test-Simple/t/lib/Test/Builder/NoOutput.pm                Utility module 
for testing Test::Builder
-cpan/Test-Simple/t/lib/Test/Simple/Catch.pm            Utility module for 
testing Test::Simple
-cpan/Test-Simple/t/lib/Test/Simple/sample_tests/death_in_eval.plx      for 
exit.t
-cpan/Test-Simple/t/lib/Test/Simple/sample_tests/death.plx              for 
exit.t
-cpan/Test-Simple/t/lib/Test/Simple/sample_tests/death_with_handler.plx for 
exit.t
-cpan/Test-Simple/t/lib/Test/Simple/sample_tests/exit.plx                       
for exit.t
-cpan/Test-Simple/t/lib/Test/Simple/sample_tests/extras.plx             for 
exit.t
-cpan/Test-Simple/t/lib/Test/Simple/sample_tests/five_fail.plx          for 
exit.t
-cpan/Test-Simple/t/lib/Test/Simple/sample_tests/last_minute_death.plx  for 
exit.t
-cpan/Test-Simple/t/lib/Test/Simple/sample_tests/missing_done_testing.plx       
for exit.t
-cpan/Test-Simple/t/lib/Test/Simple/sample_tests/one_fail.plx           for 
exit.t
-cpan/Test-Simple/t/lib/Test/Simple/sample_tests/one_fail_without_plan.plx      
for exit.t
-cpan/Test-Simple/t/lib/Test/Simple/sample_tests/pre_plan_death.plx     for 
exit.t
-cpan/Test-Simple/t/lib/Test/Simple/sample_tests/require.plx            for 
exit.t
-cpan/Test-Simple/t/lib/Test/Simple/sample_tests/success.plx            for 
exit.t
-cpan/Test-Simple/t/lib/Test/Simple/sample_tests/too_few_fail.plx               
for exit.t
-cpan/Test-Simple/t/lib/Test/Simple/sample_tests/too_few.plx            for 
exit.t
-cpan/Test-Simple/t/lib/Test/Simple/sample_tests/two_fail.plx           for 
exit.t
-cpan/Test-Simple/t/lib/TieOut.pm                       Testing library to 
capture prints
-cpan/Test-Simple/t/missing.t                           Test::Simple test, 
missing tests
-cpan/Test-Simple/t/More.t                              Test::More test, basic 
stuff
-cpan/Test-Simple/t/new_ok.t                            Test::More test
-cpan/Test-Simple/t/no_plan.t                           Test::Simple test, 
forgot the plan
-cpan/Test-Simple/t/no_tests.t                          Test::More test
-cpan/Test-Simple/t/note.t                              Test::More test
-cpan/Test-Simple/t/overload.t                          Test::Simple test
-cpan/Test-Simple/t/overload_threads.t                  Test::Simple test
-cpan/Test-Simple/t/plan_bad.t                          Test::Simple test
-cpan/Test-Simple/t/plan_is_noplan.t                    Test::Simple test, 
no_plan
-cpan/Test-Simple/t/plan_no_plan.t                      Test::More test, plan() 
w/no_plan
-cpan/Test-Simple/t/plan_shouldnt_import.t              Test::Simple test
-cpan/Test-Simple/t/plan_skip_all.t                     Test::More test, plan() 
w/skip_all
-cpan/Test-Simple/t/plan.t                              Test::More test, plan()
-cpan/Test-Simple/t/require_ok.t                                Test::Simple 
test
-cpan/Test-Simple/t/Simple/load.t                       Test::Builder tests
-cpan/Test-Simple/t/simple.t                            Test::Simple test, 
basic stuff
-cpan/Test-Simple/t/skipall.t                           Test::More test, skip 
all tests
-cpan/Test-Simple/t/skip.t                              Test::More test, SKIP 
tests
-cpan/Test-Simple/t/subtest/args.t                      Test::More test
-cpan/Test-Simple/t/subtest/bail_out.t                  Test::More test
-cpan/Test-Simple/t/subtest/basic.t                     Test::More test
-cpan/Test-Simple/t/subtest/die.t                       Test::More test
-cpan/Test-Simple/t/subtest/do.t                                Test::More test
-cpan/Test-Simple/t/subtest/exceptions.t                        Test::More test
-cpan/Test-Simple/t/subtest/for_do_t.test               Test::More test
-cpan/Test-Simple/t/subtest/fork.t                      Test::Builder tests
-cpan/Test-Simple/t/subtest/implicit_done.t                     Test::Builder 
tests
-cpan/Test-Simple/t/subtest/line_numbers.t                      Test::Builder 
tests
-cpan/Test-Simple/t/subtest/plan.t                      Test::Builder tests
-cpan/Test-Simple/t/subtest/predicate.t                 Test::Builder tests
-cpan/Test-Simple/t/subtest/singleton.t                 Test::More test
-cpan/Test-Simple/t/subtest/threads.t                   Test::More test
-cpan/Test-Simple/t/subtest/todo.t                      Test::Builder tests
-cpan/Test-Simple/t/subtest/wstat.t                     Test::More test
-cpan/Test-Simple/t/tbm_doesnt_set_exported_to.t                
Test::Builder::Module test
-cpan/Test-Simple/t/Tester/tbt_01basic.t                        
Test::Builder::Tester test
-cpan/Test-Simple/t/Tester/tbt_02fhrestore.t            Test::Builder::Tester 
test
-cpan/Test-Simple/t/Tester/tbt_03die.t                  Test::Builder::Tester 
test
-cpan/Test-Simple/t/Tester/tbt_04line_num.t             Test::Builder::Tester 
test
-cpan/Test-Simple/t/Tester/tbt_05faildiag.t             Test::Builder::Tester 
test
-cpan/Test-Simple/t/Tester/tbt_06errormess.t            Test::Builder::Tester 
test
-cpan/Test-Simple/t/Tester/tbt_07args.t                 Test::Builder::Tester 
test
-cpan/Test-Simple/t/Tester/tbt_08subtest.t              Test::Builder::Tester 
test
-cpan/Test-Simple/t/Tester/tbt_09do_script.pl           Test::Builder::Tester 
test
-cpan/Test-Simple/t/Tester/tbt_09do.t                   Test::Builder::Tester 
test
-cpan/Test-Simple/t/threads.t                           Test::Builder 
thread-safe checks
-cpan/Test-Simple/t/thread_taint.t                      Test::Simple test
-cpan/Test-Simple/t/todo.t                              Test::More test, TODO 
tests
-cpan/Test-Simple/t/undef.t                             Test::More test, undefs 
don't cause warnings
-cpan/Test-Simple/t/useing.t                            Test::More test, 
compile test
-cpan/Test-Simple/t/use_ok.t                            Test::More test, 
use_ok()
-cpan/Test-Simple/t/utf8.t                              Test::More test
-cpan/Test-Simple/t/versions.t                          Test::More test
+cpan/Test-Simple/lib/ok.pm                     Test::Simple library
+cpan/Test-Simple/lib/Test/Builder/Module.pm                    Test::Simple 
module
+cpan/Test-Simple/lib/Test/Builder.pm                   Test::Simple module
+cpan/Test-Simple/lib/Test/Builder/Tester/Color.pm                      
Test::Simple module
+cpan/Test-Simple/lib/Test/Builder/Tester.pm                    Test::Simple 
module
+cpan/Test-Simple/lib/Test/FAQ.pod                      Test::Simple module
+cpan/Test-Simple/lib/Test/More/DeepCheck.pm                    Test::Simple 
module
+cpan/Test-Simple/lib/Test/More/DeepCheck/Strict.pm                     
Test::Simple module
+cpan/Test-Simple/lib/Test/More/DeepCheck/Tolerant.pm                   
Test::Simple module
+cpan/Test-Simple/lib/Test/More.pm                      Test::Simple module
+cpan/Test-Simple/lib/Test/More/Tools.pm                        Test::Simple 
module
+cpan/Test-Simple/lib/Test/MostlyLike.pm                        Test::Simple 
module
+cpan/Test-Simple/lib/Test/Simple.pm                    Test::Simple module
+cpan/Test-Simple/lib/Test/Stream/Architecture.pod                      
Test::Simple module
+cpan/Test-Simple/lib/Test/Stream/ArrayBase/Meta.pm                     
Test::Simple module
+cpan/Test-Simple/lib/Test/Stream/ArrayBase.pm                  Test::Simple 
module
+cpan/Test-Simple/lib/Test/Stream/Carp.pm                       Test::Simple 
module
+cpan/Test-Simple/lib/Test/Stream/Context.pm                    Test::Simple 
module
+cpan/Test-Simple/lib/Test/Stream/Event/Bail.pm                 Test::Simple 
module
+cpan/Test-Simple/lib/Test/Stream/Event/Child.pm                        
Test::Simple module
+cpan/Test-Simple/lib/Test/Stream/Event/Diag.pm                 Test::Simple 
module
+cpan/Test-Simple/lib/Test/Stream/Event/Finish.pm                       
Test::Simple module
+cpan/Test-Simple/lib/Test/Stream/Event/Note.pm                 Test::Simple 
module
+cpan/Test-Simple/lib/Test/Stream/Event/Ok.pm                   Test::Simple 
module
+cpan/Test-Simple/lib/Test/Stream/Event/Plan.pm                 Test::Simple 
module
+cpan/Test-Simple/lib/Test/Stream/Event.pm                      Test::Simple 
module
+cpan/Test-Simple/lib/Test/Stream/Event/Subtest.pm                      
Test::Simple module
+cpan/Test-Simple/lib/Test/Stream/ExitMagic/Context.pm                  
Test::Simple module
+cpan/Test-Simple/lib/Test/Stream/ExitMagic.pm                  Test::Simple 
module
+cpan/Test-Simple/lib/Test/Stream/Exporter/Meta.pm                      
Test::Simple module
+cpan/Test-Simple/lib/Test/Stream/Exporter.pm                   Test::Simple 
module
+cpan/Test-Simple/lib/Test/Stream/IOSets.pm                     Test::Simple 
module
+cpan/Test-Simple/lib/Test/Stream/Meta.pm                       Test::Simple 
module
+cpan/Test-Simple/lib/Test/Stream/PackageUtil.pm                        
Test::Simple module
+cpan/Test-Simple/lib/Test/Stream.pm                    Test::Simple module
+cpan/Test-Simple/lib/Test/Stream/Tester/Checks/Event.pm                        
Test::Simple module
+cpan/Test-Simple/lib/Test/Stream/Tester/Checks.pm                      
Test::Simple module
+cpan/Test-Simple/lib/Test/Stream/Tester/Events/Event.pm                        
Test::Simple module
+cpan/Test-Simple/lib/Test/Stream/Tester/Events.pm                      
Test::Simple module
+cpan/Test-Simple/lib/Test/Stream/Tester/Grab.pm                        
Test::Simple module
+cpan/Test-Simple/lib/Test/Stream/Tester.pm                     Test::Simple 
module
+cpan/Test-Simple/lib/Test/Stream/Threads.pm                    Test::Simple 
module
+cpan/Test-Simple/lib/Test/Stream/Toolset.pm                    Test::Simple 
module
+cpan/Test-Simple/lib/Test/Stream/Util.pm                       Test::Simple 
module
+cpan/Test-Simple/lib/Test/Tester/Capture.pm                    Test::Simple 
module
+cpan/Test-Simple/lib/Test/Tester.pm                    Test::Simple module
+cpan/Test-Simple/lib/Test/Tutorial.pod                 Test::Simple 
documentation
+cpan/Test-Simple/lib/Test/Tutorial/WritingTests.pod                    
Test::Simple documentation
+cpan/Test-Simple/lib/Test/Tutorial/WritingTools.pod                    
Test::Simple documentation
+cpan/Test-Simple/lib/Test/use/ok.pm                    Test::Simple library
+cpan/Test-Simple/t/Behavior/cmp_ok_xor.t                       Test::Simple 
Test
+cpan/Test-Simple/t/Behavior/encoding_test.t                    Test::Simple 
Test
+cpan/Test-Simple/t/Behavior/fork_new_end.t                     Test::Simple 
Test
+cpan/Test-Simple/t/Behavior/MonkeyPatching_diag.t                      
Test::Simple Test
+cpan/Test-Simple/t/Behavior/MonkeyPatching_done_testing.t                      
Test::Simple Test
+cpan/Test-Simple/t/Behavior/MonkeyPatching_note.t                      
Test::Simple Test
+cpan/Test-Simple/t/Behavior/MonkeyPatching_ok.t                        
Test::Simple Test
+cpan/Test-Simple/t/Behavior/MonkeyPatching_plan.t                      
Test::Simple Test
+cpan/Test-Simple/t/Behavior/Munge.t                    Test::Simple Test
+cpan/Test-Simple/t/Behavior/NotTB15.t                  Test::Simple Test
+cpan/Test-Simple/t/Behavior/Tester2_subtest.t                  Test::Simple 
Test
+cpan/Test-Simple/t/Behavior/threads_with_taint_mode.t                  
Test::Simple Test
+cpan/Test-Simple/t/Behavior/todo.t                     Test::Simple Test
+cpan/Test-Simple/t/Legacy/bad_plan.t                   Test::Simple Test
+cpan/Test-Simple/t/Legacy/bail_out.t                   Test::Simple Test
+cpan/Test-Simple/t/Legacy/BEGIN_require_ok.t                   Test::Simple 
Test
+cpan/Test-Simple/t/Legacy/BEGIN_use_ok.t                       Test::Simple 
Test
+cpan/Test-Simple/t/Legacy/buffer.t                     Test::Simple Test
+cpan/Test-Simple/t/Legacy/Builder/Builder.t                    Test::Simple 
Test
+cpan/Test-Simple/t/Legacy/Builder/carp.t                       Test::Simple 
Test
+cpan/Test-Simple/t/Legacy/Builder/create.t                     Test::Simple 
Test
+cpan/Test-Simple/t/Legacy/Builder/current_test.t                       
Test::Simple Test
+cpan/Test-Simple/t/Legacy/Builder/current_test_without_plan.t                  
Test::Simple Test
+cpan/Test-Simple/t/Legacy/Builder/details.t                    Test::Simple 
Test
+cpan/Test-Simple/t/Legacy/Builder/done_testing_double.t                        
Test::Simple Test
+cpan/Test-Simple/t/Legacy/Builder/done_testing_plan_mismatch.t                 
Test::Simple Test
+cpan/Test-Simple/t/Legacy/Builder/done_testing.t                       
Test::Simple Test
+cpan/Test-Simple/t/Legacy/Builder/done_testing_with_no_plan.t                  
Test::Simple Test
+cpan/Test-Simple/t/Legacy/Builder/done_testing_with_number.t                   
Test::Simple Test
+cpan/Test-Simple/t/Legacy/Builder/done_testing_with_plan.t                     
Test::Simple Test
+cpan/Test-Simple/t/Legacy/Builder/fork_with_new_stdout.t                       
Test::Simple Test
+cpan/Test-Simple/t/Legacy/Builder/has_plan2.t                  Test::Simple 
Test
+cpan/Test-Simple/t/Legacy/Builder/has_plan.t                   Test::Simple 
Test
+cpan/Test-Simple/t/Legacy/Builder/is_fh.t                      Test::Simple 
Test
+cpan/Test-Simple/t/Legacy/Builder/is_passing.t                 Test::Simple 
Test
+cpan/Test-Simple/t/Legacy/Builder/maybe_regex.t                        
Test::Simple Test
+cpan/Test-Simple/t/Legacy/Builder/no_diag.t                    Test::Simple 
Test
+cpan/Test-Simple/t/Legacy/Builder/no_ending.t                  Test::Simple 
Test
+cpan/Test-Simple/t/Legacy/Builder/no_header.t                  Test::Simple 
Test
+cpan/Test-Simple/t/Legacy/Builder/no_plan_at_all.t                     
Test::Simple Test
+cpan/Test-Simple/t/Legacy/Builder/ok_obj.t                     Test::Simple 
Test
+cpan/Test-Simple/t/Legacy/Builder/output.t                     Test::Simple 
Test
+cpan/Test-Simple/t/Legacy/Builder/reset_outputs.t                      
Test::Simple Test
+cpan/Test-Simple/t/Legacy/Builder/reset.t                      Test::Simple 
Test
+cpan/Test-Simple/t/Legacy/c_flag.t                     Test::Simple Test
+cpan/Test-Simple/t/Legacy/circular_data.t                      Test::Simple 
Test
+cpan/Test-Simple/t/Legacy/cmp_ok.t                     Test::Simple Test
+cpan/Test-Simple/t/Legacy/dependents.t                 Test::Simple Test
+cpan/Test-Simple/t/Legacy/diag.t                       Test::Simple Test
+cpan/Test-Simple/t/Legacy/died.t                       Test::Simple Test
+cpan/Test-Simple/t/Legacy/dont_overwrite_die_handler.t                 
Test::Simple Test
+cpan/Test-Simple/t/Legacy/eq_set.t                     Test::Simple Test
+cpan/Test-Simple/t/Legacy/exit.t                       Test::Simple Test
+cpan/Test-Simple/t/Legacy/explain.t                    Test::Simple Test
+cpan/Test-Simple/t/Legacy/extra_one.t                  Test::Simple Test
+cpan/Test-Simple/t/Legacy/extra.t                      Test::Simple Test
+cpan/Test-Simple/t/Legacy/fail-like.t                  Test::Simple Test
+cpan/Test-Simple/t/Legacy/fail-more.t                  Test::Simple Test
+cpan/Test-Simple/t/Legacy/fail_one.t                   Test::Simple Test
+cpan/Test-Simple/t/Legacy/fail.t                       Test::Simple Test
+cpan/Test-Simple/t/Legacy/filehandles.t                        Test::Simple 
Test
+cpan/Test-Simple/t/Legacy/fork_in_subtest.t                    Test::Simple 
Test
+cpan/Test-Simple/t/Legacy/fork.t                       Test::Simple Test
+cpan/Test-Simple/t/Legacy/harness_active.t                     Test::Simple 
Test
+cpan/Test-Simple/t/Legacy/import.t                     Test::Simple Test
+cpan/Test-Simple/t/Legacy/is_deeply_dne_bug.t                  Test::Simple 
Test
+cpan/Test-Simple/t/Legacy/is_deeply_fail.t                     Test::Simple 
Test
+cpan/Test-Simple/t/Legacy/is_deeply_with_threads.t                     
Test::Simple Test
+cpan/Test-Simple/t/Legacy/missing.t                    Test::Simple Test
+cpan/Test-Simple/t/Legacy/More.t                       Test::Simple Test
+cpan/Test-Simple/t/Legacy/new_ok.t                     Test::Simple Test
+cpan/Test-Simple/t/Legacy/no_plan.t                    Test::Simple Test
+cpan/Test-Simple/t/Legacy/no_tests.t                   Test::Simple Test
+cpan/Test-Simple/t/Legacy/note.t                       Test::Simple Test
+cpan/Test-Simple/t/Legacy/overload.t                   Test::Simple Test
+cpan/Test-Simple/t/Legacy/overload_threads.t                   Test::Simple 
Test
+cpan/Test-Simple/t/Legacy/PerlIO.t                     Test::Simple Test
+cpan/Test-Simple/t/Legacy/plan_bad.t                   Test::Simple Test
+cpan/Test-Simple/t/Legacy/plan_is_noplan.t                     Test::Simple 
Test
+cpan/Test-Simple/t/Legacy/plan_no_plan.t                       Test::Simple 
Test
+cpan/Test-Simple/t/Legacy/plan_shouldnt_import.t                       
Test::Simple Test
+cpan/Test-Simple/t/Legacy/plan_skip_all.t                      Test::Simple 
Test
+cpan/Test-Simple/t/Legacy/plan.t                       Test::Simple Test
+cpan/Test-Simple/t/Legacy/pod.t                        Test::Simple Test
+cpan/Test-Simple/t/Legacy/require_ok.t                 Test::Simple Test
+cpan/Test-Simple/t/Legacy/ribasushi_diag.t                     Test::Simple 
Test
+cpan/Test-Simple/t/Legacy/ribasushi_threads2.t                 Test::Simple 
Test
+cpan/Test-Simple/t/Legacy/ribasushi_threads.t                  Test::Simple 
Test
+cpan/Test-Simple/t/Legacy/Simple/load.t                        Test::Simple 
Test
+cpan/Test-Simple/t/Legacy/simple.t                     Test::Simple Test
+cpan/Test-Simple/t/Legacy/skipall.t                    Test::Simple Test
+cpan/Test-Simple/t/Legacy/skip.t                       Test::Simple Test
+cpan/Test-Simple/t/Legacy/strays.t                     Test::Simple Test
+cpan/Test-Simple/t/Legacy/subtest/args.t                       Test::Simple 
Test
+cpan/Test-Simple/t/Legacy/subtest/bail_out.t                   Test::Simple 
Test
+cpan/Test-Simple/t/Legacy/subtest/basic.t                      Test::Simple 
Test
+cpan/Test-Simple/t/Legacy/subtest/die.t                        Test::Simple 
Test
+cpan/Test-Simple/t/Legacy/subtest/do.t                 Test::Simple Test
+cpan/Test-Simple/t/Legacy/subtest/exceptions.t                 Test::Simple 
Test
+cpan/Test-Simple/t/Legacy/subtest/for_do_t.test                        
Test::Simple Test
+cpan/Test-Simple/t/Legacy/subtest/fork.t                       Test::Simple 
Test
+cpan/Test-Simple/t/Legacy/subtest/implicit_done.t                      
Test::Simple Test
+cpan/Test-Simple/t/Legacy/subtest/line_numbers.t                       
Test::Simple Test
+cpan/Test-Simple/t/Legacy/subtest/plan.t                       Test::Simple 
Test
+cpan/Test-Simple/t/Legacy/subtest/predicate.t                  Test::Simple 
Test
+cpan/Test-Simple/t/Legacy/subtest/singleton.t                  Test::Simple 
Test
+cpan/Test-Simple/t/Legacy/subtest/threads.t                    Test::Simple 
Test
+cpan/Test-Simple/t/Legacy/subtest/todo.t                       Test::Simple 
Test
+cpan/Test-Simple/t/Legacy/subtest/wstat.t                      Test::Simple 
Test
+cpan/Test-Simple/t/Legacy/tbm_doesnt_set_exported_to.t                 
Test::Simple Test
+cpan/Test-Simple/t/Legacy/Tester/tbt_01basic.t                 Test::Simple 
Test
+cpan/Test-Simple/t/Legacy/Tester/tbt_02fhrestore.t                     
Test::Simple Test
+cpan/Test-Simple/t/Legacy/Tester/tbt_03die.t                   Test::Simple 
Test
+cpan/Test-Simple/t/Legacy/Tester/tbt_04line_num.t                      
Test::Simple Test
+cpan/Test-Simple/t/Legacy/Tester/tbt_05faildiag.t                      
Test::Simple Test
+cpan/Test-Simple/t/Legacy/Tester/tbt_06errormess.t                     
Test::Simple Test
+cpan/Test-Simple/t/Legacy/Tester/tbt_07args.t                  Test::Simple 
Test
+cpan/Test-Simple/t/Legacy/Tester/tbt_08subtest.t                       
Test::Simple Test
+cpan/Test-Simple/t/Legacy/Tester/tbt_09do_script.pl                    
Test::Simple Test
+cpan/Test-Simple/t/Legacy/Tester/tbt_09do.t                    Test::Simple 
Test
+cpan/Test-Simple/t/Legacy/TestTester/auto.t                    Test::Simple 
Test
+cpan/Test-Simple/t/Legacy/TestTester/check_tests.t                     
Test::Simple Test
+cpan/Test-Simple/t/Legacy/TestTester/depth.t                   Test::Simple 
Test
+cpan/Test-Simple/t/Legacy/TestTester/is_bug.t                  Test::Simple 
Test
+cpan/Test-Simple/t/Legacy/TestTester/run_test.t                        
Test::Simple Test
+cpan/Test-Simple/t/Legacy/test_use_ok.t                        Test::Simple 
Test
+cpan/Test-Simple/t/Legacy/threads.t                    Test::Simple Test
+cpan/Test-Simple/t/Legacy/thread_taint.t                       Test::Simple 
Test
+cpan/Test-Simple/t/Legacy/todo.t                       Test::Simple Test
+cpan/Test-Simple/t/Legacy/undef.t                      Test::Simple Test
+cpan/Test-Simple/t/Legacy/useing.t                     Test::Simple Test
+cpan/Test-Simple/t/Legacy/use_ok.t                     Test::Simple Test
+cpan/Test-Simple/t/Legacy/utf8.t                       Test::Simple Test
+cpan/Test-Simple/t/Legacy/versions.t                   Test::Simple Test
+cpan/Test-Simple/t/lib/Dev/Null.pm                     Test::Simple Test
+cpan/Test-Simple/t/lib/Dummy.pm                        Test::Simple Test
+cpan/Test-Simple/t/lib/MyOverload.pm                   Test::Simple Test
+cpan/Test-Simple/t/lib/MyTest.pm                       Test::Simple Test
+cpan/Test-Simple/t/lib/NoExporter.pm                   Test::Simple Test
+cpan/Test-Simple/t/lib/SigDie.pm                       Test::Simple Test
+cpan/Test-Simple/t/lib/SmallTest.pm                    Test::Simple Test
+cpan/Test-Simple/t/lib/Test/Builder/NoOutput.pm                        
Test::Simple Test
+cpan/Test-Simple/t/lib/Test/Simple/Catch.pm                    Test::Simple 
Test
+cpan/Test-Simple/t/lib/Test/Simple/sample_tests/death_in_eval.plx              
        Test::Simple Test
+cpan/Test-Simple/t/lib/Test/Simple/sample_tests/death.plx                      
Test::Simple Test
+cpan/Test-Simple/t/lib/Test/Simple/sample_tests/death_with_handler.plx         
        Test::Simple Test
+cpan/Test-Simple/t/lib/Test/Simple/sample_tests/exit.plx                       
Test::Simple Test
+cpan/Test-Simple/t/lib/Test/Simple/sample_tests/extras.plx                     
Test::Simple Test
+cpan/Test-Simple/t/lib/Test/Simple/sample_tests/five_fail.plx                  
Test::Simple Test
+cpan/Test-Simple/t/lib/Test/Simple/sample_tests/last_minute_death.plx          
        Test::Simple Test
+cpan/Test-Simple/t/lib/Test/Simple/sample_tests/missing_done_testing.plx       
                Test::Simple Test
+cpan/Test-Simple/t/lib/Test/Simple/sample_tests/one_fail.plx                   
Test::Simple Test
+cpan/Test-Simple/t/lib/Test/Simple/sample_tests/one_fail_without_plan.plx      
                Test::Simple Test
+cpan/Test-Simple/t/lib/Test/Simple/sample_tests/pre_plan_death.plx             
        Test::Simple Test
+cpan/Test-Simple/t/lib/Test/Simple/sample_tests/require.plx                    
Test::Simple Test
+cpan/Test-Simple/t/lib/Test/Simple/sample_tests/success.plx                    
Test::Simple Test
+cpan/Test-Simple/t/lib/Test/Simple/sample_tests/too_few_fail.plx               
        Test::Simple Test
+cpan/Test-Simple/t/lib/Test/Simple/sample_tests/too_few.plx                    
Test::Simple Test
+cpan/Test-Simple/t/lib/Test/Simple/sample_tests/two_fail.plx                   
Test::Simple Test
+cpan/Test-Simple/t/lib/TieOut.pm                       Test::Simple Test
+cpan/Test-Simple/t/Test-Builder.t                      Test::Simple Test
+cpan/Test-Simple/t/Test-More-DeepCheck.t                       Test::Simple 
Test
+cpan/Test-Simple/t/Test-More.t                 Test::Simple Test
+cpan/Test-Simple/t/Test-MostlyLike.t                   Test::Simple Test
+cpan/Test-Simple/t/Test-Simple.t                       Test::Simple Test
+cpan/Test-Simple/t/Test-Stream-ArrayBase-Meta.t                        
Test::Simple Test
+cpan/Test-Simple/t/Test-Stream-ArrayBase.t                     Test::Simple 
Test
+cpan/Test-Simple/t/Test-Stream-Carp.t                  Test::Simple Test
+cpan/Test-Simple/t/Test-Stream-Event-Diag.t                    Test::Simple 
Test
+cpan/Test-Simple/t/Test-Stream-Event-Finish.t                  Test::Simple 
Test
+cpan/Test-Simple/t/Test-Stream-Event-Note.t                    Test::Simple 
Test
+cpan/Test-Simple/t/Test-Stream-Event.t                 Test::Simple Test
+cpan/Test-Simple/t/Test-Stream-ExitMagic-Context.t                     
Test::Simple Test
+cpan/Test-Simple/t/Test-Stream-Exporter-Meta.t                 Test::Simple 
Test
+cpan/Test-Simple/t/Test-Stream-Exporter.t                      Test::Simple 
Test
+cpan/Test-Simple/t/Test-Stream-IOSets.t                        Test::Simple 
Test
+cpan/Test-Simple/t/Test-Stream-Meta.t                  Test::Simple Test
+cpan/Test-Simple/t/Test-Stream-PackageUtil.t                   Test::Simple 
Test
+cpan/Test-Simple/t/Test-Stream-Tester-Grab.t                   Test::Simple 
Test
+cpan/Test-Simple/t/Test-Stream-Tester.t                        Test::Simple 
Test
+cpan/Test-Simple/t/Test-Stream-Toolset.t                       Test::Simple 
Test
+cpan/Test-Simple/t/Test-Stream-Util.t                  Test::Simple Test
+cpan/Test-Simple/t/Test-Tester-Capture.t                       Test::Simple 
Test
+cpan/Test-Simple/t/Test-Tester.t                       Test::Simple Test
+cpan/Test-Simple/t/Test-use-ok.t                       Test::Simple Test
+cpan/Test-Simple/t/xt/dependents.t                     Test::Simple Test
 cpan/Test/t/05_about_verbose.t See if Test works
 cpan/Test/t/fail.t             See if Test works
 cpan/Test/t/mix.t              See if Test works
diff --git a/Makefile.SH b/Makefile.SH
index db66aeb..3c3efec 100755
--- a/Makefile.SH
+++ b/Makefile.SH
@@ -1297,21 +1297,26 @@ _cleaner2:
        -rmdir lib/autodie/Scope lib/autodie lib/XS lib/Win32API lib/VMS
        -rmdir lib/Unicode/Collate/Locale lib/Unicode/Collate/CJK
        -rmdir lib/Unicode/Collate lib/Tie/Hash lib/Thread lib/Text
-       -rmdir lib/Test/Builder/Tester lib/Test/Builder lib/Test lib/Term
-       -rmdir lib/TAP/Parser/YAMLish lib/TAP/Parser/SourceHandler
-       -rmdir lib/TAP/Parser/Scheduler lib/TAP/Parser/Result
-       -rmdir lib/TAP/Parser/Iterator lib/TAP/Parser lib/TAP/Harness
-       -rmdir lib/TAP/Formatter/File lib/TAP/Formatter/Console
-       -rmdir lib/TAP/Formatter lib/TAP lib/Sys/Syslog lib/Sys lib/Sub
-       -rmdir lib/Search lib/Scalar lib/Pod/Text lib/Pod/Simple
-       -rmdir lib/Pod/Perldoc lib/PerlIO/via lib/PerlIO lib/Perl
-       -rmdir lib/Parse/CPAN lib/Parse lib/Params lib/Net/FTP lib/Module/Load
-       -rmdir lib/Module/CoreList lib/Module lib/Memoize lib/Math/BigInt
-       -rmdir lib/Math/BigFloat lib/Math lib/MIME lib/Locale/Maketext
-       -rmdir lib/Locale/Codes lib/Locale lib/List/Util lib/List lib/JSON/PP
-       -rmdir lib/JSON lib/IPC lib/IO/Uncompress/Adapter lib/IO/Uncompress
-       -rmdir lib/IO/Socket lib/IO/Compress/Zlib lib/IO/Compress/Zip
-       -rmdir lib/IO/Compress/Gzip lib/IO/Compress/Base
+       -rmdir lib/Test/use lib/Test/Tutorial lib/Test/Tester
+       -rmdir lib/Test/Stream/Tester/Events lib/Test/Stream/Tester/Checks
+       -rmdir lib/Test/Stream/Tester lib/Test/Stream/Exporter
+       -rmdir lib/Test/Stream/ExitMagic lib/Test/Stream/Event
+       -rmdir lib/Test/Stream/ArrayBase lib/Test/Stream
+       -rmdir lib/Test/More/DeepCheck lib/Test/More lib/Test/Builder/Tester
+       -rmdir lib/Test/Builder lib/Test lib/Term lib/TAP/Parser/YAMLish
+       -rmdir lib/TAP/Parser/SourceHandler lib/TAP/Parser/Scheduler
+       -rmdir lib/TAP/Parser/Result lib/TAP/Parser/Iterator lib/TAP/Parser
+       -rmdir lib/TAP/Harness lib/TAP/Formatter/File
+       -rmdir lib/TAP/Formatter/Console lib/TAP/Formatter lib/TAP
+       -rmdir lib/Sys/Syslog lib/Sys lib/Sub lib/Search lib/Scalar
+       -rmdir lib/Pod/Text lib/Pod/Simple lib/Pod/Perldoc lib/PerlIO/via
+       -rmdir lib/PerlIO lib/Perl lib/Parse/CPAN lib/Parse lib/Params
+       -rmdir lib/Net/FTP lib/Module/Load lib/Module/CoreList lib/Module
+       -rmdir lib/Memoize lib/Math/BigInt lib/Math/BigFloat lib/Math lib/MIME
+       -rmdir lib/Locale/Maketext lib/Locale/Codes lib/Locale lib/List/Util
+       -rmdir lib/List lib/JSON/PP lib/JSON lib/IPC lib/IO/Uncompress/Adapter
+       -rmdir lib/IO/Uncompress lib/IO/Socket lib/IO/Compress/Zlib
+       -rmdir lib/IO/Compress/Zip lib/IO/Compress/Gzip lib/IO/Compress/Base
        -rmdir lib/IO/Compress/Adapter lib/IO/Compress lib/IO
        -rmdir lib/I18N/LangTags lib/I18N lib/Hash/Util lib/Hash lib/HTTP
        -rmdir lib/Filter/Util lib/Filter lib/File/Spec lib/ExtUtils/Typemaps
diff --git a/cpan/Test-Simple/lib/Test/Builder.pm 
b/cpan/Test-Simple/lib/Test/Builder.pm
index 97c7a9e..c307e85 100644
--- a/cpan/Test-Simple/lib/Test/Builder.pm
+++ b/cpan/Test-Simple/lib/Test/Builder.pm
@@ -1,1782 +1,476 @@
 package Test::Builder;
 
-use 5.006;
+use 5.008001;
 use strict;
 use warnings;
 
-our $VERSION = '1.001008';
+our $VERSION = '1.301001_063';
 $VERSION = eval $VERSION;    ## no critic 
(BuiltinFunctions::ProhibitStringyEval)
 
-BEGIN {
-    if( $] < 5.008 ) {
-        require Test::Builder::IO::Scalar;
-    }
-}
+use Test::More::Tools;
+
+use Test::Stream qw/ -internal STATE_LEGACY STATE_PLAN STATE_COUNT /;
+use Test::Stream::Toolset;
+use Test::Stream::Context;
+use Test::Stream::Carp qw/confess/;
 
+use Test::Stream::Util qw/try protect unoverload_str is_regex/;
+use Scalar::Util qw/blessed reftype/;
 
-# Make Test::Builder thread-safe for ithreads.
 BEGIN {
-    use Config;
-    # Load threads::shared when threads are turned on.
-    # 5.8.0's threads are so busted we no longer support them.
-    if( $] >= 5.008001 && $Config{useithreads} && $INC{'threads.pm'} ) {
-        require threads::shared;
-
-        # Hack around YET ANOTHER threads::shared bug.  It would
-        # occasionally forget the contents of the variable when sharing it.
-        # So we first copy the data, then share, then put our copy back.
-        *share = sub (\[$@%]) {
-            my $type = ref $_[0];
-            my $data;
-
-            if( $type eq 'HASH' ) {
-                %$data = %{ $_[0] };
-            }
-            elsif( $type eq 'ARRAY' ) {
-                @$data = @{ $_[0] };
-            }
-            elsif( $type eq 'SCALAR' ) {
-                $$data = ${ $_[0] };
-            }
-            else {
-                die( "Unknown type: " . $type );
-            }
-
-            $_[0] = &threads::shared::share( $_[0] );
-
-            if( $type eq 'HASH' ) {
-                %{ $_[0] } = %$data;
-            }
-            elsif( $type eq 'ARRAY' ) {
-                @{ $_[0] } = @$data;
-            }
-            elsif( $type eq 'SCALAR' ) {
-                ${ $_[0] } = $$data;
-            }
-            else {
-                die( "Unknown type: " . $type );
-            }
-
-            return $_[0];
-        };
-    }
-    # 5.8.0's threads::shared is busted when threads are off
-    # and earlier Perls just don't have that module at all.
-    else {
-        *share = sub { return $_[0] };
-        *lock  = sub { 0 };
-    }
+    Test::Stream->shared->set_use_legacy(1);
 }
 
-=head1 NAME
-
-Test::Builder - Backend for building test libraries
-
-=head1 SYNOPSIS
-
-  package My::Test::Module;
-  use base 'Test::Builder::Module';
-
-  my $CLASS = __PACKAGE__;
-
-  sub ok {
-      my($test, $name) = @_;
-      my $tb = $CLASS->builder;
-
-      $tb->ok($test, $name);
-  }
+# The mostly-singleton, and other package vars.
+our $Test  = Test::Builder->new;
+our $_ORIG_Test = $Test;
+our $Level = 1;
 
+sub ctx {
+    my $self = shift || die "No self in context";
+    my ($add) = @_;
+    my $ctx = Test::Stream::Context::context(2 + ($add || 0), $self->{stream});
+    if (defined $self->{Todo}) {
+        $ctx->set_in_todo(1);
+        $ctx->set_todo($self->{Todo});
+        $ctx->set_diag_todo(1);
+    }
+    return $ctx;
+}
 
-=head1 DESCRIPTION
+sub stream {
+    my $self = shift;
+    return $self->{stream} || Test::Stream->shared;
+}
 
-L<Test::Simple> and L<Test::More> have proven to be popular testing modules,
-but they're not always flexible enough.  Test::Builder provides a
-building block upon which to write your own test libraries I<which can
-work together>.
+sub depth { $_[0]->{depth} || 0 }
 
-=head2 Construction
+# This is only for unit tests at this point.
+sub _ending {
+    my $self = shift;
+    my ($ctx) = @_;
+    require Test::Stream::ExitMagic;
+    $self->{stream}->set_no_ending(0);
+    Test::Stream::ExitMagic->new->do_magic($self->{stream}, $ctx);
+}
+
+my %WARNED;
+our $CTX;
+our %ORIG = (
+    ok   => \&ok,
+    diag => \&diag,
+    note => \&note,
+    plan => \&plan,
+    done_testing => \&done_testing,
+);
 
-=over 4
+sub WARN_OF_OVERRIDE {
+    my ($sub, $ctx) = @_;
 
-=item B<new>
+    return unless $ctx->modern;
+    my $old = $ORIG{$sub};
+    # Use package instead of self, we want replaced subs, not subclass 
overrides.
+    my $new = __PACKAGE__->can($sub);
 
-  my $Test = Test::Builder->new;
+    return if $new == $old;
 
-Returns a Test::Builder object representing the current state of the
-test.
+    require B;
+    my $o    = B::svref_2object($new);
+    my $gv   = $o->GV;
+    my $st   = $o->START;
+    my $name = $gv->NAME;
+    my $pkg  = $gv->STASH->NAME;
+    my $line = $st->line;
+    my $file = $st->file;
 
-Since you only run one test per program C<new> always returns the same
-Test::Builder object.  No matter how many times you call C<new()>, you're
-getting the same object.  This is called a singleton.  This is done so that
-multiple modules share such global information as the test counter and
-where test output is going.
+    warn <<"    EOT" unless $WARNED{"$pkg $name $file $line"}++;
 
-If you want a completely new Test::Builder object different from the
-singleton, use C<create>.
+*******************************************************************************
+Something monkeypatched Test::Builder::$sub()!
+The new sub is '$pkg\::$name' defined in $file around line $line.
+In the near future monkeypatching Test::Builder::ok() will no longer work
+as expected.
+*******************************************************************************
+    EOT
+}
 
-=cut
 
-our $Test = Test::Builder->new;
+####################
+# {{{ Constructors #
+####################
 
 sub new {
-    my($class) = shift;
-    $Test ||= $class->create;
+    my $class  = shift;
+    my %params = @_;
+    $Test ||= $class->create(shared_stream => 1);
+
     return $Test;
 }
 
-=item B<create>
-
-  my $Test = Test::Builder->create;
-
-Ok, so there can be more than one Test::Builder object and this is how
-you get it.  You might use this instead of C<new()> if you're testing
-a Test::Builder based module, but otherwise you probably want C<new>.
-
-B<NOTE>: the implementation is not complete.  C<level>, for example, is
-still shared amongst B<all> Test::Builder objects, even ones created using
-this method.  Also, the method name may change in the future.
-
-=cut
-
 sub create {
-    my $class = shift;
+    my $class  = shift;
+    my %params = @_;
 
     my $self = bless {}, $class;
-    $self->reset;
+    $self->reset(%params);
 
     return $self;
 }
 
-
 # Copy an object, currently a shallow.
 # This does *not* bless the destination.  This keeps the destructor from
 # firing when we're just storing a copy of the object to restore later.
 sub _copy {
-    my($src, $dest) = @_;
-
+    my ($src, $dest) = @_;
     %$dest = %$src;
-    _share_keys($dest);
-
     return;
 }
 
+####################
+# }}} Constructors #
+####################
 
-=item B<child>
-
-  my $child = $builder->child($name_of_child);
-  $child->plan( tests => 4 );
-  $child->ok(some_code());
-  ...
-  $child->finalize;
-
-Returns a new instance of C<Test::Builder>.  Any output from this child will
-be indented four spaces more than the parent's indentation.  When done, the
-C<finalize> method I<must> be called explicitly.
-
-Trying to create a new child with a previous child still active (i.e.,
-C<finalize> not called) will C<croak>.
+#############################
+# {{{ Children and subtests #
+#############################
 
-Trying to run a test when you have an open child will also C<croak> and cause
-the test suite to fail.
-
-=cut
+sub subtest {
+    my $self = shift;
+    my $ctx = $self->ctx();
+    return tmt->subtest(@_);
+}
 
 sub child {
     my( $self, $name ) = @_;
 
-    if( $self->{Child_Name} ) {
-        $self->croak("You already have a child named ($self->{Child_Name}) 
running");
-    }
-
-    my $parent_in_todo = $self->in_todo;
+    my $ctx = $self->ctx;
 
-    # Clear $TODO for the child.
-    my $orig_TODO = $self->find_TODO(undef, 1, undef);
+    if ($self->{child}) {
+        my $cname = $self->{child}->{Name};
+        $ctx->throw("You already have a child named ($cname) running");
+    }
 
-    my $class = ref $self;
-    my $child = $class->create;
+    $name ||= "Child of " . $self->{Name};
+    $ctx->child('push', $name, 1);
 
-    # Add to our indentation
-    $child->_indent( $self->_indent . '    ' );
+    my $stream = $self->{stream} || Test::Stream->shared;
 
-    # Make the child use the same outputs as the parent
-    for my $method (qw(output failure_output todo_output)) {
-        $child->$method( $self->$method );
-    }
+    my $child = bless {
+        %$self,
+        '?' => $?,
+        parent => $self,
+    };
 
-    # Ensure the child understands if they're inside a TODO
-    if( $parent_in_todo ) {
-        $child->failure_output( $self->todo_output );
-    }
+    $? = 0;
+    $child->{Name} = $name;
+    $self->{child} = $child;
+    Scalar::Util::weaken($self->{child});
 
-    # This will be reset in finalize. We do this here lest one child failure
-    # cause all children to fail.
-    $child->{Child_Error} = $?;
-    $?                    = 0;
-    $child->{Parent}      = $self;
-    $child->{Parent_TODO} = $orig_TODO;
-    $child->{Name}        = $name || "Child of " . $self->name;
-    $self->{Child_Name}   = $child->name;
     return $child;
 }
 
-
-=item B<subtest>
-
-    $builder->subtest($name, \&subtests, @args);
-
-See documentation of C<subtest> in Test::More.  
-
-C<subtest> also, and optionally, accepts arguments which will be passed to the
-subtests reference.
-
-=cut
-
-sub subtest {
+sub finalize {
     my $self = shift;
-    my($name, $subtests, @args) = @_;
 
-    if ('CODE' ne ref $subtests) {
-        $self->croak("subtest()'s second argument must be a code ref");
-    }
+    return unless $self->{parent};
 
-    # Turn the child into the parent so anyone who has stored a copy of
-    # the Test::Builder singleton will get the child.
-    my $error;
-    my $child;
-    my $parent = {};
-    {
-        # child() calls reset() which sets $Level to 1, so we localize
-        # $Level first to limit the scope of the reset to the subtest.
-        local $Test::Builder::Level = $Test::Builder::Level + 1;
-
-        # Store the guts of $self as $parent and turn $child into $self.
-        $child  = $self->child($name);
-        _copy($self,  $parent);
-        _copy($child, $self);
-
-        my $run_the_subtests = sub {
-            # Add subtest name for clarification of starting point
-            $self->note("Subtest: $name");
-            $subtests->(@args);
-            $self->done_testing unless $self->_plan_handled;
-            1;
-        };
-
-        if( !eval { $run_the_subtests->() } ) {
-            $error = $@;
-        }
-    }
+    my $ctx = $self->ctx;
 
-    # Restore the parent and the copied child.
-    _copy($self,   $child);
-    _copy($parent, $self);
+    if ($self->{child}) {
+        my $cname = $self->{child}->{Name};
+        $ctx->throw("Can't call finalize() with child ($cname) active");
+    }
 
-    # Restore the parent's $TODO
-    $self->find_TODO(undef, 1, $child->{Parent_TODO});
+    $self->_ending($ctx);
+    my $passing = $ctx->stream->is_passing;
+    my $count = $ctx->stream->count;
+    my $name = $self->{Name};
+    $ctx = undef;
 
-    # Die *after* we restore the parent.
-    die $error if $error and !eval { $error->isa('Test::Builder::Exception') };
+    my $stream = $self->{stream} || Test::Stream->shared;
 
-    local $Test::Builder::Level = $Test::Builder::Level + 1;
-    my $finalize = $child->finalize;
+    my $parent = $self->parent;
+    $self->{parent}->{child} = undef;
+    $self->{parent} = undef;
 
-    $self->BAIL_OUT($child->{Bailed_Out_Reason}) if $child->{Bailed_Out};
+    $? = $self->{'?'};
 
-    return $finalize;
+    $ctx = $parent->ctx;
+    $ctx->child('pop', $self->{Name});
 }
 
-=begin _private
-
-=item B<_plan_handled>
-
-    if ( $Test->_plan_handled ) { ... }
-
-Returns true if the developer has explicitly handled the plan via:
-
-=over 4
-
-=item * Explicitly setting the number of tests
-
-=item * Setting 'no_plan'
-
-=item * Set 'skip_all'.
-
-=back
-
-This is currently used in subtests when we implicitly call C<< 
$Test->done_testing >>
-if the developer has not set a plan.
-
-=end _private
-
-=cut
-
-sub _plan_handled {
+sub in_subtest {
     my $self = shift;
-    return $self->{Have_Plan} || $self->{No_Plan} || $self->{Skip_All};
+    my $ctx = $self->ctx;
+    return scalar @{$ctx->stream->subtests};
 }
 
+sub parent { $_[0]->{parent} }
+sub name   { $_[0]->{Name} }
 
-=item B<finalize>
-
-  my $ok = $child->finalize;
-
-When your child is done running tests, you must call C<finalize> to clean up
-and tell the parent your pass/fail status.
-
-Calling C<finalize> on a child with open children will C<croak>.
-
-If the child falls out of scope before C<finalize> is called, a failure
-diagnostic will be issued and the child is considered to have failed.
-
-No attempt to call methods on a child after C<finalize> is called is
-guaranteed to succeed.
-
-Calling this on the root builder is a no-op.
-
-=cut
-
-sub finalize {
+sub DESTROY {
     my $self = shift;
+    return unless $self->{parent};
+    return if $self->{Skip_All};
+    $self->{parent}->is_passing(0);
+    my $name = $self->{Name};
+    die "Child ($name) exited without calling finalize()";
+}
 
-    return unless $self->parent;
-    if( $self->{Child_Name} ) {
-        $self->croak("Can't call finalize() with child ($self->{Child_Name}) 
active");
-    }
-
-    local $? = 0;     # don't fail if $subtests happened to set $? nonzero
-    $self->_ending;
+#############################
+# }}} Children and subtests #
+#############################
 
-    # XXX This will only be necessary for TAP envelopes (we think)
-    #$self->_print( $self->is_passing ? "PASS\n" : "FAIL\n" );
+#####################################
+# {{{ stuff for TODO status #
+#####################################
 
-    local $Test::Builder::Level = $Test::Builder::Level + 1;
-    my $ok = 1;
-    $self->parent->{Child_Name} = undef;
-    unless ($self->{Bailed_Out}) {
-        if ( $self->{Skip_All} ) {
-            $self->parent->skip($self->{Skip_All}, $self->name);
-        }
-        elsif ( not @{ $self->{Test_Results} } ) {
-            $self->parent->ok( 0, sprintf q[No tests run for subtest "%s"], 
$self->name );
-        }
-        else {
-            $self->parent->ok( $self->is_passing, $self->name );
+sub find_TODO {
+    my ($self, $pack, $set, $new_value) = @_;
+
+    unless ($pack) {
+        if (my $ctx = Test::Stream::Context->peek) {
+            $pack = $ctx->package;
+            my $old = $ctx->todo;
+            $ctx->set_todo($new_value) if $set;
+            return $old;
         }
-    }
-    $? = $self->{Child_Error};
-    delete $self->{Parent};
-
-    return $self->is_passing;
-}
-
-sub _indent      {
-    my $self = shift;
 
-    if( @_ ) {
-        $self->{Indent} = shift;
+        $pack = $self->exported_to || return;
     }
 
-    return $self->{Indent};
+    no strict 'refs';    ## no critic
+    no warnings 'once';
+    my $old_value = ${$pack . '::TODO'};
+    $set and ${$pack . '::TODO'} = $new_value;
+    return $old_value;
 }
 
-=item B<parent>
-
- if ( my $parent = $builder->parent ) {
-     ...
- }
-
-Returns the parent C<Test::Builder> instance, if any.  Only used with child
-builders for nested TAP.
-
-=cut
-
-sub parent { shift->{Parent} }
-
-=item B<name>
-
- diag $builder->name;
+sub todo {
+    my ($self, $pack) = @_;
 
-Returns the name of the current builder.  Top level builders default to C<$0>
-(the name of the executable).  Child builders are named via the C<child>
-method.  If no name is supplied, will be named "Child of $parent->name".
+    return $self->{Todo} if defined $self->{Todo};
 
-=cut
+    my $ctx = $self->ctx;
 
-sub name { shift->{Name} }
+    my $todo = $self->find_TODO($pack);
+    return $todo if defined $todo;
 
-sub DESTROY {
-    my $self = shift;
-    if ( $self->parent and $$ == $self->{Original_Pid} ) {
-        my $name = $self->name;
-        $self->diag(<<"FAIL");
-Child ($name) exited without calling finalize()
-FAIL
-        $self->parent->{In_Destroy} = 1;
-        $self->parent->ok(0, $name);
-    }
+    return '';
 }
 
-=item B<reset>
-
-  $Test->reset;
-
-Reinitializes the Test::Builder singleton to its original state.
-Mostly useful for tests run in persistent environments where the same
-test might be run multiple times in the same process.
-
-=cut
-
-our $Level;
-
-sub reset {    ## no critic (Subroutines::ProhibitBuiltinHomonyms)
-    my($self) = @_;
-
-    # We leave this a global because it has to be localized and localizing
-    # hash keys is just asking for pain.  Also, it was documented.
-    $Level = 1;
-
-    $self->{Name}         = $0;
-    $self->is_passing(1);
-    $self->{Ending}       = 0;
-    $self->{Have_Plan}    = 0;
-    $self->{No_Plan}      = 0;
-    $self->{Have_Output_Plan} = 0;
-    $self->{Done_Testing} = 0;
-
-    $self->{Original_Pid} = $$;
-    $self->{Child_Name}   = undef;
-    $self->{Indent}     ||= '';
-
-    $self->{Curr_Test} = 0;
-    $self->{Test_Results} = &share( [] );
-
-    $self->{Exported_To}    = undef;
-    $self->{Expected_Tests} = 0;
-
-    $self->{Skip_All} = 0;
-
-    $self->{Use_Nums} = 1;
-
-    $self->{No_Header} = 0;
-    $self->{No_Ending} = 0;
-
-    $self->{Todo}       = undef;
-    $self->{Todo_Stack} = [];
-    $self->{Start_Todo} = 0;
-    $self->{Opened_Testhandles} = 0;
-
-    $self->_share_keys;
-    $self->_dup_stdhandles;
+sub in_todo {
+    my $self = shift;
 
-    return;
+    return (defined $self->{Todo} || $self->find_TODO) ? 1 : 0;
 }
 
-
-# Shared scalar values are lost when a hash is copied, so we have
-# a separate method to restore them.
-# Shared references are retained across copies.
-sub _share_keys {
+sub todo_start {
     my $self = shift;
+    my $message = @_ ? shift : '';
 
-    share( $self->{Curr_Test} );
+    $self->{Start_Todo}++;
+    if ($self->in_todo) {
+        push @{$self->{Todo_Stack}} => $self->todo;
+    }
+    $self->{Todo} = $message;
 
     return;
 }
 
+sub todo_end {
+    my $self = shift;
 
-=back
-
-=head2 Setting up tests
-
-These methods are for setting up tests and declaring how many there
-are.  You usually only want to call one of these methods.
-
-=over 4
-
-=item B<plan>
-
-  $Test->plan('no_plan');
-  $Test->plan( skip_all => $reason );
-  $Test->plan( tests => $num_tests );
-
-A convenient way to set up your tests.  Call this and Test::Builder
-will print the appropriate headers and take the appropriate actions.
+    if (!$self->{Start_Todo}) {
+        $self->ctx(-1)->throw('todo_end() called without todo_start()');
+    }
 
-If you call C<plan()>, don't call any of the other methods below.
+    $self->{Start_Todo}--;
 
-If a child calls "skip_all" in the plan, a C<Test::Builder::Exception> is
-thrown.  Trap this error, call C<finalize()> and don't run any more tests on
-the child.
+    if ($self->{Start_Todo} && @{$self->{Todo_Stack}}) {
+        $self->{Todo} = pop @{$self->{Todo_Stack}};
+    }
+    else {
+        delete $self->{Todo};
+    }
 
- my $child = $Test->child('some child');
- eval { $child->plan( $condition ? ( skip_all => $reason ) : ( tests => 3 )  ) 
};
- if ( eval { $@->isa('Test::Builder::Exception') } ) {
-    $child->finalize;
     return;
- }
- # run your tests
+}
+
+#####################################
+# }}} Finding Testers and Providers #
+#####################################
 
-=cut
+################
+# {{{ Planning #
+################
 
-my %plan_cmds = (
-    no_plan     => \&no_plan,
-    skip_all    => \&skip_all,
-    tests       => \&_plan_tests,
+my %PLAN_CMDS = (
+    no_plan  => 'no_plan',
+    skip_all => 'skip_all',
+    tests    => '_plan_tests',
 );
 
 sub plan {
-    my( $self, $cmd, $arg ) = @_;
-
-    return unless $cmd;
+    my ($self, $cmd, @args) = @_;
 
-    local $Level = $Level + 1;
+    my $ctx = $CTX || Test::Stream::Context->peek || $self->ctx();
+    WARN_OF_OVERRIDE(plan => $ctx);
 
-    $self->croak("You tried to plan twice") if $self->{Have_Plan};
+    return unless $cmd;
 
-    if( my $method = $plan_cmds{$cmd} ) {
-        local $Level = $Level + 1;
-        $self->$method($arg);
+    if (my $method = $PLAN_CMDS{$cmd}) {
+        $self->$method(@args);
     }
     else {
-        my @args = grep { defined } ( $cmd, $arg );
-        $self->croak("plan() doesn't understand @args");
+        my @in = grep { defined } ($cmd, @args);
+        $self->ctx->throw("plan() doesn't understand @in");
     }
 
     return 1;
 }
 
+sub skip_all {
+    my ($self, $reason) = @_;
 
-sub _plan_tests {
-    my($self, $arg) = @_;
-
-    if($arg) {
-        local $Level = $Level + 1;
-        return $self->expected_tests($arg);
-    }
-    elsif( !defined $arg ) {
-        $self->croak("Got an undefined number of tests");
-    }
-    else {
-        $self->croak("You said to run 0 tests");
-    }
-
-    return;
-}
-
-=item B<expected_tests>
-
-    my $max = $Test->expected_tests;
-    $Test->expected_tests($max);
-
-Gets/sets the number of tests we expect this test to run and prints out
-the appropriate headers.
-
-=cut
-
-sub expected_tests {
-    my $self = shift;
-    my($max) = @_;
-
-    if(@_) {
-        $self->croak("Number of tests must be a positive integer.  You gave it 
'$max'")
-          unless $max =~ /^\+?\d+$/;
+    $self->{Skip_All} = 1;
 
-        $self->{Expected_Tests} = $max;
-        $self->{Have_Plan}      = 1;
+    my $ctx = $CTX || Test::Stream::Context->peek || $self->ctx();
 
-        $self->_output_plan($max) unless $self->no_header;
-    }
-    return $self->{Expected_Tests};
+    $ctx->_plan(0, 'SKIP', $reason);
 }
 
-=item B<no_plan>
-
-  $Test->no_plan;
-
-Declares that this test will run an indeterminate number of tests.
-
-=cut
-
 sub no_plan {
-    my($self, $arg) = @_;
+    my ($self, @args) = @_;
 
-    $self->carp("no_plan takes no arguments") if $arg;
+    my $ctx = $CTX || Test::Stream::Context->peek || $self->ctx();
 
-    $self->{No_Plan}   = 1;
-    $self->{Have_Plan} = 1;
+    $ctx->alert("no_plan takes no arguments") if @args;
+    $ctx->_plan(0, 'NO PLAN');
 
     return 1;
 }
 
-=begin private
-
-=item B<_output_plan>
-
-  $tb->_output_plan($max);
-  $tb->_output_plan($max, $directive);
-  $tb->_output_plan($max, $directive => $reason);
-
-Handles displaying the test plan.
-
-If a C<$directive> and/or C<$reason> are given they will be output with the
-plan.  So here's what skipping all tests looks like:
-
-    $tb->_output_plan(0, "SKIP", "Because I said so");
-
-It sets C<< $tb->{Have_Output_Plan} >> and will croak if the plan was already
-output.
-
-=end private
-
-=cut
-
-sub _output_plan {
-    my($self, $max, $directive, $reason) = @_;
-
-    $self->carp("The plan was already output") if $self->{Have_Output_Plan};
-
-    my $plan = "1..$max";
-    $plan .= " # $directive" if defined $directive;
-    $plan .= " $reason"      if defined $reason;
-
-    $self->_print("$plan\n");
-
-    $self->{Have_Output_Plan} = 1;
-
-    return;
-}
-
-
-=item B<done_testing>
-
-  $Test->done_testing();
-  $Test->done_testing($num_tests);
-
-Declares that you are done testing, no more tests will be run after this point.
-
-If a plan has not yet been output, it will do so.
-
-$num_tests is the number of tests you planned to run.  If a numbered
-plan was already declared, and if this contradicts, a failing test
-will be run to reflect the planning mistake.  If C<no_plan> was declared,
-this will override.
-
-If C<done_testing()> is called twice, the second call will issue a
-failing test.
-
-If C<$num_tests> is omitted, the number of tests run will be used, like
-no_plan.
-
-C<done_testing()> is, in effect, used when you'd want to use C<no_plan>, but
-safer. You'd use it like so:
-
-    $Test->ok($a == $b);
-    $Test->done_testing();
-
-Or to plan a variable number of tests:
-
-    for my $test (@tests) {
-        $Test->ok($test);
-    }
-    $Test->done_testing(scalar @tests);
-
-=cut
+sub _plan_tests {
+    my ($self, $arg) = @_;
 
-sub done_testing {
-    my($self, $num_tests) = @_;
+    my $ctx = $CTX || Test::Stream::Context->peek || $self->ctx();
 
-    # If done_testing() specified the number of tests, shut off no_plan.
-    if( defined $num_tests ) {
-        $self->{No_Plan} = 0;
-    }
-    else {
-        $num_tests = $self->current_test;
-    }
+    if ($arg) {
+        $ctx->throw("Number of tests must be a positive integer.  You gave it 
'$arg'")
+            unless $arg =~ /^\+?\d+$/;
 
-    if( $self->{Done_Testing} ) {
-        my($file, $line) = @{$self->{Done_Testing}}[1,2];
-        $self->ok(0, "done_testing() was already called at $file line $line");
-        return;
+        $ctx->_plan($arg);
     }
-
-    $self->{Done_Testing} = [caller];
-
-    if( $self->expected_tests && $num_tests != $self->expected_tests ) {
-        $self->ok(0, "planned to run @{[ $self->expected_tests ]} ".
-                     "but done_testing() expects $num_tests");
+    elsif (!defined $arg) {
+        $ctx->throw("Got an undefined number of tests");
     }
     else {
-        $self->{Expected_Tests} = $num_tests;
+        $ctx->throw("You said to run 0 tests");
     }
 
-    $self->_output_plan($num_tests) unless $self->{Have_Output_Plan};
-
-    $self->{Have_Plan} = 1;
+    return;
+}
 
-    # The wrong number of tests were run
-    $self->is_passing(0) if $self->{Expected_Tests} != $self->{Curr_Test};
+sub done_testing {
+    my ($self, $num_tests) = @_;
 
-    # No tests were run
-    $self->is_passing(0) if $self->{Curr_Test} == 0;
+    my $ctx = $CTX || Test::Stream::Context->peek || $self->ctx();
+    WARN_OF_OVERRIDE(done_testing => $ctx);
 
-    return 1;
+    my $out = $ctx->stream->done_testing($ctx, $num_tests);
+    return $out;
 }
 
+################
+# }}} Planning #
+################
 
-=item B<has_plan>
+#############################
+# {{{ Base Event Producers #
+#############################
 
-  $plan = $Test->has_plan
+sub ok {
+    my $self = shift;
+    my($test, $name) = @_;
 
-Find out whether a plan has been defined. C<$plan> is either C<undef> (no plan
-has been set), C<no_plan> (indeterminate # of tests) or an integer (the number
-of expected tests).
+    my $ctx = $CTX || Test::Stream::Context->peek || $self->ctx();
+    WARN_OF_OVERRIDE(ok => $ctx);
 
-=cut
+    if ($self->{child}) {
+        $self->is_passing(0);
+        $ctx->throw("Cannot run test ($name) with active children");
+    }
 
-sub has_plan {
-    my $self = shift;
+    $ctx->_unwind_ok($test, $name);
+    return $test ? 1 : 0;
+}
 
-    return( $self->{Expected_Tests} ) if $self->{Expected_Tests};
-    return('no_plan') if $self->{No_Plan};
-    return(undef);
+sub BAIL_OUT {
+    my( $self, $reason ) = @_;
+    $self->ctx()->bail($reason);
 }
 
-=item B<skip_all>
+sub skip {
+    my( $self, $why ) = @_;
+    $why ||= '';
+    unoverload_str( \$why );
 
-  $Test->skip_all;
-  $Test->skip_all($reason);
+    my $ctx = $self->ctx();
+    $ctx->set_skip($why);
+    $ctx->ok(1, '');
+    $ctx->set_skip(undef);
+}
 
-Skips all the tests, using the given C<$reason>.  Exits immediately with 0.
+sub todo_skip {
+    my( $self, $why ) = @_;
+    $why ||= '';
+    unoverload_str( \$why );
 
-=cut
+    my $ctx = $self->ctx();
+    $ctx->set_skip($why);
+    $ctx->set_todo($why);
+    $ctx->ok(0, '');
+    $ctx->set_skip(undef);
+    $ctx->set_todo(undef);
+}
 
-sub skip_all {
-    my( $self, $reason ) = @_;
+sub diag {
+    my $self = shift;
+    my $msg = join '', map { defined($_) ? $_ : 'undef' } @_;
 
-    $self->{Skip_All} = $self->parent ? $reason : 1;
+    my $ctx = $CTX || Test::Stream::Context->peek || $self->ctx();
+    WARN_OF_OVERRIDE(diag => $ctx);
 
-    $self->_output_plan(0, "SKIP", $reason) unless $self->no_header;
-    if ( $self->parent ) {
-        die bless {} => 'Test::Builder::Exception';
-    }
-    exit(0);
+    $ctx->_diag($msg);
+    return;
 }
 
-=item B<exported_to>
+sub note {
+    my $self = shift;
+    my $msg = join '', map { defined($_) ? $_ : 'undef' } @_;
 
-  my $pack = $Test->exported_to;
-  $Test->exported_to($pack);
+    my $ctx = $CTX || Test::Stream::Context->peek || $self->ctx();
+    WARN_OF_OVERRIDE(note => $ctx);
 
-Tells Test::Builder what package you exported your functions to.
+    $ctx->_note($msg);
+}
 
-This method isn't terribly useful since modules which share the same
-Test::Builder object might get exported to different packages and only
-the last one will be honored.
+#############################
+# }}} Base Event Producers #
+#############################
 
-=cut
+#######################
+# {{{ Public helpers #
+#######################
 
-sub exported_to {
-    my( $self, $pack ) = @_;
-
-    if( defined $pack ) {
-        $self->{Exported_To} = $pack;
-    }
-    return $self->{Exported_To};
-}
-
-=back
-
-=head2 Running tests
-
-These actually run the tests, analogous to the functions in Test::More.
-
-They all return true if the test passed, false if the test failed.
-
-C<$name> is always optional.
-
-=over 4
-
-=item B<ok>
-
-  $Test->ok($test, $name);
-
-Your basic test.  Pass if C<$test> is true, fail if $test is false.  Just
-like Test::Simple's C<ok()>.
-
-=cut
-
-sub ok {
-    my( $self, $test, $name ) = @_;
-
-    if ( $self->{Child_Name} and not $self->{In_Destroy} ) {
-        $name = 'unnamed test' unless defined $name;
-        $self->is_passing(0);
-        $self->croak("Cannot run test ($name) with active children");
-    }
-    # $test might contain an object which we don't want to accidentally
-    # store, so we turn it into a boolean.
-    $test = $test ? 1 : 0;
-
-    lock $self->{Curr_Test};
-    $self->{Curr_Test}++;
-
-    # In case $name is a string overloaded object, force it to stringify.
-    $self->_unoverload_str( \$name );
-
-    $self->diag(<<"ERR") if defined $name and $name =~ /^[\d\s]+$/;
-    You named your test '$name'.  You shouldn't use numbers for your test 
names.
-    Very confusing.
-ERR
-
-    # Capture the value of $TODO for the rest of this ok() call
-    # so it can more easily be found by other routines.
-    my $todo    = $self->todo();
-    my $in_todo = $self->in_todo;
-    local $self->{Todo} = $todo if $in_todo;
-
-    $self->_unoverload_str( \$todo );
-
-    my $out;
-    my $result = &share( {} );
-
-    unless($test) {
-        $out .= "not ";
-        @$result{ 'ok', 'actual_ok' } = ( ( $self->in_todo ? 1 : 0 ), 0 );
-    }
-    else {
-        @$result{ 'ok', 'actual_ok' } = ( 1, $test );
-    }
-
-    $out .= "ok";
-    $out .= " $self->{Curr_Test}" if $self->use_numbers;
-
-    if( defined $name ) {
-        $name =~ s|#|\\#|g;    # # in a name can confuse Test::Harness.
-        $out .= " - $name";
-        $result->{name} = $name;
-    }
-    else {
-        $result->{name} = '';
-    }
-
-    if( $self->in_todo ) {
-        $out .= " # TODO $todo";
-        $result->{reason} = $todo;
-        $result->{type}   = 'todo';
-    }
-    else {
-        $result->{reason} = '';
-        $result->{type}   = '';
-    }
-
-    $self->{Test_Results}[ $self->{Curr_Test} - 1 ] = $result;
-    $out .= "\n";
-
-    $self->_print($out);
-
-    unless($test) {
-        my $msg = $self->in_todo ? "Failed (TODO)" : "Failed";
-        $self->_print_to_fh( $self->_diag_fh, "\n" ) if $ENV{HARNESS_ACTIVE};
-
-        my( undef, $file, $line ) = $self->caller;
-        if( defined $name ) {
-            $self->diag(qq[  $msg test '$name'\n]);
-            $self->diag(qq[  at $file line $line.\n]);
-        }
-        else {
-            $self->diag(qq[  $msg test at $file line $line.\n]);
-        }
-    }
-
-    $self->is_passing(0) unless $test || $self->in_todo;
-
-    # Check that we haven't violated the plan
-    $self->_check_is_passing_plan();
-
-    return $test ? 1 : 0;
-}
-
-
-# Check that we haven't yet violated the plan and set
-# is_passing() accordingly
-sub _check_is_passing_plan {
-    my $self = shift;
-
-    my $plan = $self->has_plan;
-    return unless defined $plan;        # no plan yet defined
-    return unless $plan !~ /\D/;        # no numeric plan
-    $self->is_passing(0) if $plan < $self->{Curr_Test};
-}
-
-
-sub _unoverload {
-    my $self = shift;
-    my $type = shift;
-
-    $self->_try(sub { require overload; }, die_on_fail => 1);
-
-    foreach my $thing (@_) {
-        if( $self->_is_object($$thing) ) {
-            if( my $string_meth = overload::Method( $$thing, $type ) ) {
-                $$thing = $$thing->$string_meth();
-            }
-        }
-    }
-
-    return;
-}
-
-sub _is_object {
-    my( $self, $thing ) = @_;
-
-    return $self->_try( sub { ref $thing && $thing->isa('UNIVERSAL') } ) ? 1 : 
0;
-}
-
-sub _unoverload_str {
-    my $self = shift;
-
-    return $self->_unoverload( q[""], @_ );
-}
-
-sub _unoverload_num {
-    my $self = shift;
-
-    $self->_unoverload( '0+', @_ );
-
-    for my $val (@_) {
-        next unless $self->_is_dualvar($$val);
-        $$val = $$val + 0;
-    }
-
-    return;
-}
-
-# This is a hack to detect a dualvar such as $!
-sub _is_dualvar {
-    my( $self, $val ) = @_;
-
-    # Objects are not dualvars.
-    return 0 if ref $val;
-
-    no warnings 'numeric';
-    my $numval = $val + 0;
-    return ($numval != 0 and $numval ne $val ? 1 : 0);
-}
-
-=item B<is_eq>
-
-  $Test->is_eq($got, $expected, $name);
-
-Like Test::More's C<is()>.  Checks if C<$got eq $expected>.  This is the
-string version.
-
-C<undef> only ever matches another C<undef>.
-
-=item B<is_num>
-
-  $Test->is_num($got, $expected, $name);
-
-Like Test::More's C<is()>.  Checks if C<$got == $expected>.  This is the
-numeric version.
-
-C<undef> only ever matches another C<undef>.
-
-=cut
-
-sub is_eq {
-    my( $self, $got, $expect, $name ) = @_;
-    local $Level = $Level + 1;
-
-    if( !defined $got || !defined $expect ) {
-        # undef only matches undef and nothing else
-        my $test = !defined $got && !defined $expect;
-
-        $self->ok( $test, $name );
-        $self->_is_diag( $got, 'eq', $expect ) unless $test;
-        return $test;
-    }
-
-    return $self->cmp_ok( $got, 'eq', $expect, $name );
-}
-
-sub is_num {
-    my( $self, $got, $expect, $name ) = @_;
-    local $Level = $Level + 1;
-
-    if( !defined $got || !defined $expect ) {
-        # undef only matches undef and nothing else
-        my $test = !defined $got && !defined $expect;
-
-        $self->ok( $test, $name );
-        $self->_is_diag( $got, '==', $expect ) unless $test;
-        return $test;
-    }
-
-    return $self->cmp_ok( $got, '==', $expect, $name );
-}
-
-sub _diag_fmt {
-    my( $self, $type, $val ) = @_;
-
-    if( defined $$val ) {
-        if( $type eq 'eq' or $type eq 'ne' ) {
-            # quote and force string context
-            $$val = "'$$val'";
-        }
-        else {
-            # force numeric context
-            $self->_unoverload_num($val);
-        }
-    }
-    else {
-        $$val = 'undef';
-    }
-
-    return;
-}
-
-sub _is_diag {
-    my( $self, $got, $type, $expect ) = @_;
-
-    $self->_diag_fmt( $type, $_ ) for \$got, \$expect;
-
-    local $Level = $Level + 1;
-    return $self->diag(<<"DIAGNOSTIC");
-         got: $got
-    expected: $expect
-DIAGNOSTIC
-
-}
-
-sub _isnt_diag {
-    my( $self, $got, $type ) = @_;
-
-    $self->_diag_fmt( $type, \$got );
-
-    local $Level = $Level + 1;
-    return $self->diag(<<"DIAGNOSTIC");
-         got: $got
-    expected: anything else
-DIAGNOSTIC
-}
-
-=item B<isnt_eq>
-
-  $Test->isnt_eq($got, $dont_expect, $name);
-
-Like L<Test::More>'s C<isnt()>.  Checks if C<$got ne $dont_expect>.  This is
-the string version.
-
-=item B<isnt_num>
-
-  $Test->isnt_num($got, $dont_expect, $name);
-
-Like L<Test::More>'s C<isnt()>.  Checks if C<$got ne $dont_expect>.  This is
-the numeric version.
-
-=cut
-
-sub isnt_eq {
-    my( $self, $got, $dont_expect, $name ) = @_;
-    local $Level = $Level + 1;
-
-    if( !defined $got || !defined $dont_expect ) {
-        # undef only matches undef and nothing else
-        my $test = defined $got || defined $dont_expect;
-
-        $self->ok( $test, $name );
-        $self->_isnt_diag( $got, 'ne' ) unless $test;
-        return $test;
-    }
-
-    return $self->cmp_ok( $got, 'ne', $dont_expect, $name );
-}
-
-sub isnt_num {
-    my( $self, $got, $dont_expect, $name ) = @_;
-    local $Level = $Level + 1;
-
-    if( !defined $got || !defined $dont_expect ) {
-        # undef only matches undef and nothing else
-        my $test = defined $got || defined $dont_expect;
-
-        $self->ok( $test, $name );
-        $self->_isnt_diag( $got, '!=' ) unless $test;
-        return $test;
-    }
-
-    return $self->cmp_ok( $got, '!=', $dont_expect, $name );
-}
-
-=item B<like>
-
-  $Test->like($thing, qr/$regex/, $name);
-  $Test->like($thing, '/$regex/', $name);
-
-Like L<Test::More>'s C<like()>.  Checks if $thing matches the given C<$regex>.
-
-=item B<unlike>
-
-  $Test->unlike($thing, qr/$regex/, $name);
-  $Test->unlike($thing, '/$regex/', $name);
-
-Like L<Test::More>'s C<unlike()>.  Checks if $thing B<does not match> the
-given C<$regex>.
-
-=cut
-
-sub like {
-    my( $self, $thing, $regex, $name ) = @_;
-
-    local $Level = $Level + 1;
-    return $self->_regex_ok( $thing, $regex, '=~', $name );
-}
-
-sub unlike {
-    my( $self, $thing, $regex, $name ) = @_;
-
-    local $Level = $Level + 1;
-    return $self->_regex_ok( $thing, $regex, '!~', $name );
-}
-
-=item B<cmp_ok>
-
-  $Test->cmp_ok($thing, $type, $that, $name);
-
-Works just like L<Test::More>'s C<cmp_ok()>.
-
-    $Test->cmp_ok($big_num, '!=', $other_big_num);
-
-=cut
-
-my %numeric_cmps = map { ( $_, 1 ) } ( "<", "<=", ">", ">=", "==", "!=", "<=>" 
);
-
-# Bad, these are not comparison operators. Should we include more?
-my %cmp_ok_bl = map { ( $_, 1 ) } ( "=", "+=", ".=", "x=", "^=", "|=", "||=", 
"&&=", "...");
-
-sub cmp_ok {
-    my( $self, $got, $type, $expect, $name ) = @_;
-
-    if ($cmp_ok_bl{$type}) {
-        $self->croak("$type is not a valid comparison operator in cmp_ok()");
-    }
-
-    my $test;
-    my $error;
-    {
-        ## no critic (BuiltinFunctions::ProhibitStringyEval)
-
-        local( $@, $!, $SIG{__DIE__} );    # isolate eval
-
-        my($pack, $file, $line) = $self->caller();
-
-        # This is so that warnings come out at the caller's level
-        $test = eval qq[
-#line $line "(eval in cmp_ok) $file"
-\$got $type \$expect;
-];
-        $error = $@;
-    }
-    local $Level = $Level + 1;
-    my $ok = $self->ok( $test, $name );
-
-    # Treat overloaded objects as numbers if we're asked to do a
-    # numeric comparison.
-    my $unoverload
-      = $numeric_cmps{$type}
-      ? '_unoverload_num'
-      : '_unoverload_str';
-
-    $self->diag(<<"END") if $error;
-An error occurred while using $type:
-------------------------------------
-$error
-------------------------------------
-END
-
-    unless($ok) {
-        $self->$unoverload( \$got, \$expect );
-
-        if( $type =~ /^(eq|==)$/ ) {
-            $self->_is_diag( $got, $type, $expect );
-        }
-        elsif( $type =~ /^(ne|!=)$/ ) {
-            $self->_isnt_diag( $got, $type );
-        }
-        else {
-            $self->_cmp_diag( $got, $type, $expect );
-        }
-    }
-    return $ok;
-}
-
-sub _cmp_diag {
-    my( $self, $got, $type, $expect ) = @_;
-
-    $got    = defined $got    ? "'$got'"    : 'undef';
-    $expect = defined $expect ? "'$expect'" : 'undef';
-
-    local $Level = $Level + 1;
-    return $self->diag(<<"DIAGNOSTIC");
-    $got
-        $type
-    $expect
-DIAGNOSTIC
-}
-
-sub _caller_context {
-    my $self = shift;
-
-    my( $pack, $file, $line ) = $self->caller(1);
-
-    my $code = '';
-    $code .= "#line $line $file\n" if defined $file and defined $line;
-
-    return $code;
-}
-
-=back
-
-
-=head2 Other Testing Methods
-
-These are methods which are used in the course of writing a test but are not 
themselves tests.
-
-=over 4
-
-=item B<BAIL_OUT>
-
-    $Test->BAIL_OUT($reason);
-
-Indicates to the L<Test::Harness> that things are going so badly all
-testing should terminate.  This includes running any additional test
-scripts.
-
-It will exit with 255.
-
-=cut
-
-sub BAIL_OUT {
-    my( $self, $reason ) = @_;
**** PATCH TRUNCATED AT 2000 LINES -- 23038 NOT SHOWN ****

--
Perl5 Master Repository

Reply via email to