In perl.git, the branch blead has been updated <http://perl5.git.perl.org/perl.git/commitdiff/c1777a2078b09e46c508079c52cd1a83135a2fb6?hp=ac681bb324daa37001a1a03002e1d02efbaf7fcd>
- Log ----------------------------------------------------------------- commit c1777a2078b09e46c508079c52cd1a83135a2fb6 Author: Chris 'BinGOs' Williams <[email protected]> Date: Fri Nov 7 12:13:25 2014 +0000 Update Test-Harness to CPAN version 3.34 [DELTA] 3.34 2014-11-02 - Enable printing CPU times spent per test (Jarkko Hietaniemi) M Porting/Maintainers.pl M cpan/Test-Harness/lib/App/Prove.pm M cpan/Test-Harness/lib/App/Prove/State.pm M cpan/Test-Harness/lib/App/Prove/State/Result.pm M cpan/Test-Harness/lib/App/Prove/State/Result/Test.pm M cpan/Test-Harness/lib/TAP/Base.pm M cpan/Test-Harness/lib/TAP/Formatter/Base.pm M cpan/Test-Harness/lib/TAP/Formatter/Color.pm M cpan/Test-Harness/lib/TAP/Formatter/Console.pm M cpan/Test-Harness/lib/TAP/Formatter/Console/ParallelSession.pm M cpan/Test-Harness/lib/TAP/Formatter/Console/Session.pm M cpan/Test-Harness/lib/TAP/Formatter/File.pm M cpan/Test-Harness/lib/TAP/Formatter/File/Session.pm M cpan/Test-Harness/lib/TAP/Formatter/Session.pm M cpan/Test-Harness/lib/TAP/Harness.pm M cpan/Test-Harness/lib/TAP/Harness/Env.pm M cpan/Test-Harness/lib/TAP/Object.pm M cpan/Test-Harness/lib/TAP/Parser.pm M cpan/Test-Harness/lib/TAP/Parser/Aggregator.pm M cpan/Test-Harness/lib/TAP/Parser/Grammar.pm M cpan/Test-Harness/lib/TAP/Parser/Iterator.pm M cpan/Test-Harness/lib/TAP/Parser/Iterator/Array.pm M cpan/Test-Harness/lib/TAP/Parser/Iterator/Process.pm M cpan/Test-Harness/lib/TAP/Parser/Iterator/Stream.pm M cpan/Test-Harness/lib/TAP/Parser/IteratorFactory.pm M cpan/Test-Harness/lib/TAP/Parser/Multiplexer.pm M cpan/Test-Harness/lib/TAP/Parser/Result.pm M cpan/Test-Harness/lib/TAP/Parser/Result/Bailout.pm M cpan/Test-Harness/lib/TAP/Parser/Result/Comment.pm M cpan/Test-Harness/lib/TAP/Parser/Result/Plan.pm M cpan/Test-Harness/lib/TAP/Parser/Result/Pragma.pm M cpan/Test-Harness/lib/TAP/Parser/Result/Test.pm M cpan/Test-Harness/lib/TAP/Parser/Result/Unknown.pm M cpan/Test-Harness/lib/TAP/Parser/Result/Version.pm M cpan/Test-Harness/lib/TAP/Parser/Result/YAML.pm M cpan/Test-Harness/lib/TAP/Parser/ResultFactory.pm M cpan/Test-Harness/lib/TAP/Parser/Scheduler.pm M cpan/Test-Harness/lib/TAP/Parser/Scheduler/Job.pm M cpan/Test-Harness/lib/TAP/Parser/Scheduler/Spinner.pm M cpan/Test-Harness/lib/TAP/Parser/Source.pm M cpan/Test-Harness/lib/TAP/Parser/SourceHandler.pm M cpan/Test-Harness/lib/TAP/Parser/SourceHandler/Executable.pm M cpan/Test-Harness/lib/TAP/Parser/SourceHandler/File.pm M cpan/Test-Harness/lib/TAP/Parser/SourceHandler/Handle.pm M cpan/Test-Harness/lib/TAP/Parser/SourceHandler/Perl.pm M cpan/Test-Harness/lib/TAP/Parser/SourceHandler/RawTAP.pm M cpan/Test-Harness/lib/TAP/Parser/YAMLish/Reader.pm M cpan/Test-Harness/lib/TAP/Parser/YAMLish/Writer.pm M cpan/Test-Harness/lib/Test/Harness.pm M cpan/Test-Harness/t/taint.t commit 3709f1d4bd0179938a418d9337449fdf20a783bc Author: Chris 'BinGOs' Williams <[email protected]> Date: Fri Nov 7 11:41:49 2014 +0000 Update Test-Simple to CPAN version 1.001009 M MANIFEST M Makefile.SH M Porting/Maintainers.pl M cpan/Test-Simple/lib/Test/Builder.pm M cpan/Test-Simple/lib/Test/Builder/Module.pm M cpan/Test-Simple/lib/Test/Builder/Tester.pm M cpan/Test-Simple/lib/Test/Builder/Tester/Color.pm D cpan/Test-Simple/lib/Test/FAQ.pod M cpan/Test-Simple/lib/Test/More.pm D cpan/Test-Simple/lib/Test/More/DeepCheck.pm D cpan/Test-Simple/lib/Test/More/DeepCheck/Strict.pm D cpan/Test-Simple/lib/Test/More/DeepCheck/Tolerant.pm D cpan/Test-Simple/lib/Test/More/Tools.pm D cpan/Test-Simple/lib/Test/MostlyLike.pm M cpan/Test-Simple/lib/Test/Simple.pm D cpan/Test-Simple/lib/Test/Stream.pm D cpan/Test-Simple/lib/Test/Stream/Architecture.pod D cpan/Test-Simple/lib/Test/Stream/ArrayBase.pm D cpan/Test-Simple/lib/Test/Stream/ArrayBase/Meta.pm D cpan/Test-Simple/lib/Test/Stream/Carp.pm D cpan/Test-Simple/lib/Test/Stream/Context.pm D cpan/Test-Simple/lib/Test/Stream/Event.pm D cpan/Test-Simple/lib/Test/Stream/Event/Bail.pm D cpan/Test-Simple/lib/Test/Stream/Event/Child.pm D cpan/Test-Simple/lib/Test/Stream/Event/Diag.pm D cpan/Test-Simple/lib/Test/Stream/Event/Finish.pm D cpan/Test-Simple/lib/Test/Stream/Event/Note.pm D cpan/Test-Simple/lib/Test/Stream/Event/Ok.pm D cpan/Test-Simple/lib/Test/Stream/Event/Plan.pm D cpan/Test-Simple/lib/Test/Stream/Event/Subtest.pm D cpan/Test-Simple/lib/Test/Stream/ExitMagic.pm D cpan/Test-Simple/lib/Test/Stream/ExitMagic/Context.pm D cpan/Test-Simple/lib/Test/Stream/Exporter.pm D cpan/Test-Simple/lib/Test/Stream/Exporter/Meta.pm D cpan/Test-Simple/lib/Test/Stream/IOSets.pm D cpan/Test-Simple/lib/Test/Stream/Meta.pm D cpan/Test-Simple/lib/Test/Stream/PackageUtil.pm D cpan/Test-Simple/lib/Test/Stream/Tester.pm D cpan/Test-Simple/lib/Test/Stream/Tester/Checks.pm D cpan/Test-Simple/lib/Test/Stream/Tester/Checks/Event.pm D cpan/Test-Simple/lib/Test/Stream/Tester/Events.pm D cpan/Test-Simple/lib/Test/Stream/Tester/Events/Event.pm D cpan/Test-Simple/lib/Test/Stream/Tester/Grab.pm D cpan/Test-Simple/lib/Test/Stream/Threads.pm D cpan/Test-Simple/lib/Test/Stream/Toolset.pm D cpan/Test-Simple/lib/Test/Stream/Util.pm D cpan/Test-Simple/lib/Test/Tester.pm D cpan/Test-Simple/lib/Test/Tester/Capture.pm D cpan/Test-Simple/lib/Test/Tutorial/WritingTests.pod D cpan/Test-Simple/lib/Test/Tutorial/WritingTools.pod D cpan/Test-Simple/lib/Test/use/ok.pm D cpan/Test-Simple/lib/ok.pm A cpan/Test-Simple/t/478-cmp_ok_hash.t A cpan/Test-Simple/t/BEGIN_require_ok.t A cpan/Test-Simple/t/BEGIN_use_ok.t D cpan/Test-Simple/t/Behavior/388-threadedsubtest.load D cpan/Test-Simple/t/Behavior/388-threadedsubtest.t D cpan/Test-Simple/t/Behavior/MonkeyPatching_diag.t D cpan/Test-Simple/t/Behavior/MonkeyPatching_done_testing.t D cpan/Test-Simple/t/Behavior/MonkeyPatching_note.t D cpan/Test-Simple/t/Behavior/MonkeyPatching_ok.t D cpan/Test-Simple/t/Behavior/MonkeyPatching_plan.t D cpan/Test-Simple/t/Behavior/Munge.t D cpan/Test-Simple/t/Behavior/NotTB15.t D cpan/Test-Simple/t/Behavior/Tester2_subtest.t D cpan/Test-Simple/t/Behavior/cmp_ok_xor.t D cpan/Test-Simple/t/Behavior/encoding_test.t D cpan/Test-Simple/t/Behavior/fork_new_end.t D cpan/Test-Simple/t/Behavior/skip_all_in_subtest.load D cpan/Test-Simple/t/Behavior/skip_all_in_subtest.t D cpan/Test-Simple/t/Behavior/threads_with_taint_mode.t D cpan/Test-Simple/t/Behavior/todo.t A cpan/Test-Simple/t/Builder/Builder.t A cpan/Test-Simple/t/Builder/carp.t A cpan/Test-Simple/t/Builder/create.t A cpan/Test-Simple/t/Builder/current_test.t A cpan/Test-Simple/t/Builder/current_test_without_plan.t A cpan/Test-Simple/t/Builder/details.t A cpan/Test-Simple/t/Builder/done_testing.t A cpan/Test-Simple/t/Builder/done_testing_double.t A cpan/Test-Simple/t/Builder/done_testing_plan_mismatch.t A cpan/Test-Simple/t/Builder/done_testing_with_no_plan.t A cpan/Test-Simple/t/Builder/done_testing_with_number.t A cpan/Test-Simple/t/Builder/done_testing_with_plan.t A cpan/Test-Simple/t/Builder/fork_with_new_stdout.t A cpan/Test-Simple/t/Builder/has_plan.t A cpan/Test-Simple/t/Builder/has_plan2.t A cpan/Test-Simple/t/Builder/is_fh.t A cpan/Test-Simple/t/Builder/is_passing.t A cpan/Test-Simple/t/Builder/maybe_regex.t A cpan/Test-Simple/t/Builder/no_diag.t A cpan/Test-Simple/t/Builder/no_ending.t A cpan/Test-Simple/t/Builder/no_header.t A cpan/Test-Simple/t/Builder/no_plan_at_all.t A cpan/Test-Simple/t/Builder/ok_obj.t A cpan/Test-Simple/t/Builder/output.t A cpan/Test-Simple/t/Builder/reset.t A cpan/Test-Simple/t/Builder/try.t D cpan/Test-Simple/t/Legacy/BEGIN_require_ok.t D cpan/Test-Simple/t/Legacy/BEGIN_use_ok.t D cpan/Test-Simple/t/Legacy/Builder/Builder.t D cpan/Test-Simple/t/Legacy/Builder/carp.t D cpan/Test-Simple/t/Legacy/Builder/create.t D cpan/Test-Simple/t/Legacy/Builder/current_test.t D cpan/Test-Simple/t/Legacy/Builder/current_test_without_plan.t D cpan/Test-Simple/t/Legacy/Builder/details.t D cpan/Test-Simple/t/Legacy/Builder/done_testing.t D cpan/Test-Simple/t/Legacy/Builder/done_testing_double.t D cpan/Test-Simple/t/Legacy/Builder/done_testing_plan_mismatch.t D cpan/Test-Simple/t/Legacy/Builder/done_testing_with_no_plan.t D cpan/Test-Simple/t/Legacy/Builder/done_testing_with_number.t D cpan/Test-Simple/t/Legacy/Builder/done_testing_with_plan.t D cpan/Test-Simple/t/Legacy/Builder/fork_with_new_stdout.t D cpan/Test-Simple/t/Legacy/Builder/has_plan.t D cpan/Test-Simple/t/Legacy/Builder/has_plan2.t D cpan/Test-Simple/t/Legacy/Builder/is_fh.t D cpan/Test-Simple/t/Legacy/Builder/is_passing.t D cpan/Test-Simple/t/Legacy/Builder/maybe_regex.t D cpan/Test-Simple/t/Legacy/Builder/no_diag.t D cpan/Test-Simple/t/Legacy/Builder/no_ending.t D cpan/Test-Simple/t/Legacy/Builder/no_header.t D cpan/Test-Simple/t/Legacy/Builder/no_plan_at_all.t D cpan/Test-Simple/t/Legacy/Builder/ok_obj.t D cpan/Test-Simple/t/Legacy/Builder/output.t D cpan/Test-Simple/t/Legacy/Builder/reset.t D cpan/Test-Simple/t/Legacy/Builder/reset_outputs.t D cpan/Test-Simple/t/Legacy/More.t D cpan/Test-Simple/t/Legacy/PerlIO.t D cpan/Test-Simple/t/Legacy/Simple/load.t D cpan/Test-Simple/t/Legacy/TestTester/auto.t D cpan/Test-Simple/t/Legacy/TestTester/check_tests.t D cpan/Test-Simple/t/Legacy/TestTester/depth.t D cpan/Test-Simple/t/Legacy/TestTester/is_bug.t D cpan/Test-Simple/t/Legacy/TestTester/run_test.t D cpan/Test-Simple/t/Legacy/Tester/tbt_01basic.t D cpan/Test-Simple/t/Legacy/Tester/tbt_02fhrestore.t D cpan/Test-Simple/t/Legacy/Tester/tbt_03die.t D cpan/Test-Simple/t/Legacy/Tester/tbt_04line_num.t D cpan/Test-Simple/t/Legacy/Tester/tbt_05faildiag.t D cpan/Test-Simple/t/Legacy/Tester/tbt_06errormess.t D cpan/Test-Simple/t/Legacy/Tester/tbt_07args.t D cpan/Test-Simple/t/Legacy/Tester/tbt_08subtest.t D cpan/Test-Simple/t/Legacy/Tester/tbt_09do.t D cpan/Test-Simple/t/Legacy/Tester/tbt_09do_script.pl D cpan/Test-Simple/t/Legacy/bad_plan.t D cpan/Test-Simple/t/Legacy/bail_out.t D cpan/Test-Simple/t/Legacy/buffer.t D cpan/Test-Simple/t/Legacy/c_flag.t D cpan/Test-Simple/t/Legacy/circular_data.t D cpan/Test-Simple/t/Legacy/cmp_ok.t D cpan/Test-Simple/t/Legacy/dependents.t D cpan/Test-Simple/t/Legacy/diag.t D cpan/Test-Simple/t/Legacy/died.t D cpan/Test-Simple/t/Legacy/dont_overwrite_die_handler.t D cpan/Test-Simple/t/Legacy/eq_set.t D cpan/Test-Simple/t/Legacy/exit.t D cpan/Test-Simple/t/Legacy/explain.t D cpan/Test-Simple/t/Legacy/extra.t D cpan/Test-Simple/t/Legacy/extra_one.t D cpan/Test-Simple/t/Legacy/fail-like.t D cpan/Test-Simple/t/Legacy/fail-more.t D cpan/Test-Simple/t/Legacy/fail.t D cpan/Test-Simple/t/Legacy/fail_one.t D cpan/Test-Simple/t/Legacy/filehandles.t D cpan/Test-Simple/t/Legacy/fork.t D cpan/Test-Simple/t/Legacy/fork_in_subtest.t D cpan/Test-Simple/t/Legacy/harness_active.t D cpan/Test-Simple/t/Legacy/import.t D cpan/Test-Simple/t/Legacy/is_deeply_dne_bug.t D cpan/Test-Simple/t/Legacy/is_deeply_fail.t D cpan/Test-Simple/t/Legacy/is_deeply_with_threads.t D cpan/Test-Simple/t/Legacy/missing.t D cpan/Test-Simple/t/Legacy/new_ok.t D cpan/Test-Simple/t/Legacy/no_plan.t D cpan/Test-Simple/t/Legacy/no_tests.t D cpan/Test-Simple/t/Legacy/note.t D cpan/Test-Simple/t/Legacy/overload.t D cpan/Test-Simple/t/Legacy/overload_threads.t D cpan/Test-Simple/t/Legacy/plan.t D cpan/Test-Simple/t/Legacy/plan_bad.t D cpan/Test-Simple/t/Legacy/plan_is_noplan.t D cpan/Test-Simple/t/Legacy/plan_no_plan.t D cpan/Test-Simple/t/Legacy/plan_shouldnt_import.t D cpan/Test-Simple/t/Legacy/plan_skip_all.t D cpan/Test-Simple/t/Legacy/pod.t D cpan/Test-Simple/t/Legacy/require_ok.t D cpan/Test-Simple/t/Legacy/ribasushi_diag.t D cpan/Test-Simple/t/Legacy/ribasushi_threads.t D cpan/Test-Simple/t/Legacy/ribasushi_threads2.t D cpan/Test-Simple/t/Legacy/simple.t D cpan/Test-Simple/t/Legacy/skip.t D cpan/Test-Simple/t/Legacy/skipall.t D cpan/Test-Simple/t/Legacy/strays.t D cpan/Test-Simple/t/Legacy/subtest/args.t D cpan/Test-Simple/t/Legacy/subtest/bail_out.t D cpan/Test-Simple/t/Legacy/subtest/basic.t D cpan/Test-Simple/t/Legacy/subtest/die.t D cpan/Test-Simple/t/Legacy/subtest/do.t D cpan/Test-Simple/t/Legacy/subtest/exceptions.t D cpan/Test-Simple/t/Legacy/subtest/for_do_t.test D cpan/Test-Simple/t/Legacy/subtest/fork.t D cpan/Test-Simple/t/Legacy/subtest/implicit_done.t D cpan/Test-Simple/t/Legacy/subtest/line_numbers.t D cpan/Test-Simple/t/Legacy/subtest/plan.t D cpan/Test-Simple/t/Legacy/subtest/predicate.t D cpan/Test-Simple/t/Legacy/subtest/singleton.t D cpan/Test-Simple/t/Legacy/subtest/threads.t D cpan/Test-Simple/t/Legacy/subtest/todo.t D cpan/Test-Simple/t/Legacy/subtest/wstat.t D cpan/Test-Simple/t/Legacy/tbm_doesnt_set_exported_to.t D cpan/Test-Simple/t/Legacy/test_use_ok.t D cpan/Test-Simple/t/Legacy/thread_taint.t D cpan/Test-Simple/t/Legacy/threads.t D cpan/Test-Simple/t/Legacy/todo.t D cpan/Test-Simple/t/Legacy/undef.t D cpan/Test-Simple/t/Legacy/use_ok.t D cpan/Test-Simple/t/Legacy/useing.t D cpan/Test-Simple/t/Legacy/utf8.t D cpan/Test-Simple/t/Legacy/versions.t A cpan/Test-Simple/t/More.t A cpan/Test-Simple/t/Simple/load.t D cpan/Test-Simple/t/Test-Builder.t D cpan/Test-Simple/t/Test-More-DeepCheck.t D cpan/Test-Simple/t/Test-More.t D cpan/Test-Simple/t/Test-MostlyLike.t D cpan/Test-Simple/t/Test-Simple.t D cpan/Test-Simple/t/Test-Stream-ArrayBase-Meta.t D cpan/Test-Simple/t/Test-Stream-ArrayBase.t D cpan/Test-Simple/t/Test-Stream-Carp.t D cpan/Test-Simple/t/Test-Stream-Event-Diag.t D cpan/Test-Simple/t/Test-Stream-Event-Finish.t D cpan/Test-Simple/t/Test-Stream-Event-Note.t D cpan/Test-Simple/t/Test-Stream-Event.t D cpan/Test-Simple/t/Test-Stream-ExitMagic-Context.t D cpan/Test-Simple/t/Test-Stream-Exporter-Meta.t D cpan/Test-Simple/t/Test-Stream-Exporter.t D cpan/Test-Simple/t/Test-Stream-IOSets.t D cpan/Test-Simple/t/Test-Stream-Meta.t D cpan/Test-Simple/t/Test-Stream-PackageUtil.t D cpan/Test-Simple/t/Test-Stream-Tester-Grab.t D cpan/Test-Simple/t/Test-Stream-Tester.t D cpan/Test-Simple/t/Test-Stream-Toolset.t D cpan/Test-Simple/t/Test-Stream-Util.t D cpan/Test-Simple/t/Test-Tester-Capture.t D cpan/Test-Simple/t/Test-Tester.t D cpan/Test-Simple/t/Test-use-ok.t A cpan/Test-Simple/t/Tester/tbt_01basic.t A cpan/Test-Simple/t/Tester/tbt_02fhrestore.t A cpan/Test-Simple/t/Tester/tbt_03die.t A cpan/Test-Simple/t/Tester/tbt_04line_num.t A cpan/Test-Simple/t/Tester/tbt_05faildiag.t A cpan/Test-Simple/t/Tester/tbt_06errormess.t A cpan/Test-Simple/t/Tester/tbt_07args.t A cpan/Test-Simple/t/Tester/tbt_08subtest.t A cpan/Test-Simple/t/Tester/tbt_09do.t A cpan/Test-Simple/t/Tester/tbt_09do_script.pl A cpan/Test-Simple/t/bad_plan.t A cpan/Test-Simple/t/bail_out.t A cpan/Test-Simple/t/buffer.t A cpan/Test-Simple/t/c_flag.t A cpan/Test-Simple/t/circular_data.t A cpan/Test-Simple/t/cmp_ok.t A cpan/Test-Simple/t/dependents.t A cpan/Test-Simple/t/diag.t A cpan/Test-Simple/t/died.t A cpan/Test-Simple/t/dont_overwrite_die_handler.t A cpan/Test-Simple/t/eq_set.t A cpan/Test-Simple/t/exit.t A cpan/Test-Simple/t/explain.t A cpan/Test-Simple/t/extra.t A cpan/Test-Simple/t/extra_one.t A cpan/Test-Simple/t/fail-like.t A cpan/Test-Simple/t/fail-more.t A cpan/Test-Simple/t/fail.t A cpan/Test-Simple/t/fail_one.t A cpan/Test-Simple/t/filehandles.t A cpan/Test-Simple/t/fork.t A cpan/Test-Simple/t/harness_active.t A cpan/Test-Simple/t/import.t A cpan/Test-Simple/t/is_deeply_dne_bug.t A cpan/Test-Simple/t/is_deeply_fail.t A cpan/Test-Simple/t/is_deeply_with_threads.t D cpan/Test-Simple/t/lib/MyTest.pm D cpan/Test-Simple/t/lib/SmallTest.pm A cpan/Test-Simple/t/missing.t A cpan/Test-Simple/t/new_ok.t A cpan/Test-Simple/t/no_plan.t A cpan/Test-Simple/t/no_tests.t A cpan/Test-Simple/t/note.t A cpan/Test-Simple/t/overload.t A cpan/Test-Simple/t/overload_threads.t A cpan/Test-Simple/t/plan.t A cpan/Test-Simple/t/plan_bad.t A cpan/Test-Simple/t/plan_is_noplan.t A cpan/Test-Simple/t/plan_no_plan.t A cpan/Test-Simple/t/plan_shouldnt_import.t A cpan/Test-Simple/t/plan_skip_all.t A cpan/Test-Simple/t/require_ok.t A cpan/Test-Simple/t/simple.t A cpan/Test-Simple/t/skip.t A cpan/Test-Simple/t/skipall.t A cpan/Test-Simple/t/subtest/args.t A cpan/Test-Simple/t/subtest/bail_out.t A cpan/Test-Simple/t/subtest/basic.t A cpan/Test-Simple/t/subtest/die.t A cpan/Test-Simple/t/subtest/do.t A cpan/Test-Simple/t/subtest/exceptions.t A cpan/Test-Simple/t/subtest/for_do_t.test A cpan/Test-Simple/t/subtest/fork.t A cpan/Test-Simple/t/subtest/implicit_done.t A cpan/Test-Simple/t/subtest/line_numbers.t A cpan/Test-Simple/t/subtest/plan.t A cpan/Test-Simple/t/subtest/predicate.t A cpan/Test-Simple/t/subtest/singleton.t A cpan/Test-Simple/t/subtest/threads.t A cpan/Test-Simple/t/subtest/todo.t A cpan/Test-Simple/t/subtest/wstat.t A cpan/Test-Simple/t/tbm_doesnt_set_exported_to.t A cpan/Test-Simple/t/thread_taint.t A cpan/Test-Simple/t/threads.t A cpan/Test-Simple/t/todo.t A cpan/Test-Simple/t/undef.t A cpan/Test-Simple/t/use_ok.t A cpan/Test-Simple/t/useing.t A cpan/Test-Simple/t/utf8.t A cpan/Test-Simple/t/versions.t M lib/.gitignore commit 44f85850d172082a150f79f5a9bdcfe9d9c59d84 Author: Chris 'BinGOs' Williams <[email protected]> Date: Fri Nov 7 11:37:34 2014 +0000 Update Encode to CPAN version 2.64 [DELTA] $Revision: 2.64 $ $Date: 2014/10/29 15:37:54 $ ! t/utf8warnings.t MANIFEST Retouch pull #26 so it works with perl < 5.14 ! Encode.pm + t/utf8warnings.t Pulled: Catch and re-issue utf8 warnings at a higher level https://github.com/dankogai/p5-encode/pull/26 + Encode.xs Pulled: Validate continuations in the incremental UTF-X decoder https://github.com/dankogai/p5-encode/pull/25 M MANIFEST M Porting/Maintainers.pl M cpan/Encode/Encode.pm M cpan/Encode/Encode.xs A cpan/Encode/t/utf8warnings.t ----------------------------------------------------------------------- Summary of changes: MANIFEST | 318 +- Makefile.SH | 35 +- Porting/Maintainers.pl | 7 +- cpan/Encode/Encode.pm | 34 +- cpan/Encode/Encode.xs | 12 +- cpan/Encode/t/utf8warnings.t | 66 + cpan/Test-Harness/lib/App/Prove.pm | 4 +- cpan/Test-Harness/lib/App/Prove/State.pm | 4 +- cpan/Test-Harness/lib/App/Prove/State/Result.pm | 4 +- .../lib/App/Prove/State/Result/Test.pm | 4 +- cpan/Test-Harness/lib/TAP/Base.pm | 13 +- cpan/Test-Harness/lib/TAP/Formatter/Base.pm | 4 +- cpan/Test-Harness/lib/TAP/Formatter/Color.pm | 4 +- cpan/Test-Harness/lib/TAP/Formatter/Console.pm | 4 +- .../lib/TAP/Formatter/Console/ParallelSession.pm | 4 +- .../lib/TAP/Formatter/Console/Session.pm | 18 +- cpan/Test-Harness/lib/TAP/Formatter/File.pm | 4 +- .../Test-Harness/lib/TAP/Formatter/File/Session.pm | 18 +- cpan/Test-Harness/lib/TAP/Formatter/Session.pm | 38 +- cpan/Test-Harness/lib/TAP/Harness.pm | 4 +- cpan/Test-Harness/lib/TAP/Harness/Env.pm | 4 +- cpan/Test-Harness/lib/TAP/Object.pm | 4 +- cpan/Test-Harness/lib/TAP/Parser.pm | 21 +- cpan/Test-Harness/lib/TAP/Parser/Aggregator.pm | 4 +- cpan/Test-Harness/lib/TAP/Parser/Grammar.pm | 4 +- cpan/Test-Harness/lib/TAP/Parser/Iterator.pm | 4 +- cpan/Test-Harness/lib/TAP/Parser/Iterator/Array.pm | 4 +- .../lib/TAP/Parser/Iterator/Process.pm | 4 +- .../Test-Harness/lib/TAP/Parser/Iterator/Stream.pm | 4 +- .../Test-Harness/lib/TAP/Parser/IteratorFactory.pm | 4 +- cpan/Test-Harness/lib/TAP/Parser/Multiplexer.pm | 4 +- cpan/Test-Harness/lib/TAP/Parser/Result.pm | 4 +- cpan/Test-Harness/lib/TAP/Parser/Result/Bailout.pm | 4 +- cpan/Test-Harness/lib/TAP/Parser/Result/Comment.pm | 4 +- cpan/Test-Harness/lib/TAP/Parser/Result/Plan.pm | 4 +- cpan/Test-Harness/lib/TAP/Parser/Result/Pragma.pm | 4 +- cpan/Test-Harness/lib/TAP/Parser/Result/Test.pm | 4 +- cpan/Test-Harness/lib/TAP/Parser/Result/Unknown.pm | 4 +- cpan/Test-Harness/lib/TAP/Parser/Result/Version.pm | 4 +- cpan/Test-Harness/lib/TAP/Parser/Result/YAML.pm | 4 +- cpan/Test-Harness/lib/TAP/Parser/ResultFactory.pm | 4 +- cpan/Test-Harness/lib/TAP/Parser/Scheduler.pm | 4 +- cpan/Test-Harness/lib/TAP/Parser/Scheduler/Job.pm | 4 +- .../lib/TAP/Parser/Scheduler/Spinner.pm | 4 +- cpan/Test-Harness/lib/TAP/Parser/Source.pm | 4 +- cpan/Test-Harness/lib/TAP/Parser/SourceHandler.pm | 4 +- .../lib/TAP/Parser/SourceHandler/Executable.pm | 4 +- .../lib/TAP/Parser/SourceHandler/File.pm | 4 +- .../lib/TAP/Parser/SourceHandler/Handle.pm | 4 +- .../lib/TAP/Parser/SourceHandler/Perl.pm | 4 +- .../lib/TAP/Parser/SourceHandler/RawTAP.pm | 4 +- cpan/Test-Harness/lib/TAP/Parser/YAMLish/Reader.pm | 4 +- cpan/Test-Harness/lib/TAP/Parser/YAMLish/Writer.pm | 4 +- cpan/Test-Harness/lib/Test/Harness.pm | 4 +- cpan/Test-Harness/t/taint.t | 2 +- cpan/Test-Simple/lib/Test/Builder.pm | 3060 ++++++++++++++------ cpan/Test-Simple/lib/Test/Builder/Module.pm | 129 +- cpan/Test-Simple/lib/Test/Builder/Tester.pm | 238 +- cpan/Test-Simple/lib/Test/Builder/Tester/Color.pm | 106 +- cpan/Test-Simple/lib/Test/FAQ.pod | 477 --- cpan/Test-Simple/lib/Test/More.pm | 1603 +++++----- 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 | 1101 ------- cpan/Test-Simple/lib/Test/Stream/Architecture.pod | 444 --- cpan/Test-Simple/lib/Test/Stream/ArrayBase.pm | 371 --- cpan/Test-Simple/lib/Test/Stream/ArrayBase/Meta.pm | 282 -- 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 | 273 -- cpan/Test-Simple/lib/Test/Stream/ExitMagic.pm | 259 -- .../lib/Test/Stream/ExitMagic/Context.pm | 131 - cpan/Test-Simple/lib/Test/Stream/Exporter.pm | 327 --- cpan/Test-Simple/lib/Test/Stream/Exporter/Meta.pm | 216 -- 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 | 770 ----- 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 | 152 - cpan/Test-Simple/lib/ok.pm | 143 - cpan/Test-Simple/t/478-cmp_ok_hash.t | 41 + cpan/Test-Simple/t/{Legacy => }/BEGIN_require_ok.t | 0 cpan/Test-Simple/t/{Legacy => }/BEGIN_use_ok.t | 0 .../t/Behavior/388-threadedsubtest.load | 3 - cpan/Test-Simple/t/Behavior/388-threadedsubtest.t | 38 - 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/skip_all_in_subtest.load | 10 - cpan/Test-Simple/t/Behavior/skip_all_in_subtest.t | 16 - .../t/Behavior/threads_with_taint_mode.t | 47 - cpan/Test-Simple/t/Behavior/todo.t | 43 - 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 +- cpan/Test-Simple/t/Builder/fork_with_new_stdout.t | 54 + 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/Builder/try.t | 42 + .../t/Legacy/Builder/fork_with_new_stdout.t | 60 - cpan/Test-Simple/t/Legacy/Builder/reset_outputs.t | 35 - cpan/Test-Simple/t/Legacy/PerlIO.t | 11 - 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 - cpan/Test-Simple/t/Legacy/fork_in_subtest.t | 45 - cpan/Test-Simple/t/Legacy/pod.t | 7 - 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/strays.t | 27 - cpan/Test-Simple/t/Legacy/test_use_ok.t | 40 - cpan/Test-Simple/t/Legacy/threads.t | 47 - cpan/Test-Simple/t/Legacy/versions.t | 50 - cpan/Test-Simple/t/{Legacy => }/More.t | 7 +- cpan/Test-Simple/t/{Legacy => }/Simple/load.t | 0 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 | 130 - 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 - .../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 | 9 +- 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 | 9 +- 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/lib/MyTest.pm | 15 - cpan/Test-Simple/t/lib/SmallTest.pm | 35 - 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 => }/require_ok.t | 9 +- cpan/Test-Simple/t/{Legacy => }/simple.t | 0 cpan/Test-Simple/t/{Legacy => }/skip.t | 14 +- cpan/Test-Simple/t/{Legacy => }/skipall.t | 2 +- 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 | 15 +- .../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 => }/thread_taint.t | 0 cpan/Test-Simple/t/threads.t | 33 + 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/versions.t | 28 + lib/.gitignore | 1 - 275 files changed, 3925 insertions(+), 18658 deletions(-) create mode 100644 cpan/Encode/t/utf8warnings.t delete mode 100644 cpan/Test-Simple/lib/Test/FAQ.pod delete mode 100644 cpan/Test-Simple/lib/Test/More/DeepCheck.pm delete mode 100644 cpan/Test-Simple/lib/Test/More/DeepCheck/Strict.pm delete mode 100644 cpan/Test-Simple/lib/Test/More/DeepCheck/Tolerant.pm delete mode 100644 cpan/Test-Simple/lib/Test/More/Tools.pm delete mode 100644 cpan/Test-Simple/lib/Test/MostlyLike.pm delete mode 100644 cpan/Test-Simple/lib/Test/Stream.pm delete mode 100644 cpan/Test-Simple/lib/Test/Stream/Architecture.pod delete mode 100644 cpan/Test-Simple/lib/Test/Stream/ArrayBase.pm delete mode 100644 cpan/Test-Simple/lib/Test/Stream/ArrayBase/Meta.pm delete mode 100644 cpan/Test-Simple/lib/Test/Stream/Carp.pm delete mode 100644 cpan/Test-Simple/lib/Test/Stream/Context.pm delete mode 100644 cpan/Test-Simple/lib/Test/Stream/Event.pm delete mode 100644 cpan/Test-Simple/lib/Test/Stream/Event/Bail.pm delete mode 100644 cpan/Test-Simple/lib/Test/Stream/Event/Child.pm delete mode 100644 cpan/Test-Simple/lib/Test/Stream/Event/Diag.pm delete mode 100644 cpan/Test-Simple/lib/Test/Stream/Event/Finish.pm delete mode 100644 cpan/Test-Simple/lib/Test/Stream/Event/Note.pm delete mode 100644 cpan/Test-Simple/lib/Test/Stream/Event/Ok.pm delete mode 100644 cpan/Test-Simple/lib/Test/Stream/Event/Plan.pm delete mode 100644 cpan/Test-Simple/lib/Test/Stream/Event/Subtest.pm delete mode 100644 cpan/Test-Simple/lib/Test/Stream/ExitMagic.pm delete mode 100644 cpan/Test-Simple/lib/Test/Stream/ExitMagic/Context.pm delete mode 100644 cpan/Test-Simple/lib/Test/Stream/Exporter.pm delete mode 100644 cpan/Test-Simple/lib/Test/Stream/Exporter/Meta.pm delete mode 100644 cpan/Test-Simple/lib/Test/Stream/IOSets.pm delete mode 100644 cpan/Test-Simple/lib/Test/Stream/Meta.pm delete mode 100644 cpan/Test-Simple/lib/Test/Stream/PackageUtil.pm delete mode 100644 cpan/Test-Simple/lib/Test/Stream/Tester.pm delete mode 100644 cpan/Test-Simple/lib/Test/Stream/Tester/Checks.pm delete mode 100644 cpan/Test-Simple/lib/Test/Stream/Tester/Checks/Event.pm delete mode 100644 cpan/Test-Simple/lib/Test/Stream/Tester/Events.pm delete mode 100644 cpan/Test-Simple/lib/Test/Stream/Tester/Events/Event.pm delete mode 100644 cpan/Test-Simple/lib/Test/Stream/Tester/Grab.pm delete mode 100644 cpan/Test-Simple/lib/Test/Stream/Threads.pm delete mode 100644 cpan/Test-Simple/lib/Test/Stream/Toolset.pm delete mode 100644 cpan/Test-Simple/lib/Test/Stream/Util.pm delete mode 100644 cpan/Test-Simple/lib/Test/Tester.pm delete mode 100644 cpan/Test-Simple/lib/Test/Tester/Capture.pm delete mode 100644 cpan/Test-Simple/lib/Test/Tutorial/WritingTests.pod delete mode 100644 cpan/Test-Simple/lib/Test/Tutorial/WritingTools.pod delete mode 100644 cpan/Test-Simple/lib/Test/use/ok.pm delete mode 100644 cpan/Test-Simple/lib/ok.pm create mode 100644 cpan/Test-Simple/t/478-cmp_ok_hash.t rename cpan/Test-Simple/t/{Legacy => }/BEGIN_require_ok.t (100%) rename cpan/Test-Simple/t/{Legacy => }/BEGIN_use_ok.t (100%) delete mode 100644 cpan/Test-Simple/t/Behavior/388-threadedsubtest.load delete mode 100644 cpan/Test-Simple/t/Behavior/388-threadedsubtest.t delete mode 100644 cpan/Test-Simple/t/Behavior/MonkeyPatching_diag.t delete mode 100644 cpan/Test-Simple/t/Behavior/MonkeyPatching_done_testing.t delete mode 100644 cpan/Test-Simple/t/Behavior/MonkeyPatching_note.t delete mode 100644 cpan/Test-Simple/t/Behavior/MonkeyPatching_ok.t delete mode 100644 cpan/Test-Simple/t/Behavior/MonkeyPatching_plan.t delete mode 100644 cpan/Test-Simple/t/Behavior/Munge.t delete mode 100644 cpan/Test-Simple/t/Behavior/NotTB15.t delete mode 100644 cpan/Test-Simple/t/Behavior/Tester2_subtest.t delete mode 100644 cpan/Test-Simple/t/Behavior/cmp_ok_xor.t delete mode 100644 cpan/Test-Simple/t/Behavior/encoding_test.t delete mode 100644 cpan/Test-Simple/t/Behavior/fork_new_end.t delete mode 100644 cpan/Test-Simple/t/Behavior/skip_all_in_subtest.load delete mode 100644 cpan/Test-Simple/t/Behavior/skip_all_in_subtest.t delete mode 100644 cpan/Test-Simple/t/Behavior/threads_with_taint_mode.t delete mode 100644 cpan/Test-Simple/t/Behavior/todo.t 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/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/Builder/try.t delete mode 100644 cpan/Test-Simple/t/Legacy/Builder/fork_with_new_stdout.t delete mode 100644 cpan/Test-Simple/t/Legacy/Builder/reset_outputs.t delete mode 100644 cpan/Test-Simple/t/Legacy/PerlIO.t delete mode 100644 cpan/Test-Simple/t/Legacy/TestTester/auto.t delete mode 100644 cpan/Test-Simple/t/Legacy/TestTester/check_tests.t delete mode 100644 cpan/Test-Simple/t/Legacy/TestTester/depth.t delete mode 100644 cpan/Test-Simple/t/Legacy/TestTester/is_bug.t delete mode 100644 cpan/Test-Simple/t/Legacy/TestTester/run_test.t delete mode 100644 cpan/Test-Simple/t/Legacy/fork_in_subtest.t delete mode 100644 cpan/Test-Simple/t/Legacy/pod.t delete mode 100644 cpan/Test-Simple/t/Legacy/ribasushi_diag.t delete mode 100644 cpan/Test-Simple/t/Legacy/ribasushi_threads.t delete mode 100644 cpan/Test-Simple/t/Legacy/ribasushi_threads2.t delete mode 100644 cpan/Test-Simple/t/Legacy/strays.t delete mode 100644 cpan/Test-Simple/t/Legacy/test_use_ok.t delete mode 100644 cpan/Test-Simple/t/Legacy/threads.t delete mode 100644 cpan/Test-Simple/t/Legacy/versions.t rename cpan/Test-Simple/t/{Legacy => }/More.t (98%) rename cpan/Test-Simple/t/{Legacy => }/Simple/load.t (100%) delete mode 100644 cpan/Test-Simple/t/Test-Builder.t delete mode 100644 cpan/Test-Simple/t/Test-More-DeepCheck.t delete mode 100644 cpan/Test-Simple/t/Test-More.t delete mode 100644 cpan/Test-Simple/t/Test-MostlyLike.t delete mode 100644 cpan/Test-Simple/t/Test-Simple.t delete mode 100644 cpan/Test-Simple/t/Test-Stream-ArrayBase-Meta.t delete mode 100644 cpan/Test-Simple/t/Test-Stream-ArrayBase.t delete mode 100644 cpan/Test-Simple/t/Test-Stream-Carp.t delete mode 100644 cpan/Test-Simple/t/Test-Stream-Event-Diag.t delete mode 100644 cpan/Test-Simple/t/Test-Stream-Event-Finish.t delete mode 100644 cpan/Test-Simple/t/Test-Stream-Event-Note.t delete mode 100644 cpan/Test-Simple/t/Test-Stream-Event.t delete mode 100644 cpan/Test-Simple/t/Test-Stream-ExitMagic-Context.t delete mode 100644 cpan/Test-Simple/t/Test-Stream-Exporter-Meta.t delete mode 100644 cpan/Test-Simple/t/Test-Stream-Exporter.t delete mode 100644 cpan/Test-Simple/t/Test-Stream-IOSets.t delete mode 100644 cpan/Test-Simple/t/Test-Stream-Meta.t delete mode 100644 cpan/Test-Simple/t/Test-Stream-PackageUtil.t delete mode 100644 cpan/Test-Simple/t/Test-Stream-Tester-Grab.t delete mode 100644 cpan/Test-Simple/t/Test-Stream-Tester.t delete mode 100644 cpan/Test-Simple/t/Test-Stream-Toolset.t delete mode 100644 cpan/Test-Simple/t/Test-Stream-Util.t delete mode 100644 cpan/Test-Simple/t/Test-Tester-Capture.t delete mode 100644 cpan/Test-Simple/t/Test-Tester.t delete mode 100644 cpan/Test-Simple/t/Test-use-ok.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%) rename 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 (90%) 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 (68%) 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%) delete mode 100644 cpan/Test-Simple/t/lib/MyTest.pm delete mode 100644 cpan/Test-Simple/t/lib/SmallTest.pm 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%) rename cpan/Test-Simple/t/{Legacy => }/require_ok.t (56%) rename cpan/Test-Simple/t/{Legacy => }/simple.t (100%) rename cpan/Test-Simple/t/{Legacy => }/skip.t (86%) rename cpan/Test-Simple/t/{Legacy => }/skipall.t (98%) 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 (78%) 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%) rename cpan/Test-Simple/t/{Legacy => }/thread_taint.t (100%) create mode 100644 cpan/Test-Simple/t/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/versions.t diff --git a/MANIFEST b/MANIFEST index 356a73f..c1b8e17 100644 --- a/MANIFEST +++ b/MANIFEST @@ -827,6 +827,7 @@ cpan/Encode/t/unibench.pl benchmark script cpan/Encode/t/Unicode.t test script cpan/Encode/t/utf8ref.t test script cpan/Encode/t/utf8strict.t test script +cpan/Encode/t/utf8warnings.t cpan/Encode/TW/Makefile.PL Encode extension cpan/Encode/TW/TW.pm Encode extension cpan/Encode/ucm/8859-10.ucm Unicode Character Map @@ -2246,201 +2247,73 @@ 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/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/388-threadedsubtest.load Test::Simple Test -cpan/Test-Simple/t/Behavior/388-threadedsubtest.t Test::Simple test -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/skip_all_in_subtest.load Test::Simple Test -cpan/Test-Simple/t/Behavior/skip_all_in_subtest.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/478-cmp_ok_hash.t +cpan/Test-Simple/t/bad_plan.t +cpan/Test-Simple/t/bail_out.t +cpan/Test-Simple/t/BEGIN_require_ok.t +cpan/Test-Simple/t/BEGIN_use_ok.t +cpan/Test-Simple/t/buffer.t +cpan/Test-Simple/t/Builder/Builder.t +cpan/Test-Simple/t/Builder/carp.t +cpan/Test-Simple/t/Builder/create.t +cpan/Test-Simple/t/Builder/current_test.t +cpan/Test-Simple/t/Builder/current_test_without_plan.t +cpan/Test-Simple/t/Builder/details.t +cpan/Test-Simple/t/Builder/done_testing_double.t +cpan/Test-Simple/t/Builder/done_testing_plan_mismatch.t +cpan/Test-Simple/t/Builder/done_testing.t +cpan/Test-Simple/t/Builder/done_testing_with_no_plan.t +cpan/Test-Simple/t/Builder/done_testing_with_number.t +cpan/Test-Simple/t/Builder/done_testing_with_plan.t +cpan/Test-Simple/t/Builder/fork_with_new_stdout.t +cpan/Test-Simple/t/Builder/has_plan2.t +cpan/Test-Simple/t/Builder/has_plan.t +cpan/Test-Simple/t/Builder/is_fh.t +cpan/Test-Simple/t/Builder/is_passing.t +cpan/Test-Simple/t/Builder/maybe_regex.t +cpan/Test-Simple/t/Builder/no_diag.t +cpan/Test-Simple/t/Builder/no_ending.t +cpan/Test-Simple/t/Builder/no_header.t +cpan/Test-Simple/t/Builder/no_plan_at_all.t +cpan/Test-Simple/t/Builder/ok_obj.t +cpan/Test-Simple/t/Builder/output.t +cpan/Test-Simple/t/Builder/reset.t +cpan/Test-Simple/t/Builder/try.t +cpan/Test-Simple/t/c_flag.t +cpan/Test-Simple/t/circular_data.t +cpan/Test-Simple/t/cmp_ok.t +cpan/Test-Simple/t/dependents.t +cpan/Test-Simple/t/diag.t +cpan/Test-Simple/t/died.t +cpan/Test-Simple/t/dont_overwrite_die_handler.t +cpan/Test-Simple/t/eq_set.t +cpan/Test-Simple/t/exit.t +cpan/Test-Simple/t/explain.t +cpan/Test-Simple/t/extra_one.t +cpan/Test-Simple/t/extra.t +cpan/Test-Simple/t/fail-like.t +cpan/Test-Simple/t/fail-more.t +cpan/Test-Simple/t/fail_one.t +cpan/Test-Simple/t/fail.t +cpan/Test-Simple/t/filehandles.t +cpan/Test-Simple/t/fork.t +cpan/Test-Simple/t/harness_active.t +cpan/Test-Simple/t/import.t +cpan/Test-Simple/t/is_deeply_dne_bug.t +cpan/Test-Simple/t/is_deeply_fail.t +cpan/Test-Simple/t/is_deeply_with_threads.t 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 @@ -2460,31 +2333,60 @@ cpan/Test-Simple/t/lib/Test/Simple/sample_tests/too_few_fail.plx Test::Simple 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/missing.t +cpan/Test-Simple/t/More.t +cpan/Test-Simple/t/new_ok.t +cpan/Test-Simple/t/no_plan.t +cpan/Test-Simple/t/no_tests.t +cpan/Test-Simple/t/note.t +cpan/Test-Simple/t/overload.t +cpan/Test-Simple/t/overload_threads.t +cpan/Test-Simple/t/plan_bad.t +cpan/Test-Simple/t/plan_is_noplan.t +cpan/Test-Simple/t/plan_no_plan.t +cpan/Test-Simple/t/plan_shouldnt_import.t +cpan/Test-Simple/t/plan_skip_all.t +cpan/Test-Simple/t/plan.t +cpan/Test-Simple/t/require_ok.t +cpan/Test-Simple/t/Simple/load.t +cpan/Test-Simple/t/simple.t +cpan/Test-Simple/t/skipall.t +cpan/Test-Simple/t/skip.t +cpan/Test-Simple/t/subtest/args.t +cpan/Test-Simple/t/subtest/bail_out.t +cpan/Test-Simple/t/subtest/basic.t +cpan/Test-Simple/t/subtest/die.t +cpan/Test-Simple/t/subtest/do.t +cpan/Test-Simple/t/subtest/exceptions.t +cpan/Test-Simple/t/subtest/for_do_t.test +cpan/Test-Simple/t/subtest/fork.t +cpan/Test-Simple/t/subtest/implicit_done.t +cpan/Test-Simple/t/subtest/line_numbers.t +cpan/Test-Simple/t/subtest/plan.t +cpan/Test-Simple/t/subtest/predicate.t +cpan/Test-Simple/t/subtest/singleton.t +cpan/Test-Simple/t/subtest/threads.t +cpan/Test-Simple/t/subtest/todo.t +cpan/Test-Simple/t/subtest/wstat.t +cpan/Test-Simple/t/tbm_doesnt_set_exported_to.t +cpan/Test-Simple/t/Tester/tbt_01basic.t +cpan/Test-Simple/t/Tester/tbt_02fhrestore.t +cpan/Test-Simple/t/Tester/tbt_03die.t +cpan/Test-Simple/t/Tester/tbt_04line_num.t +cpan/Test-Simple/t/Tester/tbt_05faildiag.t +cpan/Test-Simple/t/Tester/tbt_06errormess.t +cpan/Test-Simple/t/Tester/tbt_07args.t +cpan/Test-Simple/t/Tester/tbt_08subtest.t +cpan/Test-Simple/t/Tester/tbt_09do_script.pl +cpan/Test-Simple/t/Tester/tbt_09do.t +cpan/Test-Simple/t/threads.t +cpan/Test-Simple/t/thread_taint.t +cpan/Test-Simple/t/todo.t +cpan/Test-Simple/t/undef.t +cpan/Test-Simple/t/useing.t +cpan/Test-Simple/t/use_ok.t +cpan/Test-Simple/t/utf8.t +cpan/Test-Simple/t/versions.t 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 diff --git a/Makefile.SH b/Makefile.SH index a55883d..66061c4 100755 --- a/Makefile.SH +++ b/Makefile.SH @@ -1288,26 +1288,21 @@ _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/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/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/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/Porting/Maintainers.pl b/Porting/Maintainers.pl index 93c2b82..a018ae4 100755 --- a/Porting/Maintainers.pl +++ b/Porting/Maintainers.pl @@ -390,7 +390,7 @@ use File::Glob qw(:case); }, 'Encode' => { - 'DISTRIBUTION' => 'DANKOGAI/Encode-2.63.tar.gz', + 'DISTRIBUTION' => 'DANKOGAI/Encode-2.64.tar.gz', 'FILES' => q[cpan/Encode], }, @@ -1052,7 +1052,7 @@ use File::Glob qw(:case); }, 'Test::Harness' => { - 'DISTRIBUTION' => 'LEONT/Test-Harness-3.33.tar.gz', + 'DISTRIBUTION' => 'LEONT/Test-Harness-3.34.tar.gz', 'FILES' => q[cpan/Test-Harness], 'EXCLUDED' => [ qr{^examples/}, @@ -1071,7 +1071,7 @@ use File::Glob qw(:case); }, 'Test::Simple' => { - 'DISTRIBUTION' => 'EXODIST/Test-Simple-1.001008.tar.gz', + 'DISTRIBUTION' => 'EXODIST/Test-Simple-1.001009.tar.gz', 'FILES' => q[cpan/Test-Simple], 'EXCLUDED' => [ qr{^t/xt}, @@ -1080,6 +1080,7 @@ use File::Glob qw(:case); examples/indent.pl examples/subtest.t t/00compile.t + t/00test_harness_check.t t/pod.t t/pod-coverage.t t/Builder/reset_outputs.t diff --git a/cpan/Encode/Encode.pm b/cpan/Encode/Encode.pm index 03eded6..820d6f7 100644 --- a/cpan/Encode/Encode.pm +++ b/cpan/Encode/Encode.pm @@ -1,10 +1,10 @@ # -# $Id: Encode.pm,v 2.63 2014/10/19 07:02:18 dankogai Exp $ +# $Id: Encode.pm,v 2.64 2014/10/29 15:37:54 dankogai Exp dankogai $ # package Encode; use strict; use warnings; -our $VERSION = sprintf "%d.%02d", q$Revision: 2.63 $ =~ /(\d+)/g; +our $VERSION = sprintf "%d.%02d", q$Revision: 2.64 $ =~ /(\d+)/g; use constant DEBUG => !!$ENV{PERL_ENCODE_DEBUG}; use XSLoader (); XSLoader::load( __PACKAGE__, $VERSION ); @@ -156,7 +156,20 @@ sub encode($$;$) { require Carp; Carp::croak("Unknown encoding '$name'"); } - my $octets = $enc->encode( $string, $check ); + # For Unicode, warnings need to be caught and re-issued at this level + # so that callers can disable utf8 warnings lexically. + my $octets; + if ( ref($enc) eq 'Encode::Unicode' ) { + my $warn = ''; + { + local $SIG{__WARN__} = sub { $warn = shift }; + $octets = $enc->encode( $string, $check ); + } + warnings::warnif('utf8', $warn) if length $warn; + } + else { + $octets = $enc->encode( $string, $check ); + } $_[1] = $string if $check and !ref $check and !( $check & LEAVE_SRC() ); return $octets; } @@ -172,7 +185,20 @@ sub decode($$;$) { require Carp; Carp::croak("Unknown encoding '$name'"); } - my $string = $enc->decode( $octets, $check ); + # For Unicode, warnings need to be caught and re-issued at this level + # so that callers can disable utf8 warnings lexically. + my $string; + if ( ref($enc) eq 'Encode::Unicode' ) { + my $warn = ''; + { + local $SIG{__WARN__} = sub { $warn = shift }; + $string = $enc->decode( $octets, $check ); + } + warnings::warnif('utf8', $warn) if length $warn; + } + else { + $string = $enc->decode( $octets, $check ); + } $_[1] = $octets if $check and !ref $check and !( $check & LEAVE_SRC() ); return $string; } diff --git a/cpan/Encode/Encode.xs b/cpan/Encode/Encode.xs index 755d6d9..32be9b8 100644 --- a/cpan/Encode/Encode.xs +++ b/cpan/Encode/Encode.xs @@ -1,5 +1,5 @@ /* - $Id: Encode.xs,v 2.30 2014/10/19 07:01:15 dankogai Exp $ + $Id: Encode.xs,v 2.31 2014/10/29 15:37:54 dankogai Exp dankogai $ */ #define PERL_NO_GET_CONTEXT @@ -343,10 +343,14 @@ process_utf8(pTHX_ SV* dst, U8* s, U8* e, SV *check_sv, if (UTF8_IS_START(*s)) { U8 skip = UTF8SKIP(s); if ((s + skip) > e) { - /* Partial character */ - /* XXX could check that rest of bytes are UTF8_IS_CONTINUATION(ch) */ - if (stop_at_partial || (check & ENCODE_STOP_AT_PARTIAL)) + if (stop_at_partial || (check & ENCODE_STOP_AT_PARTIAL)) { + const U8 *p = s + 1; + for (; p < e; p++) { + if (!UTF8_IS_CONTINUATION(*p)) + goto malformed_byte; + } break; + } goto malformed_byte; } diff --git a/cpan/Encode/t/utf8warnings.t b/cpan/Encode/t/utf8warnings.t new file mode 100644 index 0000000..9d93ece --- /dev/null +++ b/cpan/Encode/t/utf8warnings.t @@ -0,0 +1,66 @@ +use strict; +use warnings; +BEGIN { + if ($] < 5.014){ + print "1..0 # Skip: Perl 5.14.0 or later required\n"; + exit 0; + } +} + +use Encode; +use Test::More tests => 7; + +my $valid = "\x61\x00\x00\x00"; +my $invalid = "\x78\x56\x34\x12"; + +my @warnings; +$SIG{__WARN__} = sub {push @warnings, "@_"}; + +my $enc = find_encoding("UTF32-LE"); + +{ + @warnings = (); + my $ret = Encode::Unicode::decode( $enc, $valid ); + is("@warnings", "", "Calling decode in Encode::Unicode on valid string produces no warnings"); +} + +{ + @warnings = (); + my $ret = Encode::Unicode::decode( $enc, $invalid ); + like("@warnings", qr/is not Unicode/, "Calling decode in Encode::Unicode on invalid string warns"); +} + +{ + no warnings 'utf8'; + @warnings = (); + my $ret = Encode::Unicode::decode( $enc, $invalid ); + is("@warnings", "", "Warning from decode in Encode::Unicode can be silenced via no warnings 'utf8'"); +} + +{ + no warnings; + @warnings = (); + my $ret = Encode::Unicode::decode( $enc, $invalid ); + is("@warnings", "", "Warning from decode in Encode::Unicode can be silenced via no warnings"); +} + +{ + @warnings = (); + my $ret = Encode::decode( $enc, $invalid ); + like("@warnings", qr/is not Unicode/, "Calling decode in Encode on invalid string warns"); +} + +{ + no warnings 'utf8'; + @warnings = (); + my $ret = Encode::decode( $enc, $invalid ); + is("@warnings", "", "Warning from decode in Encode can be silenced via no warnings 'utf8'"); +}; + +{ + no warnings; + @warnings = (); + my $ret = Encode::decode( $enc, $invalid ); + is("@warnings", "", "Warning from decode in Encode can be silenced via no warnings 'utf8'"); +}; + diff --git a/cpan/Test-Harness/lib/App/Prove.pm b/cpan/Test-Harness/lib/App/Prove.pm index 94b7c73..d6465f7 100644 --- a/cpan/Test-Harness/lib/App/Prove.pm +++ b/cpan/Test-Harness/lib/App/Prove.pm @@ -18,11 +18,11 @@ App::Prove - Implements the C<prove> command. =head1 VERSION -Version 3.33 +Version 3.34 =cut -our $VERSION = '3.33'; +our $VERSION = '3.34'; =head1 DESCRIPTION diff --git a/cpan/Test-Harness/lib/App/Prove/State.pm b/cpan/Test-Harness/lib/App/Prove/State.pm index c41ecd7..34d91c7 100644 --- a/cpan/Test-Harness/lib/App/Prove/State.pm +++ b/cpan/Test-Harness/lib/App/Prove/State.pm @@ -25,11 +25,11 @@ App::Prove::State - State storage for the C<prove> command. =head1 VERSION -Version 3.33 +Version 3.34 =cut -our $VERSION = '3.33'; +our $VERSION = '3.34'; =head1 DESCRIPTION diff --git a/cpan/Test-Harness/lib/App/Prove/State/Result.pm b/cpan/Test-Harness/lib/App/Prove/State/Result.pm index 474a362..5cc1ad6 100644 --- a/cpan/Test-Harness/lib/App/Prove/State/Result.pm +++ b/cpan/Test-Harness/lib/App/Prove/State/Result.pm @@ -14,11 +14,11 @@ App::Prove::State::Result - Individual test suite results. =head1 VERSION -Version 3.33 +Version 3.34 =cut -our $VERSION = '3.33'; +our $VERSION = '3.34'; =head1 DESCRIPTION diff --git a/cpan/Test-Harness/lib/App/Prove/State/Result/Test.pm b/cpan/Test-Harness/lib/App/Prove/State/Result/Test.pm index 1a8864c..313e98c 100644 --- a/cpan/Test-Harness/lib/App/Prove/State/Result/Test.pm +++ b/cpan/Test-Harness/lib/App/Prove/State/Result/Test.pm @@ -9,11 +9,11 @@ App::Prove::State::Result::Test - Individual test results. =head1 VERSION -Version 3.33 +Version 3.34 =cut -our $VERSION = '3.33'; +our $VERSION = '3.34'; =head1 DESCRIPTION diff --git a/cpan/Test-Harness/lib/TAP/Base.pm b/cpan/Test-Harness/lib/TAP/Base.pm index 5867ee7..ab02ac7 100644 --- a/cpan/Test-Harness/lib/TAP/Base.pm +++ b/cpan/Test-Harness/lib/TAP/Base.pm @@ -12,11 +12,11 @@ and L<TAP::Harness> =head1 VERSION -Version 3.33 +Version 3.34 =cut -our $VERSION = '3.33'; +our $VERSION = '3.34'; use constant GOT_TIME_HIRES => do { eval 'use Time::HiRes qw(time);'; @@ -121,4 +121,13 @@ Return true if the time returned by get_time is high resolution (i.e. if Time::H sub time_is_hires { return GOT_TIME_HIRES } +=head3 C<get_times> + +Return array reference of the four-element list of CPU seconds, +as with L<perlfunc/times>. + +=cut + +sub get_times { return [ times() ] } + 1; diff --git a/cpan/Test-Harness/lib/TAP/Formatter/Base.pm b/cpan/Test-Harness/lib/TAP/Formatter/Base.pm index 440af92..82a5289 100644 --- a/cpan/Test-Harness/lib/TAP/Formatter/Base.pm +++ b/cpan/Test-Harness/lib/TAP/Formatter/Base.pm @@ -58,11 +58,11 @@ TAP::Formatter::Base - Base class for harness output delegates =head1 VERSION -Version 3.33 +Version 3.34 =cut -our $VERSION = '3.33'; +our $VERSION = '3.34'; =head1 DESCRIPTION diff --git a/cpan/Test-Harness/lib/TAP/Formatter/Color.pm b/cpan/Test-Harness/lib/TAP/Formatter/Color.pm index 4d97bfa..2c4cff5 100644 --- a/cpan/Test-Harness/lib/TAP/Formatter/Color.pm +++ b/cpan/Test-Harness/lib/TAP/Formatter/Color.pm @@ -71,11 +71,11 @@ TAP::Formatter::Color - Run Perl test scripts with color =head1 VERSION -Version 3.33 +Version 3.34 =cut -our $VERSION = '3.33'; +our $VERSION = '3.34'; =head1 DESCRIPTION diff --git a/cpan/Test-Harness/lib/TAP/Formatter/Console.pm b/cpan/Test-Harness/lib/TAP/Formatter/Console.pm index 9360cea..e9e3ef3 100644 --- a/cpan/Test-Harness/lib/TAP/Formatter/Console.pm +++ b/cpan/Test-Harness/lib/TAP/Formatter/Console.pm @@ -11,11 +11,11 @@ TAP::Formatter::Console - Harness output delegate for default console output =head1 VERSION -Version 3.33 +Version 3.34 =cut -our $VERSION = '3.33'; +our $VERSION = '3.34'; =head1 DESCRIPTION diff --git a/cpan/Test-Harness/lib/TAP/Formatter/Console/ParallelSession.pm b/cpan/Test-Harness/lib/TAP/Formatter/Console/ParallelSession.pm index fd8c021..b18f12f 100644 --- a/cpan/Test-Harness/lib/TAP/Formatter/Console/ParallelSession.pm +++ b/cpan/Test-Harness/lib/TAP/Formatter/Console/ParallelSession.pm @@ -41,11 +41,11 @@ TAP::Formatter::Console::ParallelSession - Harness output delegate for parallel =head1 VERSION -Version 3.33 +Version 3.34 =cut -our $VERSION = '3.33'; +our $VERSION = '3.34'; =head1 DESCRIPTION diff --git a/cpan/Test-Harness/lib/TAP/Formatter/Console/Session.pm b/cpan/Test-Harness/lib/TAP/Formatter/Console/Session.pm index 8262d9b..1daf913 100644 --- a/cpan/Test-Harness/lib/TAP/Formatter/Console/Session.pm +++ b/cpan/Test-Harness/lib/TAP/Formatter/Console/Session.pm @@ -26,11 +26,11 @@ TAP::Formatter::Console::Session - Harness output delegate for default console o =head1 VERSION -Version 3.33 +Version 3.34 =cut -our $VERSION = '3.33'; +our $VERSION = '3.34'; =head1 DESCRIPTION @@ -185,19 +185,7 @@ sub _closures { $self->_output_test_failure($parser); } else { - my $time_report = ''; - if ( $formatter->timer ) { - my $start_time = $parser->start_time; - my $end_time = $parser->end_time; - if ( defined $start_time and defined $end_time ) { - my $elapsed = $end_time - $start_time; - $time_report - = $self->time_is_hires - ? sprintf( ' %8d ms', $elapsed * 1000 ) - : sprintf( ' %8s s', $elapsed || '<1' ); - } - } - + my $time_report = $self->time_report($formatter, $parser); $formatter->_output( $self->_make_ok_line($time_report) ); } }, diff --git a/cpan/Test-Harness/lib/TAP/Formatter/File.pm b/cpan/Test-Harness/lib/TAP/Formatter/File.pm index baff4c1..7dda037 100644 --- a/cpan/Test-Harness/lib/TAP/Formatter/File.pm +++ b/cpan/Test-Harness/lib/TAP/Formatter/File.pm @@ -13,11 +13,11 @@ TAP::Formatter::File - Harness output delegate for file output =head1 VERSION -Version 3.33 +Version 3.34 =cut -our $VERSION = '3.33'; +our $VERSION = '3.34'; =head1 DESCRIPTION diff --git a/cpan/Test-Harness/lib/TAP/Formatter/File/Session.pm b/cpan/Test-Harness/lib/TAP/Formatter/File/Session.pm index 456f92a..c9e69b8 100644 --- a/cpan/Test-Harness/lib/TAP/Formatter/File/Session.pm +++ b/cpan/Test-Harness/lib/TAP/Formatter/File/Session.pm @@ -10,11 +10,11 @@ TAP::Formatter::File::Session - Harness output delegate for file output =head1 VERSION -Version 3.33 +Version 3.34 =cut -our $VERSION = '3.33'; +our $VERSION = '3.34'; =head1 DESCRIPTION @@ -85,19 +85,7 @@ sub close_test { $self->_output_test_failure($parser); } else { - my $time_report = ''; - if ( $formatter->timer ) { - my $start_time = $parser->start_time; - my $end_time = $parser->end_time; - if ( defined $start_time and defined $end_time ) { - my $elapsed = $end_time - $start_time; - $time_report - = $self->time_is_hires - ? sprintf( ' %8d ms', $elapsed * 1000 ) - : sprintf( ' %8s s', $elapsed || '<1' ); - } - } - + my $time_report = $self->time_report($formatter, $parser); $formatter->_output( $pretty . ( $self->{results} ? "\n" . $self->{results} : "" ) . $self->_make_ok_line($time_report) ); diff --git a/cpan/Test-Harness/lib/TAP/Formatter/Session.pm b/cpan/Test-Harness/lib/TAP/Formatter/Session.pm index fca74d6..786d066 100644 --- a/cpan/Test-Harness/lib/TAP/Formatter/Session.pm +++ b/cpan/Test-Harness/lib/TAP/Formatter/Session.pm @@ -23,11 +23,11 @@ TAP::Formatter::Session - Abstract base class for harness output delegate =head1 VERSION -Version 3.33 +Version 3.34 =cut -our $VERSION = '3.33'; +our $VERSION = '3.34'; =head1 METHODS @@ -99,6 +99,11 @@ Called to close a test session. Called by C<close_test> to clear the line showing test progress, or the parallel test ruler, prior to printing the final test result. +=head3 C<time_report> + +Return a formatted string about the elapsed (wall-clock) time +and about the consumed CPU time. + =cut sub header { } @@ -183,4 +188,33 @@ sub _make_ok_line { return "ok$suffix\n"; } +sub time_report { + my ( $self, $formatter, $parser ) = @_; + + my @time_report; + if ( $formatter->timer ) { + my $start_time = $parser->start_time; + my $end_time = $parser->end_time; + if ( defined $start_time and defined $end_time ) { + my $elapsed = $end_time - $start_time; + push @time_report, + $self->time_is_hires + ? sprintf( ' %8d ms', $elapsed * 1000 ) + : sprintf( ' %8s s', $elapsed || '<1' ); + } + my $start_times = $parser->start_times(); + my $end_times = $parser->end_times(); + my $usr = $end_times->[0] - $start_times->[0]; + my $sys = $end_times->[1] - $start_times->[1]; + my $cusr = $end_times->[2] - $start_times->[2]; + my $csys = $end_times->[3] - $start_times->[3]; + push @time_report, + sprintf('(%5.2f usr %5.2f sys + %5.2f cusr %5.2f csys = %5.2f CPU)', + $usr, $sys, $cusr, $csys, + $usr + $sys + $cusr + $csys); + } + + return "@time_report"; +} + 1; diff --git a/cpan/Test-Harness/lib/TAP/Harness.pm b/cpan/Test-Harness/lib/TAP/Harness.pm index 70849dd..d4cf341 100644 --- a/cpan/Test-Harness/lib/TAP/Harness.pm +++ b/cpan/Test-Harness/lib/TAP/Harness.pm @@ -16,11 +16,11 @@ TAP::Harness - Run test scripts with statistics =head1 VERSION -Version 3.33 +Version 3.34 =cut -our $VERSION = '3.33'; +our $VERSION = '3.34'; $ENV{HARNESS_ACTIVE} = 1; $ENV{HARNESS_VERSION} = $VERSION; diff --git a/cpan/Test-Harness/lib/TAP/Harness/Env.pm b/cpan/Test-Harness/lib/TAP/Harness/Env.pm index c169528..ef2919c 100644 --- a/cpan/Test-Harness/lib/TAP/Harness/Env.pm +++ b/cpan/Test-Harness/lib/TAP/Harness/Env.pm @@ -7,7 +7,7 @@ use constant IS_VMS => ( $^O eq 'VMS' ); use TAP::Object; use Text::ParseWords qw/shellwords/; -our $VERSION = '3.33'; +our $VERSION = '3.34'; # Get the parts of @INC which are changed from the stock list AND # preserve reordering of stock directories. @@ -126,7 +126,7 @@ TAP::Harness::Env - Parsing harness related environmental variables where approp =head1 VERSION -Version 3.33 +Version 3.34 =head1 SYNOPSIS diff --git a/cpan/Test-Harness/lib/TAP/Object.pm b/cpan/Test-Harness/lib/TAP/Object.pm index a1a2164..ee809ec 100644 --- a/cpan/Test-Harness/lib/TAP/Object.pm +++ b/cpan/Test-Harness/lib/TAP/Object.pm @@ -9,11 +9,11 @@ TAP::Object - Base class that provides common functionality to all C<TAP::*> mod =head1 VERSION -Version 3.33 +Version 3.34 =cut -our $VERSION = '3.33'; +our $VERSION = '3.34'; =head1 SYNOPSIS diff --git a/cpan/Test-Harness/lib/TAP/Parser.pm b/cpan/Test-Harness/lib/TAP/Parser.pm index 32b1f4e..39f5d2e 100644 --- a/cpan/Test-Harness/lib/TAP/Parser.pm +++ b/cpan/Test-Harness/lib/TAP/Parser.pm @@ -27,11 +27,11 @@ TAP::Parser - Parse L<TAP|Test::Harness::TAP> output =head1 VERSION -Version 3.33 +Version 3.34 =cut -our $VERSION = '3.33'; +our $VERSION = '3.34'; my $DEFAULT_TAP_VERSION = 12; my $MAX_TAP_VERSION = 13; @@ -60,6 +60,8 @@ BEGIN { # making accessors in_todo start_time end_time + start_times + end_times skip_all grammar_class result_factory_class @@ -1007,11 +1009,20 @@ were skipped. =head3 C<start_time> -Returns the time when the Parser was created. +Returns the wall-clock time when the Parser was created. =head3 C<end_time> -Returns the time when the end of TAP input was seen. +Returns the wall-clock time when the end of TAP input was seen. + +=head3 C<start_times> + +Returns the CPU times (like L<perlfunc/times> when the Parser was created. + +=head3 C<end_times> + +Returns the CPU times (like L<perlfunc/times> when the end of TAP +input was seen. =head3 C<has_problems> @@ -1374,6 +1385,7 @@ sub _iter { my $state_table = $self->_make_state_table; $self->start_time( $self->get_time ); + $self->start_times( $self->get_times ); # Make next_state closure my $next_state = sub { @@ -1466,6 +1478,7 @@ sub _finish { my $self = shift; $self->end_time( $self->get_time ); + $self->end_times( $self->get_times ); # Avoid leaks $self->_iterator(undef); diff --git a/cpan/Test-Harness/lib/TAP/Parser/Aggregator.pm b/cpan/Test-Harness/lib/TAP/Parser/Aggregator.pm index d02c3e8..ca7c559 100644 --- a/cpan/Test-Harness/lib/TAP/Parser/Aggregator.pm +++ b/cpan/Test-Harness/lib/TAP/Parser/Aggregator.pm @@ -12,11 +12,11 @@ TAP::Parser::Aggregator - Aggregate TAP::Parser results =head1 VERSION -Version 3.33 +Version 3.34 =cut -our $VERSION = '3.33'; +our $VERSION = '3.34'; =head1 SYNOPSIS diff --git a/cpan/Test-Harness/lib/TAP/Parser/Grammar.pm b/cpan/Test-Harness/lib/TAP/Parser/Grammar.pm index 5ee121b..08c6bc4 100644 --- a/cpan/Test-Harness/lib/TAP/Parser/Grammar.pm +++ b/cpan/Test-Harness/lib/TAP/Parser/Grammar.pm @@ -14,11 +14,11 @@ TAP::Parser::Grammar - A grammar for the Test Anything Protocol. =head1 VERSION -Version 3.33 +Version 3.34 =cut -our $VERSION = '3.33'; +our $VERSION = '3.34'; =head1 SYNOPSIS diff --git a/cpan/Test-Harness/lib/TAP/Parser/Iterator.pm b/cpan/Test-Harness/lib/TAP/Parser/Iterator.pm index a949b52..09b5194 100644 --- a/cpan/Test-Harness/lib/TAP/Parser/Iterator.pm +++ b/cpan/Test-Harness/lib/TAP/Parser/Iterator.pm @@ -11,11 +11,11 @@ TAP::Parser::Iterator - Base class for TAP source iterators =head1 VERSION -Version 3.33 +Version 3.34 =cut -our $VERSION = '3.33'; +our $VERSION = '3.34'; =head1 SYNOPSIS diff --git a/cpan/Test-Harness/lib/TAP/Parser/Iterator/Array.pm b/cpan/Test-Harness/lib/TAP/Parser/Iterator/Array.pm index ce71f05..c0ed0e0 100644 --- a/cpan/Test-Harness/lib/TAP/Parser/Iterator/Array.pm +++ b/cpan/Test-Harness/lib/TAP/Parser/Iterator/Array.pm @@ -11,11 +11,11 @@ TAP::Parser::Iterator::Array - Iterator for array-based TAP sources =head1 VERSION -Version 3.33 +Version 3.34 =cut -our $VERSION = '3.33'; +our $VERSION = '3.34'; =head1 SYNOPSIS diff --git a/cpan/Test-Harness/lib/TAP/Parser/Iterator/Process.pm b/cpan/Test-Harness/lib/TAP/Parser/Iterator/Process.pm index 8580498..dedba69 100644 --- a/cpan/Test-Harness/lib/TAP/Parser/Iterator/Process.pm +++ b/cpan/Test-Harness/lib/TAP/Parser/Iterator/Process.pm @@ -16,11 +16,11 @@ TAP::Parser::Iterator::Process - Iterator for process-based TAP sources =head1 VERSION -Version 3.33 +Version 3.34 =cut -our $VERSION = '3.33'; +our $VERSION = '3.34'; =head1 SYNOPSIS diff --git a/cpan/Test-Harness/lib/TAP/Parser/Iterator/Stream.pm b/cpan/Test-Harness/lib/TAP/Parser/Iterator/Stream.pm index 5ee9fbf..c7b15d0 100644 --- a/cpan/Test-Harness/lib/TAP/Parser/Iterator/Stream.pm +++ b/cpan/Test-Harness/lib/TAP/Parser/Iterator/Stream.pm @@ -11,11 +11,11 @@ TAP::Parser::Iterator::Stream - Iterator for filehandle-based TAP sources =head1 VERSION -Version 3.33 +Version 3.34 =cut -our $VERSION = '3.33'; +our $VERSION = '3.34'; =head1 SYNOPSIS diff --git a/cpan/Test-Harness/lib/TAP/Parser/IteratorFactory.pm b/cpan/Test-Harness/lib/TAP/Parser/IteratorFactory.pm index 6216528..b0b7d9e 100644 --- a/cpan/Test-Harness/lib/TAP/Parser/IteratorFactory.pm +++ b/cpan/Test-Harness/lib/TAP/Parser/IteratorFactory.pm @@ -16,11 +16,11 @@ TAP::Parser::IteratorFactory - Figures out which SourceHandler objects to use fo =head1 VERSION -Version 3.33 +Version 3.34 =cut -our $VERSION = '3.33'; +our $VERSION = '3.34'; =head1 SYNOPSIS diff --git a/cpan/Test-Harness/lib/TAP/Parser/Multiplexer.pm b/cpan/Test-Harness/lib/TAP/Parser/Multiplexer.pm index 4173cdc..fe88945 100644 --- a/cpan/Test-Harness/lib/TAP/Parser/Multiplexer.pm +++ b/cpan/Test-Harness/lib/TAP/Parser/Multiplexer.pm @@ -17,11 +17,11 @@ TAP::Parser::Multiplexer - Multiplex multiple TAP::Parsers =head1 VERSION -Version 3.33 +Version 3.34 =cut -our $VERSION = '3.33'; +our $VERSION = '3.34'; =head1 SYNOPSIS diff --git a/cpan/Test-Harness/lib/TAP/Parser/Result.pm b/cpan/Test-Harness/lib/TAP/Parser/Result.pm index 48ba5dc..bbd3a17 100644 --- a/cpan/Test-Harness/lib/TAP/Parser/Result.pm +++ b/cpan/Test-Harness/lib/TAP/Parser/Result.pm @@ -24,11 +24,11 @@ TAP::Parser::Result - Base class for TAP::Parser output objects =head1 VERSION -Version 3.33 +Version 3.34 =cut -our $VERSION = '3.33'; +our $VERSION = '3.34'; =head1 SYNOPSIS diff --git a/cpan/Test-Harness/lib/TAP/Parser/Result/Bailout.pm b/cpan/Test-Harness/lib/TAP/Parser/Result/Bailout.pm index 0d213e6..95297aa 100644 --- a/cpan/Test-Harness/lib/TAP/Parser/Result/Bailout.pm +++ b/cpan/Test-Harness/lib/TAP/Parser/Result/Bailout.pm @@ -11,11 +11,11 @@ TAP::Parser::Result::Bailout - Bailout result token. =head1 VERSION -Version 3.33 +Version 3.34 =cut -our $VERSION = '3.33'; +our $VERSION = '3.34'; =head1 DESCRIPTION diff --git a/cpan/Test-Harness/lib/TAP/Parser/Result/Comment.pm b/cpan/Test-Harness/lib/TAP/Parser/Result/Comment.pm index fc1f889..3d794c9 100644 --- a/cpan/Test-Harness/lib/TAP/Parser/Result/Comment.pm +++ b/cpan/Test-Harness/lib/TAP/Parser/Result/Comment.pm @@ -11,11 +11,11 @@ TAP::Parser::Result::Comment - Comment result token. =head1 VERSION -Version 3.33 +Version 3.34 =cut -our $VERSION = '3.33'; +our $VERSION = '3.34'; =head1 DESCRIPTION diff --git a/cpan/Test-Harness/lib/TAP/Parser/Result/Plan.pm b/cpan/Test-Harness/lib/TAP/Parser/Result/Plan.pm index b52f9da..dd43e5b 100644 --- a/cpan/Test-Harness/lib/TAP/Parser/Result/Plan.pm +++ b/cpan/Test-Harness/lib/TAP/Parser/Result/Plan.pm @@ -11,11 +11,11 @@ TAP::Parser::Result::Plan - Plan result token. =head1 VERSION -Version 3.33 +Version 3.34 =cut -our $VERSION = '3.33'; +our $VERSION = '3.34'; =head1 DESCRIPTION diff --git a/cpan/Test-Harness/lib/TAP/Parser/Result/Pragma.pm b/cpan/Test-Harness/lib/TAP/Parser/Result/Pragma.pm index dd4818d..4ea9a62 100644 --- a/cpan/Test-Harness/lib/TAP/Parser/Result/Pragma.pm +++ b/cpan/Test-Harness/lib/TAP/Parser/Result/Pragma.pm @@ -11,11 +11,11 @@ TAP::Parser::Result::Pragma - TAP pragma token. =head1 VERSION -Version 3.33 +Version 3.34 =cut -our $VERSION = '3.33'; +our $VERSION = '3.34'; =head1 DESCRIPTION diff --git a/cpan/Test-Harness/lib/TAP/Parser/Result/Test.pm b/cpan/Test-Harness/lib/TAP/Parser/Result/Test.pm index 0f34577..494a68e 100644 --- a/cpan/Test-Harness/lib/TAP/Parser/Result/Test.pm +++ b/cpan/Test-Harness/lib/TAP/Parser/Result/Test.pm @@ -11,11 +11,11 @@ TAP::Parser::Result::Test - Test result token. =head1 VERSION -Version 3.33 +Version 3.34 =cut -our $VERSION = '3.33'; +our $VERSION = '3.34'; =head1 DESCRIPTION diff --git a/cpan/Test-Harness/lib/TAP/Parser/Result/Unknown.pm b/cpan/Test-Harness/lib/TAP/Parser/Result/Unknown.pm index c5b86a8..3142c37 100644 --- a/cpan/Test-Harness/lib/TAP/Parser/Result/Unknown.pm +++ b/cpan/Test-Harness/lib/TAP/Parser/Result/Unknown.pm @@ -11,11 +11,11 @@ TAP::Parser::Result::Unknown - Unknown result token. =head1 VERSION -Version 3.33 +Version 3.34 =cut -our $VERSION = '3.33'; +our $VERSION = '3.34'; =head1 DESCRIPTION diff --git a/cpan/Test-Harness/lib/TAP/Parser/Result/Version.pm b/cpan/Test-Harness/lib/TAP/Parser/Result/Version.pm index 733021d..74cc03a 100644 --- a/cpan/Test-Harness/lib/TAP/Parser/Result/Version.pm +++ b/cpan/Test-Harness/lib/TAP/Parser/Result/Version.pm @@ -11,11 +11,11 @@ TAP::Parser::Result::Version - TAP syntax version token. =head1 VERSION -Version 3.33 +Version 3.34 =cut -our $VERSION = '3.33'; +our $VERSION = '3.34'; =head1 DESCRIPTION diff --git a/cpan/Test-Harness/lib/TAP/Parser/Result/YAML.pm b/cpan/Test-Harness/lib/TAP/Parser/Result/YAML.pm index f592f68..ee5f4eb 100644 --- a/cpan/Test-Harness/lib/TAP/Parser/Result/YAML.pm +++ b/cpan/Test-Harness/lib/TAP/Parser/Result/YAML.pm @@ -11,11 +11,11 @@ TAP::Parser::Result::YAML - YAML result token. =head1 VERSION -Version 3.33 +Version 3.34 =cut -our $VERSION = '3.33'; +our $VERSION = '3.34'; =head1 DESCRIPTION diff --git a/cpan/Test-Harness/lib/TAP/Parser/ResultFactory.pm b/cpan/Test-Harness/lib/TAP/Parser/ResultFactory.pm index 14ba708..87b02ea 100644 --- a/cpan/Test-Harness/lib/TAP/Parser/ResultFactory.pm +++ b/cpan/Test-Harness/lib/TAP/Parser/ResultFactory.pm @@ -29,11 +29,11 @@ TAP::Parser::ResultFactory - Factory for creating TAP::Parser output objects =head1 VERSION -Version 3.33 +Version 3.34 =cut -our $VERSION = '3.33'; +our $VERSION = '3.34'; =head2 DESCRIPTION diff --git a/cpan/Test-Harness/lib/TAP/Parser/Scheduler.pm b/cpan/Test-Harness/lib/TAP/Parser/Scheduler.pm index 1e9b07f..049695f 100644 --- a/cpan/Test-Harness/lib/TAP/Parser/Scheduler.pm +++ b/cpan/Test-Harness/lib/TAP/Parser/Scheduler.pm @@ -13,11 +13,11 @@ TAP::Parser::Scheduler - Schedule tests during parallel testing =head1 VERSION -Version 3.33 +Version 3.34 =cut -our $VERSION = '3.33'; +our $VERSION = '3.34'; =head1 SYNOPSIS diff --git a/cpan/Test-Harness/lib/TAP/Parser/Scheduler/Job.pm b/cpan/Test-Harness/lib/TAP/Parser/Scheduler/Job.pm index b95f486..ba1fbf8 100644 --- a/cpan/Test-Harness/lib/TAP/Parser/Scheduler/Job.pm +++ b/cpan/Test-Harness/lib/TAP/Parser/Scheduler/Job.pm @@ -10,11 +10,11 @@ TAP::Parser::Scheduler::Job - A single testing job. =head1 VERSION -Version 3.33 +Version 3.34 =cut -our $VERSION = '3.33'; +our $VERSION = '3.34'; =head1 SYNOPSIS diff --git a/cpan/Test-Harness/lib/TAP/Parser/Scheduler/Spinner.pm b/cpan/Test-Harness/lib/TAP/Parser/Scheduler/Spinner.pm index 7cfeb65..d57e914 100644 --- a/cpan/Test-Harness/lib/TAP/Parser/Scheduler/Spinner.pm +++ b/cpan/Test-Harness/lib/TAP/Parser/Scheduler/Spinner.pm @@ -10,11 +10,11 @@ TAP::Parser::Scheduler::Spinner - A no-op job. =head1 VERSION -Version 3.33 +Version 3.34 =cut -our $VERSION = '3.33'; +our $VERSION = '3.34'; =head1 SYNOPSIS diff --git a/cpan/Test-Harness/lib/TAP/Parser/Source.pm b/cpan/Test-Harness/lib/TAP/Parser/Source.pm index 4085d65..5e173ee 100644 --- a/cpan/Test-Harness/lib/TAP/Parser/Source.pm +++ b/cpan/Test-Harness/lib/TAP/Parser/Source.pm @@ -14,11 +14,11 @@ TAP::Parser::Source - a TAP source & meta data about it =head1 VERSION -Version 3.33 +Version 3.34 =cut -our $VERSION = '3.33'; +our $VERSION = '3.34'; =head1 SYNOPSIS diff --git a/cpan/Test-Harness/lib/TAP/Parser/SourceHandler.pm b/cpan/Test-Harness/lib/TAP/Parser/SourceHandler.pm index b761de5..a3d6761 100644 --- a/cpan/Test-Harness/lib/TAP/Parser/SourceHandler.pm +++ b/cpan/Test-Harness/lib/TAP/Parser/SourceHandler.pm @@ -12,11 +12,11 @@ TAP::Parser::SourceHandler - Base class for different TAP source handlers =head1 VERSION -Version 3.33 +Version 3.34 =cut -our $VERSION = '3.33'; +our $VERSION = '3.34'; =head1 SYNOPSIS diff --git a/cpan/Test-Harness/lib/TAP/Parser/SourceHandler/Executable.pm b/cpan/Test-Harness/lib/TAP/Parser/SourceHandler/Executable.pm index d68bfd6..b40a16b 100644 --- a/cpan/Test-Harness/lib/TAP/Parser/SourceHandler/Executable.pm +++ b/cpan/Test-Harness/lib/TAP/Parser/SourceHandler/Executable.pm @@ -16,11 +16,11 @@ TAP::Parser::SourceHandler::Executable - Stream output from an executable TAP so =head1 VERSION -Version 3.33 +Version 3.34 =cut -our $VERSION = '3.33'; +our $VERSION = '3.34'; =head1 SYNOPSIS diff --git a/cpan/Test-Harness/lib/TAP/Parser/SourceHandler/File.pm b/cpan/Test-Harness/lib/TAP/Parser/SourceHandler/File.pm index d4d9300..d7f49eb 100644 --- a/cpan/Test-Harness/lib/TAP/Parser/SourceHandler/File.pm +++ b/cpan/Test-Harness/lib/TAP/Parser/SourceHandler/File.pm @@ -16,11 +16,11 @@ TAP::Parser::SourceHandler::File - Stream TAP from a text file. =head1 VERSION -Version 3.33 +Version 3.34 =cut -our $VERSION = '3.33'; +our $VERSION = '3.34'; =head1 SYNOPSIS diff --git a/cpan/Test-Harness/lib/TAP/Parser/SourceHandler/Handle.pm b/cpan/Test-Harness/lib/TAP/Parser/SourceHandler/Handle.pm index 697ebf4..cd25a83 100644 --- a/cpan/Test-Harness/lib/TAP/Parser/SourceHandler/Handle.pm +++ b/cpan/Test-Harness/lib/TAP/Parser/SourceHandler/Handle.pm @@ -16,11 +16,11 @@ TAP::Parser::SourceHandler::Handle - Stream TAP from an IO::Handle or a GLOB. =head1 VERSION -Version 3.33 +Version 3.34 =cut -our $VERSION = '3.33'; +our $VERSION = '3.34'; =head1 SYNOPSIS diff --git a/cpan/Test-Harness/lib/TAP/Parser/SourceHandler/Perl.pm b/cpan/Test-Harness/lib/TAP/Parser/SourceHandler/Perl.pm index 138500a..7d27ae1 100644 --- a/cpan/Test-Harness/lib/TAP/Parser/SourceHandler/Perl.pm +++ b/cpan/Test-Harness/lib/TAP/Parser/SourceHandler/Perl.pm @@ -21,11 +21,11 @@ TAP::Parser::SourceHandler::Perl - Stream TAP from a Perl executable =head1 VERSION -Version 3.33 +Version 3.34 =cut -our $VERSION = '3.33'; +our $VERSION = '3.34'; =head1 SYNOPSIS diff --git a/cpan/Test-Harness/lib/TAP/Parser/SourceHandler/RawTAP.pm b/cpan/Test-Harness/lib/TAP/Parser/SourceHandler/RawTAP.pm index 69cb88c..14814f3 100644 --- a/cpan/Test-Harness/lib/TAP/Parser/SourceHandler/RawTAP.pm +++ b/cpan/Test-Harness/lib/TAP/Parser/SourceHandler/RawTAP.pm @@ -16,11 +16,11 @@ TAP::Parser::SourceHandler::RawTAP - Stream output from raw TAP in a scalar/arra =head1 VERSION -Version 3.33 +Version 3.34 =cut -our $VERSION = '3.33'; +our $VERSION = '3.34'; =head1 SYNOPSIS diff --git a/cpan/Test-Harness/lib/TAP/Parser/YAMLish/Reader.pm b/cpan/Test-Harness/lib/TAP/Parser/YAMLish/Reader.pm index 3dfe62c..4e79452 100644 --- a/cpan/Test-Harness/lib/TAP/Parser/YAMLish/Reader.pm +++ b/cpan/Test-Harness/lib/TAP/Parser/YAMLish/Reader.pm @@ -5,7 +5,7 @@ use warnings; use base 'TAP::Object'; -our $VERSION = '3.33'; +our $VERSION = '3.34'; # TODO: # Handle blessed object syntax @@ -269,7 +269,7 @@ TAP::Parser::YAMLish::Reader - Read YAMLish data from iterator =head1 VERSION -Version 3.33 +Version 3.34 =head1 SYNOPSIS diff --git a/cpan/Test-Harness/lib/TAP/Parser/YAMLish/Writer.pm b/cpan/Test-Harness/lib/TAP/Parser/YAMLish/Writer.pm index 258a7cf..25d5462 100644 --- a/cpan/Test-Harness/lib/TAP/Parser/YAMLish/Writer.pm +++ b/cpan/Test-Harness/lib/TAP/Parser/YAMLish/Writer.pm @@ -5,7 +5,7 @@ use warnings; use base 'TAP::Object'; -our $VERSION = '3.33'; +our $VERSION = '3.34'; my $ESCAPE_CHAR = qr{ [ \x00-\x1f \" ] }x; my $ESCAPE_KEY = qr{ (?: ^\W ) | $ESCAPE_CHAR }x; @@ -146,7 +146,7 @@ TAP::Parser::YAMLish::Writer - Write YAMLish data =head1 VERSION -Version 3.33 +Version 3.34 =head1 SYNOPSIS diff --git a/cpan/Test-Harness/lib/Test/Harness.pm b/cpan/Test-Harness/lib/Test/Harness.pm index d080401..f8e9a73 100644 --- a/cpan/Test-Harness/lib/Test/Harness.pm +++ b/cpan/Test-Harness/lib/Test/Harness.pm @@ -31,11 +31,11 @@ Test::Harness - Run Perl standard test scripts with statistics =head1 VERSION -Version 3.33 +Version 3.34 =cut -our $VERSION = '3.33'; +our $VERSION = '3.34'; # Backwards compatibility for exportable variable names. *verbose = *Verbose; diff --git a/cpan/Test-Harness/t/taint.t b/cpan/Test-Harness/t/taint.t index 42efc18..06a6238 100644 --- a/cpan/Test-Harness/t/taint.t +++ b/cpan/Test-Harness/t/taint.t @@ -52,7 +52,7 @@ END # Check that PERL5LIB is propagated to -T. { my $sentinel_dir = 'i/do/not/exist'; - local $ENV{PERL5LIB} = join $Config{path_sep}, $ENV{PERL5LIB}, $sentinel_dir; + local $ENV{PERL5LIB} = join $Config{path_sep}, $ENV{PERL5LIB} || '', $sentinel_dir; run_test_file(sprintf <<'END', $sentinel_dir); #!/usr/bin/perl -T diff --git a/cpan/Test-Simple/lib/Test/Builder.pm b/cpan/Test-Simple/lib/Test/Builder.pm index e871ae1..e10e102 100644 --- a/cpan/Test-Simple/lib/Test/Builder.pm +++ b/cpan/Test-Simple/lib/Test/Builder.pm @@ -1,1248 +1,2672 @@ package Test::Builder; -use 5.008001; +use 5.006; use strict; use warnings; -our $VERSION = '1.301001_071'; +our $VERSION = '1.001009'; $VERSION = eval $VERSION; ## no critic (BuiltinFunctions::ProhibitStringyEval) - -use Test::Stream 1.301001 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::Meta qw/MODERN/; - -use Test::Stream::Util qw/try protect unoverload_str is_regex/; -use Scalar::Util qw/blessed reftype/; - -use Test::More::Tools; - BEGIN { - my $meta = Test::Stream::Meta->is_tester('main'); - Test::Stream->shared->set_use_legacy(1) - unless $meta && $meta->[MODERN]; + if( $] < 5.008 ) { + require Test::Builder::IO::Scalar; + } } -# 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); +# 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 }; } - return $ctx; } -sub stream { - my $self = shift; - return $self->{stream} || Test::Stream->shared; -} +=head1 NAME -sub depth { $_[0]->{depth} || 0 } +Test::Builder - Backend for building test libraries -# 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 => \¬e, - plan => \&plan, - done_testing => \&done_testing, -); +=head1 SYNOPSIS -sub WARN_OF_OVERRIDE { - my ($sub, $ctx) = @_; + package My::Test::Module; + use base 'Test::Builder::Module'; - 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 $CLASS = __PACKAGE__; - return if $new == $old; + sub ok { + my($test, $name) = @_; + my $tb = $CLASS->builder; - 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; + $tb->ok($test, $name); + } - warn <<" EOT" unless $WARNED{"$pkg $name $file $line"}++; -******************************************************************************* -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 -} +=head1 DESCRIPTION +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>. -#################### -# {{{ Constructors # -#################### +=head2 Construction -sub new { - my $class = shift; - my %params = @_; - $Test ||= $class->create(shared_stream => 1); +=over 4 + +=item B<new> + + my $Test = Test::Builder->new; + +Returns a Test::Builder object representing the current state of the +test. + +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. + +If you want a completely new Test::Builder object different from the +singleton, use C<create>. + +=cut +our $Test = Test::Builder->new; + +sub new { + my($class) = shift; + $Test ||= $class->create; 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 %params = @_; + my $class = shift; my $self = bless {}, $class; - $self->reset(%params); + $self->reset; 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 # -#################### -############################# -# {{{ Children and subtests # -############################# +=item B<child> -sub subtest { - my $self = shift; - my $ctx = $self->ctx(); - return tmt->subtest(@_); -} + 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>. + +Trying to run a test when you have an open child will also C<croak> and cause +the test suite to fail. + +=cut sub child { my( $self, $name ) = @_; - my $ctx = $self->ctx; - - if ($self->{child}) { - my $cname = $self->{child}->{Name}; - $ctx->throw("You already have a child named ($cname) running"); + if( $self->{Child_Name} ) { + $self->croak("You already have a child named ($self->{Child_Name}) running"); } - $name ||= "Child of " . $self->{Name}; - $ctx->child('push', $name, 1); + my $parent_in_todo = $self->in_todo; - my $stream = $self->{stream} || Test::Stream->shared; + # Clear $TODO for the child. + my $orig_TODO = $self->find_TODO(undef, 1, undef); - my $child = bless { - %$self, - '?' => $?, - parent => $self, - }; + my $class = ref $self; + my $child = $class->create; + + # Add to our indentation + $child->_indent( $self->_indent . ' ' ); - $? = 0; - $child->{Name} = $name; - $self->{child} = $child; - Scalar::Util::weaken($self->{child}); + # Make the child use the same outputs as the parent + for my $method (qw(output failure_output todo_output)) { + $child->$method( $self->$method ); + } + + # Ensure the child understands if they're inside a TODO + if( $parent_in_todo ) { + $child->failure_output( $self->todo_output ); + } + # 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; } -sub finalize { - my $self = shift; - return unless $self->{parent}; +=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 { **** PATCH TRUNCATED AT 2000 LINES -- 24426 NOT SHOWN **** -- Perl5 Master Repository
