diff -Nru libcarp-always-perl-0.13/Changes libcarp-always-perl-0.16/Changes --- libcarp-always-perl-0.13/Changes 2013-11-06 15:44:54.000000000 +0000 +++ libcarp-always-perl-0.16/Changes 2018-08-10 23:32:22.000000000 +0000 @@ -1,6 +1,77 @@ Revision history for Perl extension Carp::Always. - $Id: Changes 1480 2007-07-30 14:35:04Z me $ +0.16 Fri Aug 10 2018 + + - Promoted to stable release + +0.15_02 Fri Aug 10 2018 TRIAL RELEASE + + [Compatibility fixes] + - Disable bogus warnings on perl ≤ 5.8.8 + - Restore compatibility with Carp < 1.25 + +0.15_01 Fri Aug 10 2018 TRIAL RELEASE + + - Fix long standing bug with duplicate tracebacks + (when carp / croak / cluck / confess were used) RT#123354 + - Fix long standing bug when message ended at " at WHATEVER" + RT#96561 GH#2 + +0.15 Thu Aug 9 2018 + + - Promoted to stable release + +0.14_05 Thu Aug 9 2018 TRIAL RELEASE + + - Fix one test for the sake of Carp ≤ 1.25 + +0.14_04 Thu Aug 9 2018 TRIAL RELEASE + + - [EXPERIMENTAL] Prepare for extensions + - Fix switching off and on + +0.14_03 Thu Aug 9 2018 TRIAL RELEASE + + - Document import() and unimport() + - Internal refactoring: Carp::Always::_longmess() + +0.14_02 Thu Aug 9 2018 TRIAL RELEASE + + [BREAKING CHANGES] + - Carp::Always enabling via import() - + that means "use Carp::Always" works, but not "use Carp::Always ()" + - Carp::Always disabling via unimport() - + That means disabling can be done with "no Carp::Always" + - Carp::Always doesn't use BEGIN and END blocks anymore + +0.14_01 Thu Aug 9 2018 TRIAL RELEASE + + - Tighter regex to suppress " at FILE line LINE.\n" RT#96561 + - Tests for edge cases of warn () and die () + +0.14 Wed Aug 8 2018 + + - Promoted to stable release + +0.13_03 Wed Aug 8 2018 TRIAL RELEASE + + - t/010simple.t is a required test + - Pruning docs of old cruft + +0.13_02 Wed Aug 8 2018 TRIAL RELEASE + + - Add Devel::Confess to See Also + (https://github.com/aferreira/cpan-Carp-Always/issues/7) + - Change bugtracker to GitHub + - Fine tuning to POD test + +0.13_01 Wed Aug 8 2018 TRIAL RELEASE + - No code change + - Fine-tuning of prereqs + + [thanks Shawn Carroll] + - Test::Pod and Test::Pod::Coverage as author tests again + - Added LICENSE file 0.13 Wed Nov 6 2012 - Test::More and Test::Base go to TEST_REQUIRES @@ -8,7 +79,7 @@ (solves RT#87423) 0.12 Tue Aug 21 2012 - - fix failing t/pod.t due to bad encoding (CPAN #77656) + - fix failing t/pod.t due to bad encoding (RT#77656) 0.11 Wed Apr 18 2011 - fix test failure with Carp 1.25+ RT#75320 [thanks ANDK and greeneg] diff -Nru libcarp-always-perl-0.13/debian/changelog libcarp-always-perl-0.16/debian/changelog --- libcarp-always-perl-0.13/debian/changelog 2018-04-08 16:44:42.000000000 +0000 +++ libcarp-always-perl-0.16/debian/changelog 2018-08-24 14:37:04.000000000 +0000 @@ -1,3 +1,17 @@ +libcarp-always-perl (0.16-1) unstable; urgency=medium + + * Team upload. + + [ Laurent Baillet ] + * New upstream version 0.16 + * declare compliance with Debian Policy 4.2.0 + + [ gregor herrmann ] + * Update debian/upstream/metadata. + * Update years of upstream copyright. + + -- Laurent Baillet Fri, 24 Aug 2018 14:37:04 +0000 + libcarp-always-perl (0.13-1) unstable; urgency=medium * Team upload. diff -Nru libcarp-always-perl-0.13/debian/control libcarp-always-perl-0.16/debian/control --- libcarp-always-perl-0.13/debian/control 2018-04-08 16:44:42.000000000 +0000 +++ libcarp-always-perl-0.16/debian/control 2018-08-24 14:37:04.000000000 +0000 @@ -7,7 +7,7 @@ Build-Depends: debhelper (>= 10) Build-Depends-Indep: perl, libtest-base-perl -Standards-Version: 4.1.4 +Standards-Version: 4.2.0 Vcs-Browser: https://salsa.debian.org/perl-team/modules/packages/libcarp-always-perl Vcs-Git: https://salsa.debian.org/perl-team/modules/packages/libcarp-always-perl.git Homepage: https://metacpan.org/release/Carp-Always diff -Nru libcarp-always-perl-0.13/debian/copyright libcarp-always-perl-0.16/debian/copyright --- libcarp-always-perl-0.13/debian/copyright 2018-04-08 16:44:42.000000000 +0000 +++ libcarp-always-perl-0.16/debian/copyright 2018-08-24 14:37:04.000000000 +0000 @@ -4,7 +4,7 @@ Source: https://metacpan.org/release/Carp-Always Files: * -Copyright: 2005-2013, Adriano R. Ferreira +Copyright: 2005-2013, 2018, Adriano R. Ferreira License: Artistic or GPL-1+ Files: debian/* diff -Nru libcarp-always-perl-0.13/debian/upstream/metadata libcarp-always-perl-0.16/debian/upstream/metadata --- libcarp-always-perl-0.13/debian/upstream/metadata 2018-04-08 16:44:42.000000000 +0000 +++ libcarp-always-perl-0.16/debian/upstream/metadata 2018-08-24 14:37:04.000000000 +0000 @@ -1,5 +1,7 @@ --- Archive: CPAN -Contact: Adriano R. Ferreira +Bug-Database: https://github.com/aferreira/cpan-Carp-Always/issues +Contact: Adriano Ferreira Name: Carp-Always -Repository: https://github.com/aferreira/cpan-Carp-Always +Repository: https://github.com/aferreira/cpan-Carp-Always.git +Repository-Browse: https://github.com/aferreira/cpan-Carp-Always diff -Nru libcarp-always-perl-0.13/lib/Carp/Always.pm libcarp-always-perl-0.16/lib/Carp/Always.pm --- libcarp-always-perl-0.13/lib/Carp/Always.pm 2013-11-06 15:44:54.000000000 +0000 +++ libcarp-always-perl-0.16/lib/Carp/Always.pm 2018-08-10 23:32:12.000000000 +0000 @@ -5,43 +5,51 @@ use strict; use warnings; -our $VERSION = '0.13'; +our $VERSION = '0.16'; +$VERSION =~ tr/_//d; -use Carp qw(verbose); # makes carp() cluck and croak() confess - -sub _warn { - if ($_[-1] =~ /\n$/s) { - my $arg = pop @_; - $arg =~ s/(.*)( at .*? line .*?\n$)/$1/s; - push @_, $arg; - } - warn &Carp::longmess; +BEGIN { + require Carp; + $Carp::CarpInternal{ +__PACKAGE__ }++; } -sub _die { - die @_ if ref($_[0]); - if ($_[-1] =~ /\n$/s) { +use constant CHOMP_DOT => $Carp::VERSION < 1.25; + +sub _warn { warn &_longmess } + +sub _die { die ref $_[0] ? @_ : &_longmess } + +sub _longmess { + if (CHOMP_DOT && $_[-1] =~ /\.\n\z/) { my $arg = pop @_; - $arg =~ s/(.*)( at .*? line .*?\n$)/$1/s; + $arg =~ s/\.\n\z/\n/; push @_, $arg; } - die &Carp::longmess; + my $mess = &Carp::longmess; + $mess =~ s/( at .*?\n)\1/$1/s; # Suppress duplicate tracebacks + $mess; } +my @HOOKS = qw(__DIE__ __WARN__); my %OLD_SIG; -BEGIN { - @OLD_SIG{qw(__DIE__ __WARN__)} = @SIG{qw(__DIE__ __WARN__)}; - $SIG{__DIE__} = \&_die; - $SIG{__WARN__} = \&_warn; +sub import { + my $class = shift; + return if $OLD_SIG{$class}; + @{ $OLD_SIG{$class} }{ @HOOKS, 'Verbose' } = (@SIG{@HOOKS}, $Carp::Verbose); + + @SIG{@HOOKS} = ($class->can('_die'), $class->can('_warn')); + $Carp::Verbose = 'verbose'; # makes carp() cluck and croak() confess } -END { - @SIG{qw(__DIE__ __WARN__)} = @OLD_SIG{qw(__DIE__ __WARN__)}; +sub unimport { + my $class = shift; + return unless $OLD_SIG{$class}; + no if "$]" <= 5.008008, 'warnings' => 'uninitialized'; + (@SIG{@HOOKS}, $Carp::Verbose) = @{ delete $OLD_SIG{$class} }{ @HOOKS, 'Verbose' }; } 1; -__END__ =encoding utf8 @@ -53,8 +61,7 @@ use Carp::Always; -makes every C and C complains loudly in the calling package -and elsewhere. More often used on the command line: +Often used on the command line: perl -MCarp::Always script.pl @@ -80,19 +87,39 @@ main::f('undef') called at -e line 2 main::g() called at -e line 2 -In the implementation, the C module does +In the implementation, the L module does the heavy work, through C. The actual implementation sets the signal hooks -C<$SIG{__WARN__}> and C<$SIG{__DIE__}> to +L<$SIG{__WARN__}|perlvar/%SIG> and L<$SIG{__DIE__}|perlvar/%SIG> to emit the stack backtraces. -Oh, by the way, C and C when requiring/using -the C module are also made verbose, behaving -like C and C, respectively. +Also, all uses of C and C are made verbose, +behaving like C and C. + +=head1 METHODS + +L implements the following methods. + +=head2 import + + Carp::Always->import() + +Enables L. Also triggered by statements like + + use Carp::Always; + use Carp::Always 0.14; + +but not by -=head2 EXPORT + use Carp::Always (); # does not invoke import() -Nothing at all is exported. +=head2 unimport + + Carp::Always->unimport(); + +Disables L. Also triggered with + + no Carp::Always; =head1 ACKNOWLEDGMENTS @@ -101,63 +128,46 @@ Sébastien also has a newer module called L with the same code and fewer flame comments on docs. The pruning of the uselessly long -docs of this module were prodded by Michael Schwern. +docs of this module was prodded by Michael Schwern. Schwern and others told me "the module name stinked" - it was called C. After thinking long -and not getting nowhere, I went with nuffin's suggestion +and getting nowhere, I went with nuffin's suggestion and now it is called C. -C which is now deprecate -lives in its own distribution (which won't go anywhere -but will stay there as a redirection to this module). =head1 SEE ALSO -=over 4 - -=item * - L -=item * - L and L -=item * - L -=item * - L -=back +L -Please report bugs via CPAN RT -http://rt.cpan.org/NoAuth/Bugs.html?Dist=Carp-Always. +L and L =head1 BUGS -Every (un)deserving module has its own pet bugs. - =over 4 =item * This module does not play well with other modules which fusses -around with C, C, C<$SIG{'__WARN__'}>, -C<$SIG{'__DIE__'}>. +around with C, C, C<$SIG{__WARN__}>, C<$SIG{__DIE__}>. =item * Test scripts are good. I should write more of these. -=item * +=back -I don't know if this module name is still a bug as it was -at the time of C. +Please report bugs via GitHub +L -=back +Backlog in CPAN RT: L =head1 AUTHOR @@ -165,7 +175,7 @@ =head1 COPYRIGHT AND LICENSE -Copyright (C) 2005-2013 by Adriano R. Ferreira +Copyright (C) 2005-2013, 2018 by Adriano Ferreira This library is free software; you can redistribute it and/or modify it under the same terms as Perl itself. diff -Nru libcarp-always-perl-0.13/LICENSE libcarp-always-perl-0.16/LICENSE --- libcarp-always-perl-0.13/LICENSE 1970-01-01 00:00:00.000000000 +0000 +++ libcarp-always-perl-0.16/LICENSE 2018-08-10 22:14:19.000000000 +0000 @@ -0,0 +1,379 @@ +This software is copyright (c) 2015-2013, 2018 by Adriano Ferreira. + +This is free software; you can redistribute it and/or modify it under +the same terms as the Perl 5 programming language system itself. + +Terms of the Perl programming language system itself + +a) the GNU General Public License as published by the Free + Software Foundation; either version 1, or (at your option) any + later version, or +b) the "Artistic License" + +--- The GNU General Public License, Version 1, February 1989 --- + +This software is Copyright (c) 2015-2013, 2018 by Adriano Ferreira. + +This is free software, licensed under: + + The GNU General Public License, Version 1, February 1989 + + GNU GENERAL PUBLIC LICENSE + Version 1, February 1989 + + Copyright (C) 1989 Free Software Foundation, Inc. + 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + Preamble + + The license agreements of most software companies try to keep users +at the mercy of those companies. By contrast, our General Public +License is intended to guarantee your freedom to share and change free +software--to make sure the software is free for all its users. The +General Public License applies to the Free Software Foundation's +software and to any other program whose authors commit to using it. +You can use it for your programs, too. + + When we speak of free software, we are referring to freedom, not +price. Specifically, the General Public License is designed to make +sure that you have the freedom to give away or sell copies of free +software, that you receive source code or can get it if you want it, +that you can change the software or use pieces of it in new free +programs; and that you know you can do these things. + + To protect your rights, we need to make restrictions that forbid +anyone to deny you these rights or to ask you to surrender the rights. +These restrictions translate to certain responsibilities for you if you +distribute copies of the software, or if you modify it. + + For example, if you distribute copies of a such a program, whether +gratis or for a fee, you must give the recipients all the rights that +you have. You must make sure that they, too, receive or can get the +source code. And you must tell them their rights. + + We protect your rights with two steps: (1) copyright the software, and +(2) offer you this license which gives you legal permission to copy, +distribute and/or modify the software. + + Also, for each author's protection and ours, we want to make certain +that everyone understands that there is no warranty for this free +software. If the software is modified by someone else and passed on, we +want its recipients to know that what they have is not the original, so +that any problems introduced by others will not reflect on the original +authors' reputations. + + The precise terms and conditions for copying, distribution and +modification follow. + + GNU GENERAL PUBLIC LICENSE + TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION + + 0. This License Agreement applies to any program or other work which +contains a notice placed by the copyright holder saying it may be +distributed under the terms of this General Public License. The +"Program", below, refers to any such program or work, and a "work based +on the Program" means either the Program or any work containing the +Program or a portion of it, either verbatim or with modifications. Each +licensee is addressed as "you". + + 1. You may copy and distribute verbatim copies of the Program's source +code as you receive it, in any medium, provided that you conspicuously and +appropriately publish on each copy an appropriate copyright notice and +disclaimer of warranty; keep intact all the notices that refer to this +General Public License and to the absence of any warranty; and give any +other recipients of the Program a copy of this General Public License +along with the Program. You may charge a fee for the physical act of +transferring a copy. + + 2. You may modify your copy or copies of the Program or any portion of +it, and copy and distribute such modifications under the terms of Paragraph +1 above, provided that you also do the following: + + a) cause the modified files to carry prominent notices stating that + you changed the files and the date of any change; and + + b) cause the whole of any work that you distribute or publish, that + in whole or in part contains the Program or any part thereof, either + with or without modifications, to be licensed at no charge to all + third parties under the terms of this General Public License (except + that you may choose to grant warranty protection to some or all + third parties, at your option). + + c) If the modified program normally reads commands interactively when + run, you must cause it, when started running for such interactive use + in the simplest and most usual way, to print or display an + announcement including an appropriate copyright notice and a notice + that there is no warranty (or else, saying that you provide a + warranty) and that users may redistribute the program under these + conditions, and telling the user how to view a copy of this General + Public License. + + d) You may charge a fee for the physical act of transferring a + copy, and you may at your option offer warranty protection in + exchange for a fee. + +Mere aggregation of another independent work with the Program (or its +derivative) on a volume of a storage or distribution medium does not bring +the other work under the scope of these terms. + + 3. You may copy and distribute the Program (or a portion or derivative of +it, under Paragraph 2) in object code or executable form under the terms of +Paragraphs 1 and 2 above provided that you also do one of the following: + + a) accompany it with the complete corresponding machine-readable + source code, which must be distributed under the terms of + Paragraphs 1 and 2 above; or, + + b) accompany it with a written offer, valid for at least three + years, to give any third party free (except for a nominal charge + for the cost of distribution) a complete machine-readable copy of the + corresponding source code, to be distributed under the terms of + Paragraphs 1 and 2 above; or, + + c) accompany it with the information you received as to where the + corresponding source code may be obtained. (This alternative is + allowed only for noncommercial distribution and only if you + received the program in object code or executable form alone.) + +Source code for a work means the preferred form of the work for making +modifications to it. For an executable file, complete source code means +all the source code for all modules it contains; but, as a special +exception, it need not include source code for modules which are standard +libraries that accompany the operating system on which the executable +file runs, or for standard header files or definitions files that +accompany that operating system. + + 4. You may not copy, modify, sublicense, distribute or transfer the +Program except as expressly provided under this General Public License. +Any attempt otherwise to copy, modify, sublicense, distribute or transfer +the Program is void, and will automatically terminate your rights to use +the Program under this License. However, parties who have received +copies, or rights to use copies, from you under this General Public +License will not have their licenses terminated so long as such parties +remain in full compliance. + + 5. By copying, distributing or modifying the Program (or any work based +on the Program) you indicate your acceptance of this license to do so, +and all its terms and conditions. + + 6. Each time you redistribute the Program (or any work based on the +Program), the recipient automatically receives a license from the original +licensor to copy, distribute or modify the Program subject to these +terms and conditions. You may not impose any further restrictions on the +recipients' exercise of the rights granted herein. + + 7. The Free Software Foundation may publish revised and/or new versions +of the General Public License from time to time. Such new versions will +be similar in spirit to the present version, but may differ in detail to +address new problems or concerns. + +Each version is given a distinguishing version number. If the Program +specifies a version number of the license which applies to it and "any +later version", you have the option of following the terms and conditions +either of that version or of any later version published by the Free +Software Foundation. If the Program does not specify a version number of +the license, you may choose any version ever published by the Free Software +Foundation. + + 8. If you wish to incorporate parts of the Program into other free +programs whose distribution conditions are different, write to the author +to ask for permission. For software which is copyrighted by the Free +Software Foundation, write to the Free Software Foundation; we sometimes +make exceptions for this. Our decision will be guided by the two goals +of preserving the free status of all derivatives of our free software and +of promoting the sharing and reuse of software generally. + + NO WARRANTY + + 9. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY +FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN +OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES +PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED +OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF +MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS +TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE +PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, +REPAIR OR CORRECTION. + + 10. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING +WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR +REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, +INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING +OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED +TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY +YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER +PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE +POSSIBILITY OF SUCH DAMAGES. + + END OF TERMS AND CONDITIONS + + Appendix: How to Apply These Terms to Your New Programs + + If you develop a new program, and you want it to be of the greatest +possible use to humanity, the best way to achieve this is to make it +free software which everyone can redistribute and change under these +terms. + + To do so, attach the following notices to the program. It is safest to +attach them to the start of each source file to most effectively convey +the exclusion of warranty; and each file should have at least the +"copyright" line and a pointer to where the full notice is found. + + + Copyright (C) 19yy + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 1, or (at your option) + any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301 USA + + +Also add information on how to contact you by electronic and paper mail. + +If the program is interactive, make it output a short notice like this +when it starts in an interactive mode: + + Gnomovision version 69, Copyright (C) 19xx name of author + Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'. + This is free software, and you are welcome to redistribute it + under certain conditions; type `show c' for details. + +The hypothetical commands `show w' and `show c' should show the +appropriate parts of the General Public License. Of course, the +commands you use may be called something other than `show w' and `show +c'; they could even be mouse-clicks or menu items--whatever suits your +program. + +You should also get your employer (if you work as a programmer) or your +school, if any, to sign a "copyright disclaimer" for the program, if +necessary. Here a sample; alter the names: + + Yoyodyne, Inc., hereby disclaims all copyright interest in the + program `Gnomovision' (a program to direct compilers to make passes + at assemblers) written by James Hacker. + + , 1 April 1989 + Ty Coon, President of Vice + +That's all there is to it! + + +--- The Artistic License 1.0 --- + +This software is Copyright (c) 2015-2013, 2018 by Adriano Ferreira. + +This is free software, licensed under: + + The Artistic License 1.0 + +The Artistic License + +Preamble + +The intent of this document is to state the conditions under which a Package +may be copied, such that the Copyright Holder maintains some semblance of +artistic control over the development of the package, while giving the users of +the package the right to use and distribute the Package in a more-or-less +customary fashion, plus the right to make reasonable modifications. + +Definitions: + + - "Package" refers to the collection of files distributed by the Copyright + Holder, and derivatives of that collection of files created through + textual modification. + - "Standard Version" refers to such a Package if it has not been modified, + or has been modified in accordance with the wishes of the Copyright + Holder. + - "Copyright Holder" is whoever is named in the copyright or copyrights for + the package. + - "You" is you, if you're thinking about copying or distributing this Package. + - "Reasonable copying fee" is whatever you can justify on the basis of media + cost, duplication charges, time of people involved, and so on. (You will + not be required to justify it to the Copyright Holder, but only to the + computing community at large as a market that must bear the fee.) + - "Freely Available" means that no fee is charged for the item itself, though + there may be fees involved in handling the item. It also means that + recipients of the item may redistribute it under the same conditions they + received it. + +1. You may make and give away verbatim copies of the source form of the +Standard Version of this Package without restriction, provided that you +duplicate all of the original copyright notices and associated disclaimers. + +2. You may apply bug fixes, portability fixes and other modifications derived +from the Public Domain or from the Copyright Holder. A Package modified in such +a way shall still be considered the Standard Version. + +3. You may otherwise modify your copy of this Package in any way, provided that +you insert a prominent notice in each changed file stating how and when you +changed that file, and provided that you do at least ONE of the following: + + a) place your modifications in the Public Domain or otherwise make them + Freely Available, such as by posting said modifications to Usenet or an + equivalent medium, or placing the modifications on a major archive site + such as ftp.uu.net, or by allowing the Copyright Holder to include your + modifications in the Standard Version of the Package. + + b) use the modified Package only within your corporation or organization. + + c) rename any non-standard executables so the names do not conflict with + standard executables, which must also be provided, and provide a separate + manual page for each non-standard executable that clearly documents how it + differs from the Standard Version. + + d) make other distribution arrangements with the Copyright Holder. + +4. You may distribute the programs of this Package in object code or executable +form, provided that you do at least ONE of the following: + + a) distribute a Standard Version of the executables and library files, + together with instructions (in the manual page or equivalent) on where to + get the Standard Version. + + b) accompany the distribution with the machine-readable source of the Package + with your modifications. + + c) accompany any non-standard executables with their corresponding Standard + Version executables, giving the non-standard executables non-standard + names, and clearly documenting the differences in manual pages (or + equivalent), together with instructions on where to get the Standard + Version. + + d) make other distribution arrangements with the Copyright Holder. + +5. You may charge a reasonable copying fee for any distribution of this +Package. You may charge any fee you choose for support of this Package. You +may not charge a fee for this Package itself. However, you may distribute this +Package in aggregate with other (possibly commercial) programs as part of a +larger (possibly commercial) software distribution provided that you do not +advertise this Package as a product of your own. + +6. The scripts and library files supplied as input to or produced as output +from the programs of this Package do not automatically fall under the copyright +of this Package, but belong to whomever generated them, and may be sold +commercially, and may be aggregated with this Package. + +7. C or perl subroutines supplied by you and linked into this Package shall not +be considered part of this Package. + +8. The name of the Copyright Holder may not be used to endorse or promote +products derived from this software without specific prior written permission. + +9. THIS PACKAGE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR IMPLIED +WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF +MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE. + +The End + diff -Nru libcarp-always-perl-0.13/Makefile.PL libcarp-always-perl-0.16/Makefile.PL --- libcarp-always-perl-0.13/Makefile.PL 2013-11-06 15:46:30.000000000 +0000 +++ libcarp-always-perl-0.16/Makefile.PL 2018-08-10 23:28:49.000000000 +0000 @@ -3,37 +3,51 @@ use ExtUtils::MakeMaker; my $EUMM_VERSION = eval $ExtUtils::MakeMaker::VERSION; -my $AUTHOR_TESTING = $ENV{AUTHOR_TESTING}; -WriteMakefile( - NAME => 'Carp::Always', - VERSION_FROM => 'lib/Carp/Always.pm', - PREREQ_PM => { - Carp => 0, - }, - ($] >= 5.005 ? ( - ABSTRACT_FROM => 'lib/Carp/Always.pm', - AUTHOR => 'Adriano R. Ferreira ' - ) : ()), - ($EUMM_VERSION >= 6.31 ? ( - LICENSE => 'perl', - ) : ()), - ($EUMM_VERSION > 6.4501 ? ( - META_MERGE => { - resources => { - repository => 'http://github.com/aferreira/cpan-Carp-Always', +my %META = ( + 'dynamic_config' => 0, + 'meta-spec' => { version => 2 }, + 'prereqs' => { + develop => { + requires => { # author tests + 'Test::Pod' => '1.18', + 'Test::Pod::Coverage' => '1.04', } }, - ) : ()), - ($EUMM_VERSION >= 6.6303 ? ( - TEST_REQUIRES => { - 'Test::More' => 0, - 'Test::Base' => 0, # minimum test - ($AUTHOR_TESTING ? ( # optional author tests - 'Test::Pod' => 0, - 'Test::Pod::Coverage' => 0, - ) : ()), + }, + 'resources' => { + repository => { + type => 'git', + url => 'git://github.com/aferreira/cpan-Carp-Always.git', + web => 'https://github.com/aferreira/cpan-Carp-Always' }, - ) : ()), + bugtracker => { + web => 'https://github.com/aferreira/cpan-Carp-Always/issues', + }, + }, +); +WriteMakefile( + NAME => 'Carp::Always', + VERSION_FROM => 'lib/Carp/Always.pm', + PREREQ_PM => { + Carp => 0, + }, + ABSTRACT_FROM => 'lib/Carp/Always.pm', + AUTHOR => 'Adriano Ferreira ', +($EUMM_VERSION >= 6.31 ? ( + LICENSE => 'perl', +) : ()), +($EUMM_VERSION > 6.48 ? ( + MIN_PERL_VERSION => 5.006, +) : ()), +($EUMM_VERSION > 6.4501 ? ( + META_MERGE => \%META, +) : ()), +($EUMM_VERSION >= 6.6303 ? ( + TEST_REQUIRES => { + 'Test::More' => 0, + 'Test::Base' => 0, # minimum test + }, +) : ()), ); diff -Nru libcarp-always-perl-0.13/MANIFEST libcarp-always-perl-0.16/MANIFEST --- libcarp-always-perl-0.13/MANIFEST 2013-11-06 15:47:37.000000000 +0000 +++ libcarp-always-perl-0.16/MANIFEST 2018-08-10 23:34:24.000000000 +0000 @@ -2,6 +2,7 @@ Makefile.PL MANIFEST README +LICENSE t/001use.t t/010simple.t @@ -9,6 +10,5 @@ t/099pod.t lib/Carp/Always.pm - -META.yml Module meta-data (added by MakeMaker) +META.yml Module YAML meta-data (added by MakeMaker) META.json Module JSON meta-data (added by MakeMaker) diff -Nru libcarp-always-perl-0.13/META.json libcarp-always-perl-0.16/META.json --- libcarp-always-perl-0.13/META.json 2013-11-06 15:47:37.000000000 +0000 +++ libcarp-always-perl-0.16/META.json 2018-08-10 23:34:24.000000000 +0000 @@ -1,10 +1,10 @@ { "abstract" : "Warns and dies noisily with stack backtraces", "author" : [ - "Adriano R. Ferreira " + "Adriano Ferreira " ], - "dynamic_config" : 1, - "generated_by" : "ExtUtils::MakeMaker version 6.82, CPAN::Meta::Converter version 2.132830", + "dynamic_config" : 0, + "generated_by" : "ExtUtils::MakeMaker version 7.1002, CPAN::Meta::Converter version 2.150005", "license" : [ "perl_5" ], @@ -22,9 +22,7 @@ "prereqs" : { "build" : { "requires" : { - "ExtUtils::MakeMaker" : "0", - "Test::Base" : "0", - "Test::More" : "0" + "ExtUtils::MakeMaker" : "0" } }, "configure" : { @@ -32,17 +30,36 @@ "ExtUtils::MakeMaker" : "0" } }, + "develop" : { + "requires" : { + "Test::Pod" : "1.18", + "Test::Pod::Coverage" : "1.04" + } + }, "runtime" : { "requires" : { - "Carp" : "0" + "Carp" : "0", + "perl" : "5.006" + } + }, + "test" : { + "requires" : { + "Test::Base" : "0", + "Test::More" : "0" } } }, "release_status" : "stable", "resources" : { + "bugtracker" : { + "web" : "https://github.com/aferreira/cpan-Carp-Always/issues" + }, "repository" : { - "url" : "http://github.com/aferreira/cpan-Carp-Always" + "type" : "git", + "url" : "git://github.com/aferreira/cpan-Carp-Always.git", + "web" : "https://github.com/aferreira/cpan-Carp-Always" } }, - "version" : "0.13" + "version" : "0.16", + "x_serialization_backend" : "JSON::PP version 2.27300_01" } diff -Nru libcarp-always-perl-0.13/META.yml libcarp-always-perl-0.16/META.yml --- libcarp-always-perl-0.13/META.yml 2013-11-06 15:47:37.000000000 +0000 +++ libcarp-always-perl-0.16/META.yml 2018-08-10 23:34:24.000000000 +0000 @@ -1,26 +1,29 @@ --- abstract: 'Warns and dies noisily with stack backtraces' author: - - 'Adriano R. Ferreira ' + - 'Adriano Ferreira ' build_requires: - ExtUtils::MakeMaker: 0 - Test::Base: 0 - Test::More: 0 + ExtUtils::MakeMaker: '0' + Test::Base: '0' + Test::More: '0' configure_requires: - ExtUtils::MakeMaker: 0 -dynamic_config: 1 -generated_by: 'ExtUtils::MakeMaker version 6.82, CPAN::Meta::Converter version 2.132830' + ExtUtils::MakeMaker: '0' +dynamic_config: 0 +generated_by: 'ExtUtils::MakeMaker version 7.1002, CPAN::Meta::Converter version 2.150005' license: perl meta-spec: url: http://module-build.sourceforge.net/META-spec-v1.4.html - version: 1.4 + version: '1.4' name: Carp-Always no_index: directory: - t - inc requires: - Carp: 0 + Carp: '0' + perl: '5.006' resources: - repository: http://github.com/aferreira/cpan-Carp-Always -version: 0.13 + bugtracker: https://github.com/aferreira/cpan-Carp-Always/issues + repository: git://github.com/aferreira/cpan-Carp-Always.git +version: '0.16' +x_serialization_backend: 'CPAN::Meta::YAML version 0.018' diff -Nru libcarp-always-perl-0.13/README libcarp-always-perl-0.16/README --- libcarp-always-perl-0.13/README 2013-11-06 15:45:47.000000000 +0000 +++ libcarp-always-perl-0.16/README 2018-08-10 23:30:16.000000000 +0000 @@ -1,4 +1,4 @@ -Carp-Always version 0.11 +Carp-Always version 0.16 ======================== Carp::Always can be used to make a script complain loudly @@ -8,24 +8,23 @@ Perl has Carp which is a module as old as Perl 5. It has -an option to print errors (from the perspective of caller) +an option to print errors (from the perspective of caller) with stack backtrace. With a few lines of codes, this module illustrates how to make warn() and die() noisy as well. This module was written as a reaction to Acme::JavaTrace by -Sébastien Aperghis-Tramoni. I didn't know Sébastien or -or understood its humor at the time. That and more was -pointed by Robert Rothenberg at CPAN ratings. But the module +Sébastien Aperghis-Tramoni. At the time I didn't know Sébastien or +or understood his humor. But the module idea stood and lives to help you out with debugging your code. INSTALLATION To install this module type the following: - perl Makefile.PL - make - make test - make install + perl Makefile.PL + make + make test + make install DEPENDENCIES @@ -33,13 +32,11 @@ Carp -but that is a core Perl module. +but that is a core Perl module. COPYRIGHT AND LICENCE -Copyright (C) 2005-2013 by Ferreira +Copyright (C) 2005-2013, 2018 by Adriano Ferreira This library is free software; you can redistribute it and/or modify it under the same terms as Perl itself. - - diff -Nru libcarp-always-perl-0.13/t/010simple.t libcarp-always-perl-0.16/t/010simple.t --- libcarp-always-perl-0.13/t/010simple.t 2012-04-18 13:10:08.000000000 +0000 +++ libcarp-always-perl-0.16/t/010simple.t 2018-08-10 19:26:08.000000000 +0000 @@ -1,13 +1,5 @@ #perl -T -BEGIN { - eval { require Test::Base }; - if ($@) { - require Test::More; - Test::More::plan(skip_all => "Test::Base required for module tests"); - } -} - use Test::Base; use Carp; @@ -29,7 +21,7 @@ } sub fixup_stderr { - s/\.$//m if $Carp::VERSION < '1.25'; + s/\.$//mg if $Carp::VERSION < '1.25'; } filters { perl => 'exec_perl_stderr', stderr => 'fixup_stderr' }; @@ -90,6 +82,40 @@ A::f() called at test-block.pl line 2 A::g() called at test-block.pl line 3 +=== warn () + +--- perl +warn + +--- stderr +Warning: something's wrong at test-block.pl line 1. + +=== die () + +--- perl +die + +--- stderr +Died at test-block.pl line 1. + +=== $@ = EXCEPTION; warn () + +--- perl +local $@ = 'EXCEPTION'; +warn + +--- stderr +EXCEPTION ...caught at test-block.pl line 2. + +=== $@ = EXCEPTION; die () + +--- perl +local $@ = 'EXCEPTION'; +die + +--- stderr +EXCEPTION ...propagated at test-block.pl line 2. + === foo at bar --- perl @@ -98,6 +124,19 @@ --- stderr foo at bar at test-block.pl line 1. +=== Kaboom + diagnostics RT#96561 + +--- perl +die "Kaboom at foo/bar.pl line 123 +Some additional diagnostics added here by +a custom error handler\n" + +--- stderr +Kaboom at foo/bar.pl line 123 +Some additional diagnostics added here by +a custom error handler + at test-block.pl line 1. + === exception objects --- perl @@ -110,3 +149,106 @@ --- stderr Exception: bad + +=== Carp::carp + +--- perl +use Carp; +carp 'foo'; + +--- stderr +foo at test-block.pl line 2. + +=== Carp::croak + +--- perl +use Carp; +croak 'foo'; + +--- stderr +foo at test-block.pl line 2. + +=== no Carp::Always + +--- perl +no Carp::Always; +warn "foo\n"; + +--- stderr +foo + +=== no Carp::Always; use Carp::Always; + +--- perl +Carp::Always->unimport; +warn "foo\n"; +Carp::Always->import; +warn "foo\n"; + +--- stderr +foo +foo + at test-block.pl line 4. + +=== nested Carp::Carp + +--- perl + +package A; +use Carp 'carp'; + +sub f { +#line 1 + carp "Beware!"; +} + +sub g { +#line 2 + f(); +} + +package main; + +#line 3 +A::g(); + +--- stderr +Beware! at test-block.pl line 1. + A::f() called at test-block.pl line 2 + A::g() called at test-block.pl line 3 + +=== Preserve non-repeated "at FILE line LINE" GH#8 + +--- perl +die "haha at /Where/isit.t line 4545.\n" + +--- stderr +haha at /Where/isit.t line 4545. + at test-block.pl line 1. + +=== Carp::confess RT#123354 + +--- perl + +package A; +use Carp 'confess'; + +sub f { +#line 1 + confess "Beware!"; +} + +sub g { +#line 2 + f(); +} + +package main; + +#line 3 +A::g(); + +--- stderr +Beware! at test-block.pl line 1. + A::f() called at test-block.pl line 2 + A::g() called at test-block.pl line 3 diff -Nru libcarp-always-perl-0.13/t/098pod-coverage.t libcarp-always-perl-0.16/t/098pod-coverage.t --- libcarp-always-perl-0.13/t/098pod-coverage.t 2007-07-30 14:35:56.000000000 +0000 +++ libcarp-always-perl-0.16/t/098pod-coverage.t 2018-08-08 19:09:33.000000000 +0000 @@ -4,5 +4,6 @@ eval "use Test::Pod::Coverage 1.04"; plan skip_all => "Test::Pod::Coverage 1.04 required for testing POD coverage" if $@; +plan skip_all => "No Developer Tests for non-developers" unless $ENV{AUTHOR_TESTING}; all_pod_coverage_ok(); diff -Nru libcarp-always-perl-0.13/t/099pod.t libcarp-always-perl-0.16/t/099pod.t --- libcarp-always-perl-0.13/t/099pod.t 2006-10-25 18:51:40.000000000 +0000 +++ libcarp-always-perl-0.16/t/099pod.t 2018-08-08 21:42:50.000000000 +0000 @@ -4,5 +4,6 @@ use Test::More; eval "use Test::Pod 1.18"; plan skip_all => "Test::Pod 1.18 required for testing POD" if $@; +plan skip_all => "No Developer Tests for non-developers" unless $ENV{AUTHOR_TESTING}; -all_pod_files_ok(all_pod_files(".")); +all_pod_files_ok();