Hello community, here is the log from the commit of package perl-Capture-Tiny for openSUSE:Factory checked in at 2016-03-11 12:29:23 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/perl-Capture-Tiny (Old) and /work/SRC/openSUSE:Factory/.perl-Capture-Tiny.new (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "perl-Capture-Tiny" Changes: -------- --- /work/SRC/openSUSE:Factory/perl-Capture-Tiny/perl-Capture-Tiny.changes 2015-05-18 23:02:52.000000000 +0200 +++ /work/SRC/openSUSE:Factory/.perl-Capture-Tiny.new/perl-Capture-Tiny.changes 2016-03-11 12:29:25.000000000 +0100 @@ -1,0 +2,43 @@ +Mon Mar 7 09:44:38 UTC 2016 - co...@suse.com + +- updated to 0.36 + see /usr/share/doc/packages/perl-Capture-Tiny/Changes + + 0.36 2016-02-28 21:36:57-05:00 America/New_York + + [Docs] + + - Fixed typos. + + 0.34 2016-02-18 23:26:13-05:00 America/New_York + + [Fixed] + + - Removed spurious JSON::PP dependency added by a broken + Dist::Zilla plugin. + + 0.32 2016-02-18 10:12:02-05:00 America/New_York + + [Docs] + + - Changed internal formatting of documentation + + [Changes] + + - No functional changes from 0.31 + + 0.31 2016-02-14 07:33:50-07:00 America/Mazatlan (TRIAL RELEASE) + + [Fixed] + + - Application of layers to handles during and after capture now attempts + to more accurately duplicate the original layers, including potential + duplicate layers. Because of the unusual ways that layers are ordered + and applied, exact duplication is not guaranteeed, but this should be + better that what Capture::Tiny did before. + + - Avoids a hard crash on Windows with Perl < 5.20 if a fork occurs in a + capture block. Also documented the risks and lack of support for + forks in capture blocks. + +------------------------------------------------------------------- Old: ---- Capture-Tiny-0.30.tar.gz New: ---- Capture-Tiny-0.36.tar.gz ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ perl-Capture-Tiny.spec ++++++ --- /var/tmp/diff_new_pack.ts0pA0/_old 2016-03-11 12:29:26.000000000 +0100 +++ /var/tmp/diff_new_pack.ts0pA0/_new 2016-03-11 12:29:26.000000000 +0100 @@ -1,7 +1,7 @@ # # spec file for package perl-Capture-Tiny # -# Copyright (c) 2015 SUSE LINUX GmbH, Nuernberg, Germany. +# Copyright (c) 2016 SUSE LINUX GmbH, Nuernberg, Germany. # # All modifications and additions to the file contributed by third parties # remain the property of their copyright owners, unless otherwise agreed @@ -17,7 +17,7 @@ Name: perl-Capture-Tiny -Version: 0.30 +Version: 0.36 Release: 0 %define cpan_name Capture-Tiny Summary: Capture STDOUT and STDERR from Perl, XS or external programs ++++++ Capture-Tiny-0.30.tar.gz -> Capture-Tiny-0.36.tar.gz ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/Capture-Tiny-0.30/Changes new/Capture-Tiny-0.36/Changes --- old/Capture-Tiny-0.30/Changes 2015-05-16 02:44:00.000000000 +0200 +++ new/Capture-Tiny-0.36/Changes 2016-02-29 03:37:03.000000000 +0100 @@ -1,5 +1,42 @@ Revision history for Capture-Tiny +0.36 2016-02-28 21:36:57-05:00 America/New_York + + [Docs] + + - Fixed typos. + +0.34 2016-02-18 23:26:13-05:00 America/New_York + + [Fixed] + + - Removed spurious JSON::PP dependency added by a broken + Dist::Zilla plugin. + +0.32 2016-02-18 10:12:02-05:00 America/New_York + + [Docs] + + - Changed internal formatting of documentation + + [Changes] + + - No functional changes from 0.31 + +0.31 2016-02-14 07:33:50-07:00 America/Mazatlan (TRIAL RELEASE) + + [Fixed] + + - Application of layers to handles during and after capture now attempts + to more accurately duplicate the original layers, including potential + duplicate layers. Because of the unusual ways that layers are ordered + and applied, exact duplication is not guaranteeed, but this should be + better that what Capture::Tiny did before. + + - Avoids a hard crash on Windows with Perl < 5.20 if a fork occurs in a + capture block. Also documented the risks and lack of support for + forks in capture blocks. + 0.30 2015-05-15 20:43:54-04:00 America/New_York No changes from 0.29 diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/Capture-Tiny-0.30/MANIFEST new/Capture-Tiny-0.36/MANIFEST --- old/Capture-Tiny-0.30/MANIFEST 2015-05-16 02:44:00.000000000 +0200 +++ new/Capture-Tiny-0.36/MANIFEST 2016-02-29 03:37:03.000000000 +0100 @@ -1,4 +1,4 @@ -# This file was automatically generated by Dist::Zilla::Plugin::Manifest v5.036. +# This file was automatically generated by Dist::Zilla::Plugin::Manifest v5.043. CONTRIBUTING.mkdn Changes LICENSE @@ -32,21 +32,23 @@ t/16-catch-errors.t t/17-pass-results.t t/18-custom-capture.t +t/19-relayering.t t/20-stdout-badtie.t t/21-stderr-badtie.t t/22-stdin-badtie.t t/23-all-tied.t t/24-all-badtied.t +t/25-cap-fork.t t/lib/Cases.pm t/lib/TieEvil.pm t/lib/TieLC.pm t/lib/Utils.pm xt/author/00-compile.t xt/author/critic.t +xt/author/pod-coverage.t xt/author/pod-spell.t +xt/author/pod-syntax.t +xt/author/test-version.t xt/release/distmeta.t xt/release/minimum-version.t -xt/release/pod-coverage.t -xt/release/pod-syntax.t xt/release/portability.t -xt/release/test-version.t diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/Capture-Tiny-0.30/META.json new/Capture-Tiny-0.36/META.json --- old/Capture-Tiny-0.30/META.json 2015-05-16 02:44:00.000000000 +0200 +++ new/Capture-Tiny-0.36/META.json 2016-02-29 03:37:03.000000000 +0100 @@ -4,7 +4,7 @@ "David Golden <dagol...@cpan.org>" ], "dynamic_config" : 1, - "generated_by" : "Dist::Zilla version 5.036, CPAN::Meta::Converter version 2.150002", + "generated_by" : "Dist::Zilla version 5.043, CPAN::Meta::Converter version 2.150001", "license" : [ "apache_2_0" ], @@ -15,10 +15,10 @@ "name" : "Capture-Tiny", "no_index" : { "directory" : [ - "t", - "xt", + "corpus", "examples", - "corpus" + "t", + "xt" ], "package" : [ "DB" @@ -37,17 +37,21 @@ "Dist::Zilla::Plugin::Prereqs" : "0", "Dist::Zilla::Plugin::RemovePrereqs" : "0", "Dist::Zilla::PluginBundle::DAGOLDEN" : "0.072", + "English" : "0", "File::Spec" : "0", "File::Temp" : "0", "IO::Handle" : "0", "IPC::Open3" : "0", "Pod::Coverage::TrustPod" : "0", + "Pod::Wordlist" : "0", + "Software::License::Apache_2_0" : "0", "Test::CPAN::Meta" : "0", "Test::More" : "0", "Test::Pod" : "1.41", "Test::Pod::Coverage" : "1.08", "Test::Spelling" : "0.12", - "Test::Version" : "1" + "Test::Version" : "1", + "blib" : "1.01" } }, "runtime" : { @@ -79,7 +83,7 @@ "provides" : { "Capture::Tiny" : { "file" : "lib/Capture/Tiny.pm", - "version" : "0.30" + "version" : "0.36" } }, "release_status" : "stable", @@ -94,11 +98,12 @@ "web" : "https://github.com/dagolden/Capture-Tiny" } }, - "version" : "0.30", + "version" : "0.36", "x_authority" : "cpan:DAGOLDEN", "x_contributors" : [ "Dagfinn Ilmari Mannsåker <ilm...@ilmari.org>", - "David E. Wheeler <da...@justatheory.com>" + "David E. Wheeler <da...@justatheory.com>", + "fecundf <not.com+git...@gmail.com>" ] } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/Capture-Tiny-0.30/META.yml new/Capture-Tiny-0.36/META.yml --- old/Capture-Tiny-0.30/META.yml 2015-05-16 02:44:00.000000000 +0200 +++ new/Capture-Tiny-0.36/META.yml 2016-02-29 03:37:03.000000000 +0100 @@ -11,7 +11,7 @@ configure_requires: ExtUtils::MakeMaker: '6.17' dynamic_config: 1 -generated_by: 'Dist::Zilla version 5.036, CPAN::Meta::Converter version 2.150002' +generated_by: 'Dist::Zilla version 5.043, CPAN::Meta::Converter version 2.150001' license: apache meta-spec: url: http://module-build.sourceforge.net/META-spec-v1.4.html @@ -19,16 +19,16 @@ name: Capture-Tiny no_index: directory: + - corpus + - examples - t - xt - - examples - - corpus package: - DB provides: Capture::Tiny: file: lib/Capture/Tiny.pm - version: '0.30' + version: '0.36' requires: Carp: '0' Exporter: '0' @@ -43,8 +43,9 @@ bugtracker: https://github.com/dagolden/Capture-Tiny/issues homepage: https://github.com/dagolden/Capture-Tiny repository: https://github.com/dagolden/Capture-Tiny.git -version: '0.30' +version: '0.36' x_authority: cpan:DAGOLDEN x_contributors: - 'Dagfinn Ilmari Mannsåker <ilm...@ilmari.org>' - 'David E. Wheeler <da...@justatheory.com>' + - 'fecundf <not.com+git...@gmail.com>' diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/Capture-Tiny-0.30/Makefile.PL new/Capture-Tiny-0.36/Makefile.PL --- old/Capture-Tiny-0.30/Makefile.PL 2015-05-16 02:44:00.000000000 +0200 +++ new/Capture-Tiny-0.36/Makefile.PL 2016-02-29 03:37:03.000000000 +0100 @@ -1,4 +1,4 @@ -# This file was automatically generated by Dist::Zilla::Plugin::MakeMaker v5.036. +# This file was automatically generated by Dist::Zilla::Plugin::MakeMaker v5.043. use strict; use warnings; @@ -13,7 +13,6 @@ "ExtUtils::MakeMaker" => "6.17" }, "DISTNAME" => "Capture-Tiny", - "EXE_FILES" => [], "LICENSE" => "apache", "MIN_PERL_VERSION" => "5.006", "NAME" => "Capture::Tiny", @@ -34,7 +33,7 @@ "Test::More" => "0.62", "lib" => 0 }, - "VERSION" => "0.30", + "VERSION" => "0.36", "test" => { "TESTS" => "t/*.t" } @@ -44,7 +43,7 @@ my %FallbackPrereqs = ( "Carp" => 0, "Exporter" => 0, - "ExtUtils::MakeMaker" => "6.17", + "ExtUtils::MakeMaker" => 0, "File::Spec" => 0, "File::Temp" => 0, "IO::File" => 0, diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/Capture-Tiny-0.30/README new/Capture-Tiny-0.36/README --- old/Capture-Tiny-0.30/README 2015-05-16 02:44:00.000000000 +0200 +++ new/Capture-Tiny-0.36/README 2016-02-29 03:37:03.000000000 +0100 @@ -3,38 +3,38 @@ programs VERSION - version 0.30 + version 0.36 SYNOPSIS - use Capture::Tiny ':all'; - - # capture from external command - - ($stdout, $stderr, $exit) = capture { - system( $cmd, @args ); - }; - - # capture from arbitrary code (Perl or external) - - ($stdout, $stderr, @result) = capture { - # your code here - }; - - # capture partial or merged output - - $stdout = capture_stdout { ... }; - $stderr = capture_stderr { ... }; - $merged = capture_merged { ... }; - - # tee output - - ($stdout, $stderr) = tee { - # your code here - }; - - $stdout = tee_stdout { ... }; - $stderr = tee_stderr { ... }; - $merged = tee_merged { ... }; + use Capture::Tiny ':all'; + + # capture from external command + + ($stdout, $stderr, $exit) = capture { + system( $cmd, @args ); + }; + + # capture from arbitrary code (Perl or external) + + ($stdout, $stderr, @result) = capture { + # your code here + }; + + # capture partial or merged output + + $stdout = capture_stdout { ... }; + $stderr = capture_stderr { ... }; + $merged = capture_merged { ... }; + + # tee output + + ($stdout, $stderr) = tee { + # your code here + }; + + $stdout = tee_stdout { ... }; + $stderr = tee_stderr { ... }; + $merged = tee_merged { ... }; DESCRIPTION Capture::Tiny provides a simple, portable way to capture almost anything @@ -49,8 +49,8 @@ The following functions are available. None are exported by default. capture - ($stdout, $stderr, @result) = capture \&code; - $stdout = capture \&code; + ($stdout, $stderr, @result) = capture \&code; + $stdout = capture \&code; The "capture" function takes a code reference and returns what is sent to STDOUT and STDERR as well as any return values from the code @@ -62,40 +62,40 @@ It is prototyped to take a subroutine reference as an argument. Thus, it can be called in block form: - ($stdout, $stderr) = capture { - # your code here ... - }; + ($stdout, $stderr) = capture { + # your code here ... + }; Note that the coderef is evaluated in list context. If you wish to force scalar context on the return value, you must use the "scalar" keyword. - ($stdout, $stderr, $count) = capture { - my @list = qw/one two three/; - return scalar @list; # $count will be 3 - }; + ($stdout, $stderr, $count) = capture { + my @list = qw/one two three/; + return scalar @list; # $count will be 3 + }; Also note that within the coderef, the @_ variable will be empty. So don't use arguments from a surrounding subroutine without copying them to an array first: - sub wont_work { - my ($stdout, $stderr) = capture { do_stuff( @_ ) }; # WRONG - ... - } - - sub will_work { - my @args = @_; - my ($stdout, $stderr) = capture { do_stuff( @args ) }; # RIGHT - ... - } + sub wont_work { + my ($stdout, $stderr) = capture { do_stuff( @_ ) }; # WRONG + ... + } + + sub will_work { + my @args = @_; + my ($stdout, $stderr) = capture { do_stuff( @args ) }; # RIGHT + ... + } Captures are normally done to an anonymous temporary filehandle. To capture via a named file (e.g. to externally monitor a long-running capture), provide custom filehandles as a trailing list of option pairs: - my $out_fh = IO::File->new("out.txt", "w+"); - my $err_fh = IO::File->new("out.txt", "w+"); - capture { ... } stdout => $out_fh, stderr => $err_fh; + my $out_fh = IO::File->new("out.txt", "w+"); + my $err_fh = IO::File->new("out.txt", "w+"); + capture { ... } stdout => $out_fh, stderr => $err_fh; The filehandles must be read/write and seekable. Modifying the files or filehandles during a capture operation will give unpredictable results. @@ -105,22 +105,22 @@ reading back from the capture handles. capture_stdout - ($stdout, @result) = capture_stdout \&code; - $stdout = capture_stdout \&code; + ($stdout, @result) = capture_stdout \&code; + $stdout = capture_stdout \&code; The "capture_stdout" function works just like "capture" except only STDOUT is captured. STDERR is not captured. capture_stderr - ($stderr, @result) = capture_stderr \&code; - $stderr = capture_stderr \&code; + ($stderr, @result) = capture_stderr \&code; + $stderr = capture_stderr \&code; The "capture_stderr" function works just like "capture" except only STDERR is captured. STDOUT is not captured. capture_merged - ($merged, @result) = capture_merged \&code; - $merged = capture_merged \&code; + ($merged, @result) = capture_merged \&code; + $merged = capture_merged \&code; The "capture_merged" function works just like "capture" except STDOUT and STDERR are merged. (Technically, STDERR is redirected to the same @@ -130,8 +130,8 @@ guaranteed to be properly ordered due to buffering. tee - ($stdout, $stderr, @result) = tee \&code; - $stdout = tee \&code; + ($stdout, $stderr, @result) = tee \&code; + $stdout = tee \&code; The "tee" function works just like "capture", except that output is captured as well as passed on to the original STDOUT and STDERR. @@ -141,22 +141,22 @@ were tied or opened to a scalar handle. tee_stdout - ($stdout, @result) = tee_stdout \&code; - $stdout = tee_stdout \&code; + ($stdout, @result) = tee_stdout \&code; + $stdout = tee_stdout \&code; The "tee_stdout" function works just like "tee" except only STDOUT is teed. STDERR is not teed (output goes to STDERR as usual). tee_stderr - ($stderr, @result) = tee_stderr \&code; - $stderr = tee_stderr \&code; + ($stderr, @result) = tee_stderr \&code; + $stderr = tee_stderr \&code; The "tee_stderr" function works just like "tee" except only STDERR is teed. STDOUT is not teed (output goes to STDOUT as usual). tee_merged - ($merged, @result) = tee_merged \&code; - $merged = tee_merged \&code; + ($merged, @result) = tee_merged \&code; + $merged = tee_merged \&code; The "tee_merged" function works just like "capture_merged" except that output is captured as well as passed on to STDOUT. @@ -173,10 +173,10 @@ platform. PerlIO layers - Capture::Tiny does it's best to preserve PerlIO layers such as ':utf8' - or ':crlf' when capturing (only for Perl 5.8.1+) . Layers should be - applied to STDOUT or STDERR *before* the call to "capture" or "tee". - This may not work for tied filehandles (see below). + Capture::Tiny does its best to preserve PerlIO layers such as ':utf8' or + ':crlf' when capturing (only for Perl 5.8.1+) . Layers should be applied + to STDOUT or STDERR *before* the call to "capture" or "tee". This may + not work for tied filehandles (see below). Modifying filehandles before capturing Generally speaking, you should do little or no manipulation of the @@ -186,8 +186,7 @@ behaviors, as described below. Capture::Tiny does its best to compensate for these situations, but the results may not be what you desire. - Closed filehandles - + Closed filehandles Capture::Tiny will work even if STDIN, STDOUT or STDERR have been previously closed. However, since they will be reopened to capture or tee output, any code within the captured block that depends on finding @@ -204,16 +203,14 @@ filehandles and also breaks tee() for undiagnosed reasons. So don't do that. - Localized filehandles - + Localized filehandles If code localizes any of Perl's standard filehandles before capturing, the capture will affect the localized filehandles and not the original ones. External system calls are not affected by localizing a filehandle in Perl and will continue to send output to the original filehandles (which will thus not be captured). - Scalar filehandles - + Scalar filehandles If STDOUT or STDERR are reopened to scalar filehandles prior to the call to "capture" or "tee", then Capture::Tiny will override the output filehandle for the duration of the "capture" or "tee" call and then, for @@ -226,8 +223,7 @@ processes will read from the null device instead, but this is not guaranteed. - Tied output filehandles - + Tied output filehandles If STDOUT or STDERR are tied prior to the call to "capture" or "tee", then Capture::Tiny will attempt to override the tie for the duration of the "capture" or "tee" call and then send captured output to the tied @@ -239,8 +235,7 @@ to determine appropriate layers like ":utf8" from the underlying filehandle and do the right thing. - Tied input filehandle - + Tied input filehandle Capture::Tiny attempts to preserve the semantics of tied STDIN, but this requires Perl 5.8 and is not entirely predictable. External processes will not be able to read from such a handle. @@ -248,12 +243,19 @@ Unless having STDIN tied is crucial, it may be safest to localize STDIN when capturing: - my ($out, $err) = do { local *STDIN; capture { ... } }; + my ($out, $err) = do { local *STDIN; capture { ... } }; Modifying filehandles during a capture Attempting to modify STDIN, STDOUT or STDERR *during* "capture" or "tee" is almost certainly going to cause problems. Don't do that. + Forking inside a capture + Forks aren't portable. The behavior of filehandles during a fork is even + less so. If Capture::Tiny detects that a fork has occurred within a + capture, it will shortcut in the child process and return empty strings + for captures. Other problems may occur in the child or parent, as well. + Forking in a capture block is not recommended. + No support for Perl 5.8.0 It's just too buggy when it comes to layers and UTF-8. Perl 5.8.1 or later is recommended. @@ -268,13 +270,13 @@ ready to receive data within 30 seconds (or whatever is the value of $Capture::Tiny::TIMEOUT). An alternate timeout may be specified by setting the "PERL_CAPTURE_TINY_TIMEOUT" environment variable. Setting it - to zero will disable timeouts. B<NOTE>, this does not timeout the code + to zero will disable timeouts. NOTE, this does not timeout the code reference being captured -- this only prevents Capture::Tiny itself from hanging your process waiting for its child processes to be ready to proceed. SEE ALSO - This module was, inspired by IO::CaptureOutput, which provides similar + This module was inspired by IO::CaptureOutput, which provides similar functionality without the ability to tee output and with more complicated code and API. IO::CaptureOutput does not handle layers or most of the unusual cases described in the "Limitations" section and I @@ -349,6 +351,8 @@ * David E. Wheeler <da...@justatheory.com> + * fecundf <not.com+git...@gmail.com> + COPYRIGHT AND LICENSE This software is Copyright (c) 2009 by David Golden. diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/Capture-Tiny-0.30/Todo new/Capture-Tiny-0.36/Todo --- old/Capture-Tiny-0.30/Todo 2015-05-16 02:44:00.000000000 +0200 +++ new/Capture-Tiny-0.36/Todo 2016-02-29 03:37:03.000000000 +0100 @@ -6,4 +6,3 @@ - Test utf8 output - Test with curses -- Add tee_stdout and tee_stderr functions (?) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/Capture-Tiny-0.30/cpanfile new/Capture-Tiny-0.36/cpanfile --- old/Capture-Tiny-0.30/cpanfile 2015-05-16 02:44:00.000000000 +0200 +++ new/Capture-Tiny-0.36/cpanfile 2016-02-29 03:37:03.000000000 +0100 @@ -30,15 +30,19 @@ requires "Dist::Zilla::Plugin::Prereqs" => "0"; requires "Dist::Zilla::Plugin::RemovePrereqs" => "0"; requires "Dist::Zilla::PluginBundle::DAGOLDEN" => "0.072"; + requires "English" => "0"; requires "File::Spec" => "0"; requires "File::Temp" => "0"; requires "IO::Handle" => "0"; requires "IPC::Open3" => "0"; requires "Pod::Coverage::TrustPod" => "0"; + requires "Pod::Wordlist" => "0"; + requires "Software::License::Apache_2_0" => "0"; requires "Test::CPAN::Meta" => "0"; requires "Test::More" => "0"; requires "Test::Pod" => "1.41"; requires "Test::Pod::Coverage" => "1.08"; requires "Test::Spelling" => "0.12"; requires "Test::Version" => "1"; + requires "blib" => "1.01"; }; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/Capture-Tiny-0.30/lib/Capture/Tiny.pm new/Capture-Tiny-0.36/lib/Capture/Tiny.pm --- old/Capture-Tiny-0.30/lib/Capture/Tiny.pm 2015-05-16 02:44:00.000000000 +0200 +++ new/Capture-Tiny-0.36/lib/Capture/Tiny.pm 2016-02-29 03:37:03.000000000 +0100 @@ -3,7 +3,7 @@ use warnings; package Capture::Tiny; # ABSTRACT: Capture STDOUT and STDERR from Perl, XS or external programs -our $VERSION = '0.30'; +our $VERSION = '0.36'; use Carp (); use Exporter (); use IO::Handle (); @@ -83,10 +83,18 @@ sub _relayer { my ($fh, $layers) = @_; # _debug("# requested layers (@{$layers}) for @{[fileno $fh]}\n"); - my %seen = ( unix => 1, perlio => 1 ); # filter these out - my @unique = grep { !$seen{$_}++ } @$layers; - # _debug("# applying unique layers (@unique) to @{[fileno $fh]}\n"); - binmode($fh, join(":", ":raw", @unique)); + + # eliminate pseudo-layers + binmode( $fh, ":raw" ); + # strip off real layers until only :unix is left + while ( 1 < ( my $layers =()= PerlIO::get_layers( $fh, output => 1 ) ) ) { + binmode( $fh, ":pop" ); + } + # apply other layers + my @to_apply = @$layers; + shift @to_apply; # eliminate initial :unix + # _debug("# applying layers (unix @to_apply) to @{[fileno $fh]}\n"); + binmode($fh, ":" . join(":",@to_apply)); } sub _name { @@ -209,7 +217,9 @@ $stash->{flag_files}{$which} = scalar tmpnam(); # execute @cmd as a separate process if ( $IS_WIN32 ) { - local $@; + my $old_eval_err=$@; + undef $@; + eval "use Win32API::File qw/GetOsFHandle SetHandleInformation fileLastError HANDLE_FLAG_INHERIT INVALID_HANDLE_VALUE/ "; # _debug( "# Win32API::File loaded\n") unless $@; my $os_fhandle = GetOsFHandle( $stash->{tee}{$which} ); @@ -219,6 +229,7 @@ _open_std( $stash->{child}{$which} ); $stash->{pid}{$which} = system(1, @cmd, $stash->{flag_files}{$which}); # not restoring std here as it all gets redirected again shortly anyway + $@=$old_eval_err; } else { # use fork _fork_exec( $which, $stash ); @@ -358,19 +369,22 @@ # _debug( "# redirecting in parent ...\n" ); _open_std( $stash->{new} ); # execute user provided code - my ($exit_code, $inner_error, $outer_error, @result); + my ($exit_code, $inner_error, $outer_error, $orig_pid, @result); { + $orig_pid = $$; local *STDIN = *CT_ORIG_STDIN if $localize{stdin}; # get original, not proxy STDIN # _debug( "# finalizing layers ...\n" ); _relayer(\*STDOUT, $layers{stdout}) if $do_stdout; _relayer(\*STDERR, $layers{stderr}) if $do_stderr; # _debug( "# running code $code ...\n" ); - local $@; + my $old_eval_err=$@; + undef $@; eval { @result = $code->(); $inner_error = $@ }; $exit_code = $?; # save this for later $outer_error = $@; # save this for later STDOUT->flush if $do_stdout; STDERR->flush if $do_stderr; + $@ = $old_eval_err; } # restore prior filehandles and shut down tees # _debug( "# restoring filehandles ...\n" ); @@ -385,7 +399,7 @@ # return captured output, but shortcut in void context # unless we have to echo output to tied/scalar handles; my %got; - if ( defined wantarray or ($do_tee && keys %localize) ) { + if ( $orig_pid == $$ and ( defined wantarray or ($do_tee && keys %localize) ) ) { for ( keys %do ) { _relayer($stash->{capture}{$_}, $layers{$_}); $got{$_} = _slurp($_, $stash); @@ -422,39 +436,39 @@ =head1 VERSION -version 0.30 +version 0.36 =head1 SYNOPSIS - use Capture::Tiny ':all'; - - # capture from external command - - ($stdout, $stderr, $exit) = capture { - system( $cmd, @args ); - }; - - # capture from arbitrary code (Perl or external) - - ($stdout, $stderr, @result) = capture { - # your code here - }; - - # capture partial or merged output - - $stdout = capture_stdout { ... }; - $stderr = capture_stderr { ... }; - $merged = capture_merged { ... }; - - # tee output - - ($stdout, $stderr) = tee { - # your code here - }; - - $stdout = tee_stdout { ... }; - $stderr = tee_stderr { ... }; - $merged = tee_merged { ... }; + use Capture::Tiny ':all'; + + # capture from external command + + ($stdout, $stderr, $exit) = capture { + system( $cmd, @args ); + }; + + # capture from arbitrary code (Perl or external) + + ($stdout, $stderr, @result) = capture { + # your code here + }; + + # capture partial or merged output + + $stdout = capture_stdout { ... }; + $stderr = capture_stderr { ... }; + $merged = capture_merged { ... }; + + # tee output + + ($stdout, $stderr) = tee { + # your code here + }; + + $stdout = tee_stdout { ... }; + $stderr = tee_stderr { ... }; + $merged = tee_merged { ... }; =head1 DESCRIPTION @@ -471,10 +485,10 @@ =head2 capture - ($stdout, $stderr, @result) = capture \&code; - $stdout = capture \&code; + ($stdout, $stderr, @result) = capture \&code; + $stdout = capture \&code; -The C<<< capture >>> function takes a code reference and returns what is sent to +The C<capture> function takes a code reference and returns what is sent to STDOUT and STDERR as well as any return values from the code reference. In scalar context, it returns only STDOUT. If no output was received for a filehandle, it returns an empty string for that filehandle. Regardless of calling @@ -483,70 +497,70 @@ It is prototyped to take a subroutine reference as an argument. Thus, it can be called in block form: - ($stdout, $stderr) = capture { - # your code here ... - }; + ($stdout, $stderr) = capture { + # your code here ... + }; Note that the coderef is evaluated in list context. If you wish to force -scalar context on the return value, you must use the C<<< scalar >>> keyword. +scalar context on the return value, you must use the C<scalar> keyword. - ($stdout, $stderr, $count) = capture { - my @list = qw/one two three/; - return scalar @list; # $count will be 3 - }; + ($stdout, $stderr, $count) = capture { + my @list = qw/one two three/; + return scalar @list; # $count will be 3 + }; -Also note that within the coderef, the C<<< @_ >>> variable will be empty. So don't +Also note that within the coderef, the C<@_> variable will be empty. So don't use arguments from a surrounding subroutine without copying them to an array first: - sub wont_work { - my ($stdout, $stderr) = capture { do_stuff( @_ ) }; # WRONG - ... - } - - sub will_work { - my @args = @_; - my ($stdout, $stderr) = capture { do_stuff( @args ) }; # RIGHT - ... - } + sub wont_work { + my ($stdout, $stderr) = capture { do_stuff( @_ ) }; # WRONG + ... + } + + sub will_work { + my @args = @_; + my ($stdout, $stderr) = capture { do_stuff( @args ) }; # RIGHT + ... + } Captures are normally done to an anonymous temporary filehandle. To capture via a named file (e.g. to externally monitor a long-running capture), provide custom filehandles as a trailing list of option pairs: - my $out_fh = IO::File->new("out.txt", "w+"); - my $err_fh = IO::File->new("out.txt", "w+"); - capture { ... } stdout => $out_fh, stderr => $err_fh; + my $out_fh = IO::File->new("out.txt", "w+"); + my $err_fh = IO::File->new("out.txt", "w+"); + capture { ... } stdout => $out_fh, stderr => $err_fh; -The filehandles must be readE<sol>write and seekable. Modifying the files or +The filehandles must be read/write and seekable. Modifying the files or filehandles during a capture operation will give unpredictable results. Existing IO layers on them may be changed by the capture. -When called in void context, C<<< capture >>> saves memory and time by +When called in void context, C<capture> saves memory and time by not reading back from the capture handles. =head2 capture_stdout - ($stdout, @result) = capture_stdout \&code; - $stdout = capture_stdout \&code; + ($stdout, @result) = capture_stdout \&code; + $stdout = capture_stdout \&code; -The C<<< capture_stdout >>> function works just like C<<< capture >>> except only +The C<capture_stdout> function works just like C<capture> except only STDOUT is captured. STDERR is not captured. =head2 capture_stderr - ($stderr, @result) = capture_stderr \&code; - $stderr = capture_stderr \&code; + ($stderr, @result) = capture_stderr \&code; + $stderr = capture_stderr \&code; -The C<<< capture_stderr >>> function works just like C<<< capture >>> except only +The C<capture_stderr> function works just like C<capture> except only STDERR is captured. STDOUT is not captured. =head2 capture_merged - ($merged, @result) = capture_merged \&code; - $merged = capture_merged \&code; + ($merged, @result) = capture_merged \&code; + $merged = capture_merged \&code; -The C<<< capture_merged >>> function works just like C<<< capture >>> except STDOUT and +The C<capture_merged> function works just like C<capture> except STDOUT and STDERR are merged. (Technically, STDERR is redirected to the same capturing handle as STDOUT before executing the function.) @@ -555,39 +569,39 @@ =head2 tee - ($stdout, $stderr, @result) = tee \&code; - $stdout = tee \&code; + ($stdout, $stderr, @result) = tee \&code; + $stdout = tee \&code; -The C<<< tee >>> function works just like C<<< capture >>>, except that output is captured +The C<tee> function works just like C<capture>, except that output is captured as well as passed on to the original STDOUT and STDERR. -When called in void context, C<<< tee >>> saves memory and time by +When called in void context, C<tee> saves memory and time by not reading back from the capture handles, except when the original STDOUT OR STDERR were tied or opened to a scalar handle. =head2 tee_stdout - ($stdout, @result) = tee_stdout \&code; - $stdout = tee_stdout \&code; + ($stdout, @result) = tee_stdout \&code; + $stdout = tee_stdout \&code; -The C<<< tee_stdout >>> function works just like C<<< tee >>> except only +The C<tee_stdout> function works just like C<tee> except only STDOUT is teed. STDERR is not teed (output goes to STDERR as usual). =head2 tee_stderr - ($stderr, @result) = tee_stderr \&code; - $stderr = tee_stderr \&code; + ($stderr, @result) = tee_stderr \&code; + $stderr = tee_stderr \&code; -The C<<< tee_stderr >>> function works just like C<<< tee >>> except only +The C<tee_stderr> function works just like C<tee> except only STDERR is teed. STDOUT is not teed (output goes to STDOUT as usual). =head2 tee_merged - ($merged, @result) = tee_merged \&code; - $merged = tee_merged \&code; + ($merged, @result) = tee_merged \&code; + $merged = tee_merged \&code; -The C<<< tee_merged >>> function works just like C<<< capture_merged >>> except that output +The C<tee_merged> function works just like C<capture_merged> except that output is captured as well as passed on to STDOUT. Caution: STDOUT and STDERR output in the merged result are not guaranteed to be @@ -597,17 +611,17 @@ =head2 Portability -Portability is a goal, not a guarantee. C<<< tee >>> requires fork, except on -Windows where C<<< system(1, @cmd) >>> is used instead. Not tested on any +Portability is a goal, not a guarantee. C<tee> requires fork, except on +Windows where C<system(1, @cmd)> is used instead. Not tested on any particularly esoteric platforms yet. See the L<CPAN Testers Matrix|http://matrix.cpantesters.org/?dist=Capture-Tiny> for test result by platform. =head2 PerlIO layers -Capture::Tiny does it's best to preserve PerlIO layers such as ':utf8' or +Capture::Tiny does its best to preserve PerlIO layers such as ':utf8' or ':crlf' when capturing (only for Perl 5.8.1+) . Layers should be applied to -STDOUT or STDERR I<before> the call to C<<< capture >>> or C<<< tee >>>. This may not work +STDOUT or STDERR I<before> the call to C<capture> or C<tee>. This may not work for tied filehandles (see below). =head2 Modifying filehandles before capturing @@ -615,11 +629,11 @@ Generally speaking, you should do little or no manipulation of the standard IO filehandles prior to using Capture::Tiny. In particular, closing, reopening, localizing or tying standard filehandles prior to capture may cause a variety of -unexpected, undesirable andE<sol>or unreliable behaviors, as described below. +unexpected, undesirable and/or unreliable behaviors, as described below. Capture::Tiny does its best to compensate for these situations, but the results may not be what you desire. -B<Closed filehandles> +=head3 Closed filehandles Capture::Tiny will work even if STDIN, STDOUT or STDERR have been previously closed. However, since they will be reopened to capture or tee output, any @@ -634,18 +648,18 @@ Prior to Perl 5.12, closed STDIN combined with PERL_UNICODE=D leaks filehandles and also breaks tee() for undiagnosed reasons. So don't do that. -B<Localized filehandles> +=head3 Localized filehandles If code localizes any of Perl's standard filehandles before capturing, the capture will affect the localized filehandles and not the original ones. External system calls are not affected by localizing a filehandle in Perl and will continue to send output to the original filehandles (which will thus not be captured). -B<Scalar filehandles> +=head3 Scalar filehandles If STDOUT or STDERR are reopened to scalar filehandles prior to the call to -C<<< capture >>> or C<<< tee >>>, then Capture::Tiny will override the output filehandle for -the duration of the C<<< capture >>> or C<<< tee >>> call and then, for C<<< tee >>>, send captured +C<capture> or C<tee>, then Capture::Tiny will override the output filehandle for +the duration of the C<capture> or C<tee> call and then, for C<tee>, send captured output to the output filehandle after the capture is complete. (Requires Perl 5.8) @@ -654,20 +668,20 @@ a handle. Capture::Tiny tries to ensure that external processes will read from the null device instead, but this is not guaranteed. -B<Tied output filehandles> +=head3 Tied output filehandles -If STDOUT or STDERR are tied prior to the call to C<<< capture >>> or C<<< tee >>>, then +If STDOUT or STDERR are tied prior to the call to C<capture> or C<tee>, then Capture::Tiny will attempt to override the tie for the duration of the -C<<< capture >>> or C<<< tee >>> call and then send captured output to the tied filehandle after +C<capture> or C<tee> call and then send captured output to the tied filehandle after the capture is complete. (Requires Perl 5.8) Capture::Tiny may not succeed resending UTF-8 encoded data to a tied STDOUT or STDERR filehandle. Characters may appear as bytes. If the tied filehandle is based on L<Tie::StdHandle>, then Capture::Tiny will attempt to determine -appropriate layers like C<<< :utf8 >>> from the underlying filehandle and do the right +appropriate layers like C<:utf8> from the underlying filehandle and do the right thing. -B<Tied input filehandle> +=head3 Tied input filehandle Capture::Tiny attempts to preserve the semantics of tied STDIN, but this requires Perl 5.8 and is not entirely predictable. External processes @@ -676,13 +690,21 @@ Unless having STDIN tied is crucial, it may be safest to localize STDIN when capturing: - my ($out, $err) = do { local *STDIN; capture { ... } }; + my ($out, $err) = do { local *STDIN; capture { ... } }; =head2 Modifying filehandles during a capture -Attempting to modify STDIN, STDOUT or STDERR I<during> C<<< capture >>> or C<<< tee >>> is +Attempting to modify STDIN, STDOUT or STDERR I<during> C<capture> or C<tee> is almost certainly going to cause problems. Don't do that. +=head3 Forking inside a capture + +Forks aren't portable. The behavior of filehandles during a fork is even +less so. If Capture::Tiny detects that a fork has occurred within a +capture, it will shortcut in the child process and return empty strings for +captures. Other problems may occur in the child or parent, as well. +Forking in a capture block is not recommended. + =head2 No support for Perl 5.8.0 It's just too buggy when it comes to layers and UTF-8. Perl 5.8.1 or later @@ -696,18 +718,18 @@ =head2 PERL_CAPTURE_TINY_TIMEOUT -Capture::Tiny uses subprocesses internally for C<<< tee >>>. By default, +Capture::Tiny uses subprocesses internally for C<tee>. By default, Capture::Tiny will timeout with an error if such subprocesses are not ready to receive data within 30 seconds (or whatever is the value of -C<<< $Capture::Tiny::TIMEOUT >>>). An alternate timeout may be specified by setting -the C<<< PERL_CAPTURE_TINY_TIMEOUT >>> environment variable. Setting it to zero will -disable timeouts. BE<lt>NOTEE<gt>, this does not timeout the code reference being +C<$Capture::Tiny::TIMEOUT>). An alternate timeout may be specified by setting +the C<PERL_CAPTURE_TINY_TIMEOUT> environment variable. Setting it to zero will +disable timeouts. B<NOTE>, this does not timeout the code reference being captured -- this only prevents Capture::Tiny itself from hanging your process waiting for its child processes to be ready to proceed. =head1 SEE ALSO -This module was, inspired by L<IO::CaptureOutput>, which provides +This module was inspired by L<IO::CaptureOutput>, which provides similar functionality without the ability to tee output and with more complicated code and API. L<IO::CaptureOutput> does not handle layers or most of the unusual cases described in the L</Limitations> section and @@ -718,7 +740,7 @@ circumstances. I'm probably missing some. The long list is provided to show why I felt Capture::Tiny was necessary. -=over +=over 4 =item * @@ -831,7 +853,7 @@ =head1 CONTRIBUTORS -=for stopwords Dagfinn Ilmari Mannsåker David E. Wheeler +=for stopwords Dagfinn Ilmari Mannsåker David E. Wheeler fecundf =over 4 @@ -843,6 +865,10 @@ David E. Wheeler <da...@justatheory.com> +=item * + +fecundf <not.com+git...@gmail.com> + =back =head1 COPYRIGHT AND LICENSE diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/Capture-Tiny-0.30/t/00-report-prereqs.dd new/Capture-Tiny-0.36/t/00-report-prereqs.dd --- old/Capture-Tiny-0.30/t/00-report-prereqs.dd 2015-05-16 02:44:00.000000000 +0200 +++ new/Capture-Tiny-0.36/t/00-report-prereqs.dd 2016-02-29 03:37:03.000000000 +0100 @@ -11,17 +11,21 @@ 'Dist::Zilla::Plugin::Prereqs' => '0', 'Dist::Zilla::Plugin::RemovePrereqs' => '0', 'Dist::Zilla::PluginBundle::DAGOLDEN' => '0.072', + 'English' => '0', 'File::Spec' => '0', 'File::Temp' => '0', 'IO::Handle' => '0', 'IPC::Open3' => '0', 'Pod::Coverage::TrustPod' => '0', + 'Pod::Wordlist' => '0', + 'Software::License::Apache_2_0' => '0', 'Test::CPAN::Meta' => '0', 'Test::More' => '0', 'Test::Pod' => '1.41', 'Test::Pod::Coverage' => '1.08', 'Test::Spelling' => '0.12', - 'Test::Version' => '1' + 'Test::Version' => '1', + 'blib' => '1.01' } }, 'runtime' => { diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/Capture-Tiny-0.30/t/00-report-prereqs.t new/Capture-Tiny-0.36/t/00-report-prereqs.t --- old/Capture-Tiny-0.30/t/00-report-prereqs.t 2015-05-16 02:44:00.000000000 +0200 +++ new/Capture-Tiny-0.36/t/00-report-prereqs.t 2016-02-29 03:37:03.000000000 +0100 @@ -3,7 +3,7 @@ use strict; use warnings; -# This test was generated by Dist::Zilla::Plugin::Test::ReportPrereqs 0.021 +# This test was generated by Dist::Zilla::Plugin::Test::ReportPrereqs 0.024 use Test::More tests => 1; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/Capture-Tiny-0.30/t/19-relayering.t new/Capture-Tiny-0.36/t/19-relayering.t --- old/Capture-Tiny-0.30/t/19-relayering.t 1970-01-01 01:00:00.000000000 +0100 +++ new/Capture-Tiny-0.36/t/19-relayering.t 2016-02-29 03:37:03.000000000 +0100 @@ -0,0 +1,83 @@ +# Copyright (c) 2009 by David Golden. All rights reserved. +# Licensed under Apache License, Version 2.0 (the "License"). +# You may not use this file except in compliance with the License. +# A copy of the License was distributed with this file or you may obtain a +# copy of the License from http://www.apache.org/licenses/LICENSE-2.0 + +use strict; +use warnings; +use Test::More; +use lib 't/lib'; +use Utils qw/next_fd sig_num/; +use Capture::Tiny ':all'; + +unless ( PerlIO->can('get_layers') ) { + plan skip_all => "Requires PerlIO::getlayers"; +} + +plan 'no_plan'; + +local $ENV{PERL_CAPTURE_TINY_TIMEOUT} = 0; # no timeouts + +my $builder = Test::More->builder; +binmode( $builder->failure_output, ':utf8' ) if $] >= 5.008; + +my $fd = next_fd; +my ( $out, $err, $res, @res, %before, %inner, %outer ); + +sub _set_layers { + my ($fh, $new_layers) = @_; + # eliminate pseudo-layers + binmode( $fh, ":raw" ) or die "can't binmode $fh"; + # strip off real layers until only :unix is left + while ( 1 < ( my $layers =()= PerlIO::get_layers( $fh, output => 1 ) ) ) { + binmode( $fh, ":pop" ) or die "can't binmode $fh"; + } + binmode($fh, $new_layers); +} + +sub _get_layers { + return ( + stdout => [ PerlIO::get_layers( *STDOUT, output => 1 ) ], + stderr => [ PerlIO::get_layers( *STDERR, output => 1 ) ], + ); +} + +sub _cmp_layers { + local $Test::Builder::Level = $Test::Builder::Level + 1; + my ($got, $exp, $label) = @_; + + ($got, $exp) = map { ":" . join(":", @$_) } $got, $exp; + is( $got, $exp, $label ); +} + +#--------------------------------------------------------------------------# +# relayer should duplicate layers +#--------------------------------------------------------------------------# + +_set_layers( \*STDOUT, ":unix:encoding(UTF-8):encoding(UTF-8):crlf" ); +_set_layers( \*STDERR, ":unix:encoding(UTF-8):encoding(UTF-8):crlf" ); + +%before = _get_layers(); + +( $out, $err, @res ) = capture { + %inner = _get_layers(); + print STDOUT "foo\n"; + print STDERR "bar\n"; +}; + +%outer = _get_layers(); + +_cmp_layers( $inner{$_}, $before{$_}, "$_: layers inside capture match previous" ) + for qw/stdout stderr/; +_cmp_layers( $outer{$_}, $before{$_}, "$_: layers after capture match previous" ) + for qw/stdout stderr/; + +#--------------------------------------------------------------------------# +# finish +#--------------------------------------------------------------------------# + +is( next_fd, $fd, "no file descriptors leaked" ); + +exit 0; +# vim: set ts=4 sts=4 sw=4 et tw=75: diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/Capture-Tiny-0.30/t/25-cap-fork.t new/Capture-Tiny-0.36/t/25-cap-fork.t --- old/Capture-Tiny-0.30/t/25-cap-fork.t 1970-01-01 01:00:00.000000000 +0100 +++ new/Capture-Tiny-0.36/t/25-cap-fork.t 2016-02-29 03:37:03.000000000 +0100 @@ -0,0 +1,50 @@ +# By Yary Hluchan with portions copied from David Golden +# Copyright (c) 2015 assigned by Yary Hluchan to David Golden. +# All rights reserved. +# Licensed under Apache License, Version 2.0 (the "License"). +# You may not use this file except in compliance with the License. +# A copy of the License was distributed with this file or you may obtain a +# copy of the License from http://www.apache.org/licenses/LICENSE-2.0 + +use strict; +use warnings; +use Test::More; +use lib 't/lib'; +use Utils qw/next_fd/; +use Capture::Tiny 'capture'; + +use Config; +my $no_fork = $^O ne 'MSWin32' && ! $Config{d_fork}; +if ( $no_fork ) { + plan skip_all => 'tee() requires fork'; +} +else { + plan 'no_plan'; +} + +my $builder = Test::More->builder; +binmode($builder->failure_output, ':utf8') if $] >= 5.008; + +my $fd = next_fd; + + +my ($stdout, $stderr, @result) = capture { + if (!defined(my $child = fork)) { die "fork() failed" } + elsif ($child == 0) { + print "Happiness"; + print STDERR "Certainty\n"; + exit; + } + else { + wait; + print ", a parent-ly\n"; + } + return qw(a b c); +}; + +is ( $stdout, "Happiness, a parent-ly\n", "got stdout"); +is ( $stderr, "Certainty\n", "got stderr"); +is ( "@result", "a b c" , "got result"); +is ( next_fd, $fd, "no file descriptors leaked" ); + +exit 0; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/Capture-Tiny-0.30/xt/author/00-compile.t new/Capture-Tiny-0.36/xt/author/00-compile.t --- old/Capture-Tiny-0.30/xt/author/00-compile.t 2015-05-16 02:44:00.000000000 +0200 +++ new/Capture-Tiny-0.36/xt/author/00-compile.t 2016-02-29 03:37:03.000000000 +0100 @@ -2,7 +2,7 @@ use strict; use warnings; -# this test was generated with Dist::Zilla::Plugin::Test::Compile 2.052 +# this test was generated with Dist::Zilla::Plugin::Test::Compile 2.054 use Test::More; @@ -39,6 +39,9 @@ waitpid($pid, 0); is($?, 0, "$lib loaded ok"); + shift @_warnings if @_warnings and $_warnings[0] =~ /^Using .*\bblib/ + and not eval { require blib; blib->VERSION('1.01') }; + if (@_warnings) { warn @_warnings; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/Capture-Tiny-0.30/xt/author/pod-coverage.t new/Capture-Tiny-0.36/xt/author/pod-coverage.t --- old/Capture-Tiny-0.30/xt/author/pod-coverage.t 1970-01-01 01:00:00.000000000 +0100 +++ new/Capture-Tiny-0.36/xt/author/pod-coverage.t 2016-02-29 03:37:03.000000000 +0100 @@ -0,0 +1,7 @@ +#!perl +# This file was automatically generated by Dist::Zilla::Plugin::PodCoverageTests. + +use Test::Pod::Coverage 1.08; +use Pod::Coverage::TrustPod; + +all_pod_coverage_ok({ coverage_class => 'Pod::Coverage::TrustPod' }); diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/Capture-Tiny-0.30/xt/author/pod-spell.t new/Capture-Tiny-0.36/xt/author/pod-spell.t --- old/Capture-Tiny-0.30/xt/author/pod-spell.t 2015-05-16 02:44:00.000000000 +0200 +++ new/Capture-Tiny-0.36/xt/author/pod-spell.t 2016-02-29 03:37:03.000000000 +0100 @@ -2,7 +2,7 @@ use warnings; use Test::More; -# generated by Dist::Zilla::Plugin::Test::PodSpelling 2.006009 +# generated by Dist::Zilla::Plugin::Test::PodSpelling 2.007000 use Test::Spelling 0.12; use Pod::Wordlist; @@ -24,6 +24,8 @@ ilmari Wheeler david +fecundf +not lib Capture Tiny diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/Capture-Tiny-0.30/xt/author/pod-syntax.t new/Capture-Tiny-0.36/xt/author/pod-syntax.t --- old/Capture-Tiny-0.30/xt/author/pod-syntax.t 1970-01-01 01:00:00.000000000 +0100 +++ new/Capture-Tiny-0.36/xt/author/pod-syntax.t 2016-02-29 03:37:03.000000000 +0100 @@ -0,0 +1,7 @@ +#!perl +# This file was automatically generated by Dist::Zilla::Plugin::PodSyntaxTests. +use strict; use warnings; +use Test::More; +use Test::Pod 1.41; + +all_pod_files_ok(); diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/Capture-Tiny-0.30/xt/author/test-version.t new/Capture-Tiny-0.36/xt/author/test-version.t --- old/Capture-Tiny-0.30/xt/author/test-version.t 1970-01-01 01:00:00.000000000 +0100 +++ new/Capture-Tiny-0.36/xt/author/test-version.t 2016-02-29 03:37:03.000000000 +0100 @@ -0,0 +1,24 @@ +use strict; +use warnings; +use Test::More; + +# generated by Dist::Zilla::Plugin::Test::Version 1.05 +use Test::Version; + +my @imports = qw( version_all_ok ); + +my $params = { + is_strict => 0, + has_version => 1, + multiple => 0, + +}; + +push @imports, $params + if version->parse( $Test::Version::VERSION ) >= version->parse('1.002'); + + +Test::Version->import(@imports); + +version_all_ok; +done_testing; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/Capture-Tiny-0.30/xt/release/pod-coverage.t new/Capture-Tiny-0.36/xt/release/pod-coverage.t --- old/Capture-Tiny-0.30/xt/release/pod-coverage.t 2015-05-16 02:44:00.000000000 +0200 +++ new/Capture-Tiny-0.36/xt/release/pod-coverage.t 1970-01-01 01:00:00.000000000 +0100 @@ -1,7 +0,0 @@ -#!perl -# This file was automatically generated by Dist::Zilla::Plugin::PodCoverageTests. - -use Test::Pod::Coverage 1.08; -use Pod::Coverage::TrustPod; - -all_pod_coverage_ok({ coverage_class => 'Pod::Coverage::TrustPod' }); diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/Capture-Tiny-0.30/xt/release/pod-syntax.t new/Capture-Tiny-0.36/xt/release/pod-syntax.t --- old/Capture-Tiny-0.30/xt/release/pod-syntax.t 2015-05-16 02:44:00.000000000 +0200 +++ new/Capture-Tiny-0.36/xt/release/pod-syntax.t 1970-01-01 01:00:00.000000000 +0100 @@ -1,6 +0,0 @@ -#!perl -# This file was automatically generated by Dist::Zilla::Plugin::PodSyntaxTests. -use Test::More; -use Test::Pod 1.41; - -all_pod_files_ok(); diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/Capture-Tiny-0.30/xt/release/test-version.t new/Capture-Tiny-0.36/xt/release/test-version.t --- old/Capture-Tiny-0.30/xt/release/test-version.t 2015-05-16 02:44:00.000000000 +0200 +++ new/Capture-Tiny-0.36/xt/release/test-version.t 1970-01-01 01:00:00.000000000 +0100 @@ -1,23 +0,0 @@ -use strict; -use warnings; -use Test::More; - -# generated by Dist::Zilla::Plugin::Test::Version 1.02 -use Test::Version; - -my @imports = qw( version_all_ok ); - -my $params = { - is_strict => 0, - has_version => 1, - -}; - -push @imports, $params - if version->parse( $Test::Version::VERSION ) >= version->parse('1.002'); - - -Test::Version->import(@imports); - -version_all_ok; -done_testing;