Hello community, here is the log from the commit of package perl-Time-Duration for openSUSE:Factory checked in at 2019-05-13 14:52:27 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/perl-Time-Duration (Old) and /work/SRC/openSUSE:Factory/.perl-Time-Duration.new.5148 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "perl-Time-Duration" Mon May 13 14:52:27 2019 rev:23 rq:702491 version:1.210000 Changes: -------- --- /work/SRC/openSUSE:Factory/perl-Time-Duration/perl-Time-Duration.changes 2015-04-27 13:04:45.000000000 +0200 +++ /work/SRC/openSUSE:Factory/.perl-Time-Duration.new.5148/perl-Time-Duration.changes 2019-05-13 14:52:28.823081955 +0200 @@ -1,0 +2,11 @@ +Sun May 12 05:31:23 UTC 2019 - Stephan Kulow <co...@suse.com> + +- updated to 1.21 + see /usr/share/doc/packages/perl-Time-Duration/Changes + + 1.21 2019-05-11 NEILB + - Added Time::Elapsed to SEE ALSO, suggested by Ron Savage in RT#122186. + - Updated AUTHOR section to reflect that Neil Bowers is current maintainer. + - Extended testsuite so there's full code coverage (not pod yet). + +------------------------------------------------------------------- Old: ---- Time-Duration-1.20.tar.gz New: ---- Time-Duration-1.21.tar.gz ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ perl-Time-Duration.spec ++++++ --- /var/tmp/diff_new_pack.HKycJo/_old 2019-05-13 14:52:29.379083355 +0200 +++ /var/tmp/diff_new_pack.HKycJo/_new 2019-05-13 14:52:29.387083375 +0200 @@ -1,7 +1,7 @@ # # spec file for package perl-Time-Duration # -# Copyright (c) 2015 SUSE LINUX GmbH, Nuernberg, Germany. +# Copyright (c) 2019 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 @@ -12,21 +12,21 @@ # license that conforms to the Open Source Definition (Version 1.9) # published by the Open Source Initiative. -# Please submit bugfixes or comments via http://bugs.opensuse.org/ +# Please submit bugfixes or comments via https://bugs.opensuse.org/ # Name: perl-Time-Duration -Version: 1.200000 +Version: 1.210000 Release: 0 -%define cpan_version 1.20 -Provides: perl(Time::Duration) = 1.200000 +%define cpan_version 1.21 +Provides: perl(Time::Duration) = 1.210000 %define cpan_name Time-Duration -Summary: Rounded or Exact English Expression of Durations -License: Artistic-1.0 or GPL-1.0+ +Summary: Rounded or exact English expression of durations +License: Artistic-1.0 OR GPL-1.0-or-later Group: Development/Libraries/Perl -Url: http://search.cpan.org/dist/Time-Duration/ -Source0: http://www.cpan.org/authors/id/N/NE/NEILB/%{cpan_name}-%{cpan_version}.tar.gz +Url: https://metacpan.org/release/%{cpan_name} +Source0: https://cpan.metacpan.org/authors/id/N/NE/NEILB/%{cpan_name}-%{cpan_version}.tar.gz Source1: cpanspec.yml BuildArch: noarch BuildRoot: %{_tmppath}/%{name}-%{version}-build @@ -65,11 +65,11 @@ %setup -q -n %{cpan_name}-%{cpan_version} %build -%{__perl} Makefile.PL INSTALLDIRS=vendor -%{__make} %{?_smp_mflags} +perl Makefile.PL INSTALLDIRS=vendor +make %{?_smp_mflags} %check -%{__make} test +make test %install %perl_make_install @@ -78,6 +78,7 @@ %files -f %{name}.files %defattr(-,root,root,755) -%doc Changes LICENSE README +%doc Changes README +%license LICENSE %changelog ++++++ Time-Duration-1.20.tar.gz -> Time-Duration-1.21.tar.gz ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/Time-Duration-1.20/Changes new/Time-Duration-1.21/Changes --- old/Time-Duration-1.20/Changes 2015-04-25 10:45:49.000000000 +0200 +++ new/Time-Duration-1.21/Changes 2019-05-11 18:09:07.000000000 +0200 @@ -1,5 +1,10 @@ Revision history for Perl module Time::Duration +1.21 2019-05-11 NEILB + - Added Time::Elapsed to SEE ALSO, suggested by Ron Savage in RT#122186. + - Updated AUTHOR section to reflect that Neil Bowers is current maintainer. + - Extended testsuite so there's full code coverage (not pod yet). + 1.20 2015-04-25 NEILB - Switched to Dist::Zilla, in the process fixing RT#90701, RT#101548, and RT#101434 @@ -10,20 +15,20 @@ release to see what CPAN Testers said. 1.1 2013-04-02 AVIF - - Adding millisecond support. + - Adding millisecond support. 1.06 2007-08-19 AVIF - - Fixing Makefile + - Fixing Makefile 1.04 2006-07-23 AVIF - Reorganizing tests 1.03 2006-02-28 AVIF - - Updating new maintainer information (AVIF took over from SBURKE) + - Updating new maintainer information (AVIF took over from SBURKE) 1.02 2002-10-08 SBURKE - added concise(). - + 1.01 2001-10-25 SBURKE - First release to CPAN diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/Time-Duration-1.20/MANIFEST new/Time-Duration-1.21/MANIFEST --- old/Time-Duration-1.20/MANIFEST 2015-04-25 10:45:49.000000000 +0200 +++ new/Time-Duration-1.21/MANIFEST 2019-05-11 18:09:07.000000000 +0200 @@ -1,4 +1,4 @@ -# This file was automatically generated by Dist::Zilla::Plugin::Manifest v5.032. +# This file was automatically generated by Dist::Zilla::Plugin::Manifest v6.011. Changes LICENSE MANIFEST diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/Time-Duration-1.20/META.json new/Time-Duration-1.21/META.json --- old/Time-Duration-1.20/META.json 2015-04-25 10:45:49.000000000 +0200 +++ new/Time-Duration-1.21/META.json 2019-05-11 18:09:07.000000000 +0200 @@ -4,13 +4,13 @@ "Sean M Burke <sbu...@cpan.org>" ], "dynamic_config" : 0, - "generated_by" : "Dist::Zilla version 5.032, CPAN::Meta::Converter version 2.150001", + "generated_by" : "Dist::Zilla version 6.011, CPAN::Meta::Converter version 2.150005", "license" : [ "perl_5" ], "meta-spec" : { "url" : "http://search.cpan.org/perldoc?CPAN::Meta::Spec", - "version" : "2" + "version" : 2 }, "name" : "Time-Duration", "prereqs" : { @@ -43,6 +43,7 @@ "web" : "https://github.com/neilbowers/Time-Duration" } }, - "version" : "1.20" + "version" : "1.21", + "x_serialization_backend" : "Cpanel::JSON::XS version 3.0217" } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/Time-Duration-1.20/META.yml new/Time-Duration-1.21/META.yml --- old/Time-Duration-1.20/META.yml 2015-04-25 10:45:49.000000000 +0200 +++ new/Time-Duration-1.21/META.yml 2019-05-11 18:09:07.000000000 +0200 @@ -7,7 +7,7 @@ configure_requires: ExtUtils::MakeMaker: '0' dynamic_config: 0 -generated_by: 'Dist::Zilla version 5.032, CPAN::Meta::Converter version 2.150001' +generated_by: 'Dist::Zilla version 6.011, CPAN::Meta::Converter version 2.150005' license: perl meta-spec: url: http://module-build.sourceforge.net/META-spec-v1.4.html @@ -22,4 +22,5 @@ resources: homepage: https://github.com/neilbowers/Time-Duration repository: https://github.com/neilbowers/Time-Duration.git -version: '1.20' +version: '1.21' +x_serialization_backend: 'YAML::Tiny version 1.62' diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/Time-Duration-1.20/Makefile.PL new/Time-Duration-1.21/Makefile.PL --- old/Time-Duration-1.20/Makefile.PL 2015-04-25 10:45:49.000000000 +0200 +++ new/Time-Duration-1.21/Makefile.PL 2019-05-11 18:09:07.000000000 +0200 @@ -1,4 +1,4 @@ -# This file was automatically generated by Dist::Zilla::Plugin::MakeMaker v5.032. +# This file was automatically generated by Dist::Zilla::Plugin::MakeMaker v6.011. use strict; use warnings; @@ -13,7 +13,6 @@ "ExtUtils::MakeMaker" => 0 }, "DISTNAME" => "Time-Duration", - "EXE_FILES" => [], "LICENSE" => "perl", "MIN_PERL_VERSION" => "5.006", "NAME" => "Time::Duration", @@ -26,7 +25,7 @@ "TEST_REQUIRES" => { "Test" => 0 }, - "VERSION" => "1.20", + "VERSION" => "1.21", "test" => { "TESTS" => "t/*.t" } @@ -35,7 +34,6 @@ my %FallbackPrereqs = ( "Exporter" => 0, - "ExtUtils::MakeMaker" => 0, "Test" => 0, "constant" => 0, "strict" => 0, diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/Time-Duration-1.20/README new/Time-Duration-1.21/README --- old/Time-Duration-1.20/README 2015-04-25 10:45:49.000000000 +0200 +++ new/Time-Duration-1.21/README 2019-05-11 18:09:07.000000000 +0200 @@ -1,7 +1,5 @@ - - This archive contains the distribution Time-Duration, -version 1.20: +version 1.21: rounded or exact English expression of durations @@ -11,5 +9,4 @@ the same terms as the Perl 5 programming language system itself. -This README file was generated by Dist::Zilla::Plugin::Readme v5.032. - +This README file was generated by Dist::Zilla::Plugin::Readme v6.011. diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/Time-Duration-1.20/dist.ini new/Time-Duration-1.21/dist.ini --- old/Time-Duration-1.20/dist.ini 2015-04-25 10:45:49.000000000 +0200 +++ new/Time-Duration-1.21/dist.ini 2019-05-11 18:09:07.000000000 +0200 @@ -4,7 +4,7 @@ copyright_holder = Sean M Burke copyright_year = 2001 -version = 1.20 +version = 1.21 [@Basic] [PkgVersion] diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/Time-Duration-1.20/lib/Time/Duration.pm new/Time-Duration-1.21/lib/Time/Duration.pm --- old/Time-Duration-1.20/lib/Time/Duration.pm 2015-04-25 10:45:49.000000000 +0200 +++ new/Time-Duration-1.21/lib/Time/Duration.pm 2019-05-11 18:09:07.000000000 +0200 @@ -1,5 +1,5 @@ package Time::Duration; -$Time::Duration::VERSION = '1.20'; +$Time::Duration::VERSION = '1.21'; use 5.006; use strict; use warnings; @@ -31,22 +31,14 @@ return $string; } -sub later { - interval( $_[0], $_[1], ' earlier', ' later', 'right then'); } -sub later_exact { - interval_exact($_[0], $_[1], ' earlier', ' later', 'right then'); } -sub earlier { - interval( $_[0], $_[1], ' later', ' earlier', 'right then'); } -sub earlier_exact { - interval_exact($_[0], $_[1], ' later', ' earlier', 'right then'); } -sub ago { - interval( $_[0], $_[1], ' from now', ' ago', 'right now'); } -sub ago_exact { - interval_exact($_[0], $_[1], ' from now', ' ago', 'right now'); } -sub from_now { - interval( $_[0], $_[1], ' ago', ' from now', 'right now'); } -sub from_now_exact { - interval_exact($_[0], $_[1], ' ago', ' from now', 'right now'); } +sub later { interval( $_[0], $_[1], ' earlier', ' later', 'right then'); } +sub later_exact { interval_exact($_[0], $_[1], ' earlier', ' later', 'right then'); } +sub earlier { interval( $_[0], $_[1], ' later', ' earlier', 'right then'); } +sub earlier_exact { interval_exact($_[0], $_[1], ' later', ' earlier', 'right then'); } +sub ago { interval( $_[0], $_[1], ' from now', ' ago', 'right now'); } +sub ago_exact { interval_exact($_[0], $_[1], ' from now', ' ago', 'right now'); } +sub from_now { interval( $_[0], $_[1], ' ago', ' from now', 'right now'); } +sub from_now_exact { interval_exact($_[0], $_[1], ' ago', ' from now', 'right now'); } #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ sub duration_exact { @@ -441,6 +433,9 @@ =head1 SEE ALSO +L<Time::Elapsed> - similarly converts durations to natural language, +but in addition to English also supports Danish, German, French, and Turkish. + L<Date::Interval|Date::Interval>, which is similarly named, but does something rather different. @@ -465,8 +460,11 @@ =head1 AUTHOR -Current maintainer Avi Finkel, C<a...@finkel.org>; Original author -Sean M. Burke, C<sbu...@cpan.org> +Original author Sean M. Burke, C<sbu...@cpan.org>. + +Then maintained by Avi Finkel, C<a...@finkel.org>. + +Currently maintained by Neil Bowers, C<ne...@cpan.org>. =cut diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/Time-Duration-1.20/t/01_tdur.t new/Time-Duration-1.21/t/01_tdur.t --- old/Time-Duration-1.20/t/01_tdur.t 2015-04-25 10:45:49.000000000 +0200 +++ new/Time-Duration-1.21/t/01_tdur.t 2019-05-11 18:09:07.000000000 +0200 @@ -5,7 +5,7 @@ use Test; my @them; -BEGIN { plan('tests' => 135) }; +BEGIN { plan('tests' => 230) }; BEGIN { print "# Perl version $] under $^O\n" } use Time::Duration; @@ -20,6 +20,7 @@ #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ print "# Basic tests...\n"; +ok( sub{duration( )}, '0 seconds'); ok( sub{duration( 0)}, '0 seconds'); ok( sub{duration( 1)}, '1 second'); ok( sub{duration( -1)}, '1 second'); @@ -42,144 +43,226 @@ #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + # TODO: Make these table-driven. But first, get the coverage sorted. print "# Advanced tests...\n"; my $v; #scratch var $v = 0; -ok(sub {later( $v )}, 'right then'); -ok(sub {later( $v, 3)}, 'right then'); -ok(sub {later_exact( $v )}, 'right then'); +ok(sub {later( $v )}, 'right then'); +ok(sub {later( $v, 3)}, 'right then'); +ok(sub {later_exact( $v )}, 'right then'); +ok(sub {earlier_exact( $v )}, 'right then'); +ok(sub {ago_exact( $v )}, 'right now'); +ok(sub {from_now_exact( $v )}, 'right now'); $v = 1; -ok(sub {later( $v )}, '1 second later'); -ok(sub {later( $v, 3)}, '1 second later'); -ok(sub {later_exact( $v )}, '1 second later'); +ok(sub {later( $v )}, '1 second later'); +ok(sub {later( $v, 3)}, '1 second later'); +ok(sub {later_exact( $v )}, '1 second later'); +ok(sub {earlier_exact( $v )}, '1 second earlier'); +ok(sub {ago_exact( $v )}, '1 second ago'); +ok(sub {from_now_exact( $v )}, '1 second from now'); $v = 30; -ok(sub {later( $v )}, '30 seconds later'); -ok(sub {later( $v, 3)}, '30 seconds later'); -ok(sub {later_exact( $v )}, '30 seconds later'); +ok(sub {later( $v )}, '30 seconds later'); +ok(sub {later( $v, 3)}, '30 seconds later'); +ok(sub {later_exact( $v )}, '30 seconds later'); +ok(sub {earlier_exact( $v )}, '30 seconds earlier'); +ok(sub {ago_exact( $v )}, '30 seconds ago'); +ok(sub {from_now_exact( $v )}, '30 seconds from now'); $v = 46; -ok(sub {later( $v )}, '46 seconds later'); -ok(sub {later( $v, 3)}, '46 seconds later'); -ok(sub {later_exact( $v )}, '46 seconds later'); +ok(sub {later( $v )}, '46 seconds later'); +ok(sub {later( $v, 3)}, '46 seconds later'); +ok(sub {later_exact( $v )}, '46 seconds later'); +ok(sub {earlier_exact( $v )}, '46 seconds earlier'); +ok(sub {ago_exact( $v )}, '46 seconds ago'); +ok(sub {from_now_exact( $v )}, '46 seconds from now'); $v = 59; -ok(sub {later( $v )}, '59 seconds later'); -ok(sub {later( $v, 3)}, '59 seconds later'); -ok(sub {later_exact( $v )}, '59 seconds later'); +ok(sub {later( $v )}, '59 seconds later'); +ok(sub {later( $v, 3)}, '59 seconds later'); +ok(sub {later_exact( $v )}, '59 seconds later'); +ok(sub {earlier_exact( $v )}, '59 seconds earlier'); +ok(sub {ago_exact( $v )}, '59 seconds ago'); +ok(sub {from_now_exact( $v )}, '59 seconds from now'); $v = 61; -ok(sub {later( $v )}, '1 minute and 1 second later'); -ok(sub {later( $v, 3)}, '1 minute and 1 second later'); -ok(sub {later_exact( $v )}, '1 minute and 1 second later'); +ok(sub {later( $v )}, '1 minute and 1 second later'); +ok(sub {later( $v, 3)}, '1 minute and 1 second later'); +ok(sub {later_exact( $v )}, '1 minute and 1 second later'); +ok(sub {earlier_exact( $v )}, '1 minute and 1 second earlier'); +ok(sub {ago_exact( $v )}, '1 minute and 1 second ago'); +ok(sub {from_now_exact( $v )}, '1 minute and 1 second from now'); $v = 3599; -ok(sub {later( $v )}, '59 minutes and 59 seconds later'); -ok(sub {later( $v, 3)}, '59 minutes and 59 seconds later'); -ok(sub {later_exact( $v )}, '59 minutes and 59 seconds later'); +ok(sub {later( $v )}, '59 minutes and 59 seconds later'); +ok(sub {later( $v, 3)}, '59 minutes and 59 seconds later'); +ok(sub {later_exact( $v )}, '59 minutes and 59 seconds later'); +ok(sub {earlier_exact( $v )}, '59 minutes and 59 seconds earlier'); +ok(sub {ago_exact( $v )}, '59 minutes and 59 seconds ago'); +ok(sub {from_now_exact( $v )}, '59 minutes and 59 seconds from now'); $v = 3600; -ok(sub {later( $v )}, '1 hour later'); -ok(sub {later( $v, 3)}, '1 hour later'); -ok(sub {later_exact( $v )}, '1 hour later'); +ok(sub {later( $v )}, '1 hour later'); +ok(sub {later( $v, 3)}, '1 hour later'); +ok(sub {later_exact( $v )}, '1 hour later'); +ok(sub {earlier_exact( $v )}, '1 hour earlier'); +ok(sub {ago_exact( $v )}, '1 hour ago'); +ok(sub {from_now_exact( $v )}, '1 hour from now'); $v = 3601; -ok(sub {later( $v )}, '1 hour and 1 second later'); -ok(sub {later( $v, 3)}, '1 hour and 1 second later'); -ok(sub {later_exact( $v )}, '1 hour and 1 second later'); +ok(sub {later( $v )}, '1 hour and 1 second later'); +ok(sub {later( $v, 3)}, '1 hour and 1 second later'); +ok(sub {later_exact( $v )}, '1 hour and 1 second later'); +ok(sub {earlier_exact( $v )}, '1 hour and 1 second earlier'); +ok(sub {ago_exact( $v )}, '1 hour and 1 second ago'); +ok(sub {from_now_exact( $v )}, '1 hour and 1 second from now'); $v = 3630; -ok(sub {later( $v )}, '1 hour and 30 seconds later'); -ok(sub {later( $v, 3)}, '1 hour and 30 seconds later'); -ok(sub {later_exact( $v )}, '1 hour and 30 seconds later'); +ok(sub {later( $v )}, '1 hour and 30 seconds later'); +ok(sub {later( $v, 3)}, '1 hour and 30 seconds later'); +ok(sub {later_exact( $v )}, '1 hour and 30 seconds later'); +ok(sub {earlier_exact( $v )}, '1 hour and 30 seconds earlier'); +ok(sub {ago_exact( $v )}, '1 hour and 30 seconds ago'); +ok(sub {from_now_exact( $v )}, '1 hour and 30 seconds from now'); $v = 3800; -ok(sub {later( $v )}, '1 hour and 3 minutes later'); -ok(sub {later( $v, 3)}, '1 hour, 3 minutes, and 20 seconds later'); -ok(sub {later_exact( $v )}, '1 hour, 3 minutes, and 20 seconds later'); +ok(sub {later( $v )}, '1 hour and 3 minutes later'); +ok(sub {later( $v, 3)}, '1 hour, 3 minutes, and 20 seconds later'); +ok(sub {later_exact( $v )}, '1 hour, 3 minutes, and 20 seconds later'); +ok(sub {earlier_exact( $v )}, '1 hour, 3 minutes, and 20 seconds earlier'); +ok(sub {ago_exact( $v )}, '1 hour, 3 minutes, and 20 seconds ago'); +ok(sub {from_now_exact( $v )}, '1 hour, 3 minutes, and 20 seconds from now'); $v = 3820; -ok(sub {later( $v )}, '1 hour and 4 minutes later'); -ok(sub {later( $v, 3)}, '1 hour, 3 minutes, and 40 seconds later'); -ok(sub {later_exact( $v )}, '1 hour, 3 minutes, and 40 seconds later'); +ok(sub {later( $v )}, '1 hour and 4 minutes later'); +ok(sub {later( $v, 3)}, '1 hour, 3 minutes, and 40 seconds later'); +ok(sub {later_exact( $v )}, '1 hour, 3 minutes, and 40 seconds later'); +ok(sub {earlier_exact( $v )}, '1 hour, 3 minutes, and 40 seconds earlier'); +ok(sub {ago_exact( $v )}, '1 hour, 3 minutes, and 40 seconds ago'); +ok(sub {from_now_exact( $v )}, '1 hour, 3 minutes, and 40 seconds from now'); $v = DAY + - HOUR + -28; -ok(sub {later( $v )}, '23 hours later'); -ok(sub {later( $v, 3)}, '22 hours, 59 minutes, and 32 seconds later'); -ok(sub {later_exact( $v )}, '22 hours, 59 minutes, and 32 seconds later'); +ok(sub {later( $v )}, '23 hours later'); +ok(sub {later( $v, 3)}, '22 hours, 59 minutes, and 32 seconds later'); +ok(sub {later_exact( $v )}, '22 hours, 59 minutes, and 32 seconds later'); +ok(sub {earlier_exact( $v )}, '22 hours, 59 minutes, and 32 seconds earlier'); +ok(sub {ago_exact( $v )}, '22 hours, 59 minutes, and 32 seconds ago'); +ok(sub {from_now_exact( $v )}, '22 hours, 59 minutes, and 32 seconds from now'); $v = DAY + - HOUR + MINUTE; -ok(sub {later( $v )}, '23 hours and 1 minute later'); -ok(sub {later( $v, 3)}, '23 hours and 1 minute later'); -ok(sub {later_exact( $v )}, '23 hours and 1 minute later'); +ok(sub {later( $v )}, '23 hours and 1 minute later'); +ok(sub {later( $v, 3)}, '23 hours and 1 minute later'); +ok(sub {later_exact( $v )}, '23 hours and 1 minute later'); +ok(sub {earlier_exact( $v )}, '23 hours and 1 minute earlier'); +ok(sub {ago_exact( $v )}, '23 hours and 1 minute ago'); +ok(sub {from_now_exact( $v )}, '23 hours and 1 minute from now'); $v = DAY + - HOUR + 29 * MINUTE + 1; -ok(sub {later( $v )}, '23 hours and 29 minutes later'); -ok(sub {later( $v, 3)}, '23 hours, 29 minutes, and 1 second later'); -ok(sub {later_exact( $v )}, '23 hours, 29 minutes, and 1 second later'); +ok(sub {later( $v )}, '23 hours and 29 minutes later'); +ok(sub {later( $v, 3)}, '23 hours, 29 minutes, and 1 second later'); +ok(sub {later_exact( $v )}, '23 hours, 29 minutes, and 1 second later'); +ok(sub {earlier_exact( $v )}, '23 hours, 29 minutes, and 1 second earlier'); +ok(sub {ago_exact( $v )}, '23 hours, 29 minutes, and 1 second ago'); +ok(sub {from_now_exact( $v )}, '23 hours, 29 minutes, and 1 second from now'); $v = DAY + - HOUR + 29 * MINUTE + 31; -ok(sub {later( $v )}, '23 hours and 30 minutes later'); -ok(sub {later( $v, 3)}, '23 hours, 29 minutes, and 31 seconds later'); -ok(sub {later_exact( $v )}, '23 hours, 29 minutes, and 31 seconds later'); +ok(sub {later( $v )}, '23 hours and 30 minutes later'); +ok(sub {later( $v, 3)}, '23 hours, 29 minutes, and 31 seconds later'); +ok(sub {later_exact( $v )}, '23 hours, 29 minutes, and 31 seconds later'); +ok(sub {earlier_exact( $v )}, '23 hours, 29 minutes, and 31 seconds earlier'); +ok(sub {ago_exact( $v )}, '23 hours, 29 minutes, and 31 seconds ago'); +ok(sub {from_now_exact( $v )}, '23 hours, 29 minutes, and 31 seconds from now'); $v = DAY + - HOUR + 30 * MINUTE + 31; -ok(sub {later( $v )}, '23 hours and 31 minutes later'); -ok(sub {later( $v, 3)}, '23 hours, 30 minutes, and 31 seconds later'); -ok(sub {later_exact( $v )}, '23 hours, 30 minutes, and 31 seconds later'); +ok(sub {later( $v )}, '23 hours and 31 minutes later'); +ok(sub {later( $v, 3)}, '23 hours, 30 minutes, and 31 seconds later'); +ok(sub {later_exact( $v )}, '23 hours, 30 minutes, and 31 seconds later'); +ok(sub {earlier_exact( $v )}, '23 hours, 30 minutes, and 31 seconds earlier'); +ok(sub {ago_exact( $v )}, '23 hours, 30 minutes, and 31 seconds ago'); +ok(sub {from_now_exact( $v )}, '23 hours, 30 minutes, and 31 seconds from now'); $v = DAY + - HOUR + -28 + YEAR; -ok(sub {later( $v )}, '1 year and 23 hours later'); -ok(sub {later( $v, 3)}, '1 year and 23 hours later'); -ok(sub {later_exact( $v )}, '1 year, 22 hours, 59 minutes, and 32 seconds later'); +ok(sub {later( $v )}, '1 year and 23 hours later'); +ok(sub {later( $v, 3)}, '1 year and 23 hours later'); +ok(sub {later_exact( $v )}, '1 year, 22 hours, 59 minutes, and 32 seconds later'); +ok(sub {earlier_exact( $v )}, '1 year, 22 hours, 59 minutes, and 32 seconds earlier'); +ok(sub {ago_exact( $v )}, '1 year, 22 hours, 59 minutes, and 32 seconds ago'); +ok(sub {from_now_exact( $v )}, '1 year, 22 hours, 59 minutes, and 32 seconds from now'); $v = DAY + - HOUR + MINUTE + YEAR; -ok(sub {later( $v )}, '1 year and 23 hours later'); -ok(sub {later( $v, 3)}, '1 year, 23 hours, and 1 minute later'); -ok(sub {later_exact( $v )}, '1 year, 23 hours, and 1 minute later'); +ok(sub {later( $v )}, '1 year and 23 hours later'); +ok(sub {later( $v, 3)}, '1 year, 23 hours, and 1 minute later'); +ok(sub {later_exact( $v )}, '1 year, 23 hours, and 1 minute later'); +ok(sub {earlier_exact( $v )}, '1 year, 23 hours, and 1 minute earlier'); +ok(sub {ago_exact( $v )}, '1 year, 23 hours, and 1 minute ago'); +ok(sub {from_now_exact( $v )}, '1 year, 23 hours, and 1 minute from now'); $v = DAY + - HOUR + 29 * MINUTE + 1 + YEAR; -ok(sub {later( $v )}, '1 year and 23 hours later'); -ok(sub {later( $v, 3)}, '1 year, 23 hours, and 29 minutes later'); -ok(sub {later_exact( $v )}, '1 year, 23 hours, 29 minutes, and 1 second later'); +ok(sub {later( $v )}, '1 year and 23 hours later'); +ok(sub {later( $v, 3)}, '1 year, 23 hours, and 29 minutes later'); +ok(sub {later_exact( $v )}, '1 year, 23 hours, 29 minutes, and 1 second later'); +ok(sub {earlier_exact( $v )}, '1 year, 23 hours, 29 minutes, and 1 second earlier'); +ok(sub {ago_exact( $v )}, '1 year, 23 hours, 29 minutes, and 1 second ago'); +ok(sub {from_now_exact( $v )}, '1 year, 23 hours, 29 minutes, and 1 second from now'); $v = DAY + - HOUR + 29 * MINUTE + 31 + YEAR; -ok(sub {later( $v )}, '1 year and 23 hours later'); -ok(sub {later( $v, 3)}, '1 year, 23 hours, and 30 minutes later'); -ok(sub {later_exact( $v )}, '1 year, 23 hours, 29 minutes, and 31 seconds later'); +ok(sub {later( $v )}, '1 year and 23 hours later'); +ok(sub {later( $v, 3)}, '1 year, 23 hours, and 30 minutes later'); +ok(sub {later_exact( $v )}, '1 year, 23 hours, 29 minutes, and 31 seconds later'); +ok(sub {earlier_exact( $v )}, '1 year, 23 hours, 29 minutes, and 31 seconds earlier'); +ok(sub {ago_exact( $v )}, '1 year, 23 hours, 29 minutes, and 31 seconds ago'); +ok(sub {from_now_exact( $v )}, '1 year, 23 hours, 29 minutes, and 31 seconds from now'); $v = YEAR + 2 * HOUR + -1; -ok(sub {later( $v )}, '1 year and 2 hours later'); -ok(sub {later( $v, 3)}, '1 year and 2 hours later'); -ok(sub {later_exact( $v )}, '1 year, 1 hour, 59 minutes, and 59 seconds later'); +ok(sub {later( $v )}, '1 year and 2 hours later'); +ok(sub {later( $v, 3)}, '1 year and 2 hours later'); +ok(sub {later_exact( $v )}, '1 year, 1 hour, 59 minutes, and 59 seconds later'); +ok(sub {earlier_exact( $v )}, '1 year, 1 hour, 59 minutes, and 59 seconds earlier'); +ok(sub {ago_exact( $v )}, '1 year, 1 hour, 59 minutes, and 59 seconds ago'); +ok(sub {from_now_exact( $v )}, '1 year, 1 hour, 59 minutes, and 59 seconds from now'); $v = YEAR + 2 * HOUR + 59; -ok(sub {later( $v )}, '1 year and 2 hours later'); -ok(sub {later( $v, 3)}, '1 year, 2 hours, and 59 seconds later'); -ok(sub {later_exact( $v )}, '1 year, 2 hours, and 59 seconds later'); +ok(sub {later( $v )}, '1 year and 2 hours later'); +ok(sub {later( $v, 3)}, '1 year, 2 hours, and 59 seconds later'); +ok(sub {later_exact( $v )}, '1 year, 2 hours, and 59 seconds later'); +ok(sub {earlier_exact( $v )}, '1 year, 2 hours, and 59 seconds earlier'); +ok(sub {ago_exact( $v )}, '1 year, 2 hours, and 59 seconds ago'); +ok(sub {from_now_exact( $v )}, '1 year, 2 hours, and 59 seconds from now'); $v = YEAR + DAY + 2 * HOUR + -1; -ok(sub {later( $v )}, '1 year and 1 day later'); -ok(sub {later( $v, 3)}, '1 year, 1 day, and 2 hours later'); -ok(sub {later_exact( $v )}, '1 year, 1 day, 1 hour, 59 minutes, and 59 seconds later'); +ok(sub {later( $v )}, '1 year and 1 day later'); +ok(sub {later( $v, 3)}, '1 year, 1 day, and 2 hours later'); +ok(sub {later_exact( $v )}, '1 year, 1 day, 1 hour, 59 minutes, and 59 seconds later'); +ok(sub {earlier_exact( $v )}, '1 year, 1 day, 1 hour, 59 minutes, and 59 seconds earlier'); +ok(sub {ago_exact( $v )}, '1 year, 1 day, 1 hour, 59 minutes, and 59 seconds ago'); +ok(sub {from_now_exact( $v )}, '1 year, 1 day, 1 hour, 59 minutes, and 59 seconds from now'); $v = YEAR + DAY + 2 * HOUR + 59; -ok(sub {later( $v )}, '1 year and 1 day later'); -ok(sub {later( $v, 3)}, '1 year, 1 day, and 2 hours later'); -ok(sub {later_exact( $v )}, '1 year, 1 day, 2 hours, and 59 seconds later'); +ok(sub {later( $v )}, '1 year and 1 day later'); +ok(sub {later( $v, 3)}, '1 year, 1 day, and 2 hours later'); +ok(sub {later_exact( $v )}, '1 year, 1 day, 2 hours, and 59 seconds later'); +ok(sub {earlier_exact( $v )}, '1 year, 1 day, 2 hours, and 59 seconds earlier'); +ok(sub {ago_exact( $v )}, '1 year, 1 day, 2 hours, and 59 seconds ago'); +ok(sub {from_now_exact( $v )}, '1 year, 1 day, 2 hours, and 59 seconds from now'); $v = YEAR + - DAY + - 1; -ok(sub {later( $v )}, '364 days later'); -ok(sub {later( $v, 3)}, '364 days later'); -ok(sub {later_exact( $v )}, '363 days, 23 hours, 59 minutes, and 59 seconds later'); +ok(sub {later( $v )}, '364 days later'); +ok(sub {later( $v, 3)}, '364 days later'); +ok(sub {later_exact( $v )}, '363 days, 23 hours, 59 minutes, and 59 seconds later'); +ok(sub {earlier_exact( $v )}, '363 days, 23 hours, 59 minutes, and 59 seconds earlier'); +ok(sub {ago_exact( $v )}, '363 days, 23 hours, 59 minutes, and 59 seconds ago'); +ok(sub {from_now_exact( $v )}, '363 days, 23 hours, 59 minutes, and 59 seconds from now'); $v = YEAR + - 1; -ok(sub {later( $v )}, '1 year later'); -ok(sub {later( $v, 3)}, '1 year later'); -ok(sub {later_exact( $v )}, '364 days, 23 hours, 59 minutes, and 59 seconds later'); +ok(sub {later( $v )}, '1 year later'); +ok(sub {later( $v, 3)}, '1 year later'); +ok(sub {later_exact( $v )}, '364 days, 23 hours, 59 minutes, and 59 seconds later'); +ok(sub {earlier_exact( $v )}, '364 days, 23 hours, 59 minutes, and 59 seconds earlier'); +ok(sub {ago_exact( $v )}, '364 days, 23 hours, 59 minutes, and 59 seconds ago'); +ok(sub {from_now_exact( $v )}, '364 days, 23 hours, 59 minutes, and 59 seconds from now'); @@ -193,6 +276,21 @@ ok(sub {duration_exact(-$v )}, '1 year, 1 day, 2 hours, and 59 seconds'); +# miscellaneous edge cases +ok(duration_exact(0,0),'0 seconds'); +ok(duration_exact(0,1),'0 seconds'); +ok(duration(0.001),'just now'); +ok(Time::Duration::interval(63,2,' ago',' from now','just now'),'1 minute and 3 seconds from now'); +ok(Time::Duration::interval(-63,2,' ago',' from now','just now'),'1 minute and 3 seconds ago'); +ok(Time::Duration::interval(0,2,' ago',' from now','just now'),'just now'); +ok(Time::Duration::interval(1515,2,' ago',' from now','just now'),'25 minutes and 15 seconds from now'); +ok(Time::Duration::interval(1515,1,' ago',' from now','just now'),'25 minutes from now'); +ok(Time::Duration::interval_exact(63,2,' ago',' from now','just now'),'1 minute and 3 seconds from now'); +ok(Time::Duration::interval_exact(-63,2,' ago',' from now','just now'),'1 minute and 3 seconds ago'); +ok(Time::Duration::interval_exact(0,2,' ago',' from now','just now'),'just now'); +ok(Time::Duration::interval_exact(1515,2,' ago',' from now','just now'),'25 minutes and 15 seconds from now'); +ok(Time::Duration::interval_exact(1515,1,' ago',' from now','just now'),'25 minutes and 15 seconds from now'); + #~~~~~~~~ print "# Some tests of concise() ...\n"; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/Time-Duration-1.20/t/release-02_pod.t new/Time-Duration-1.21/t/release-02_pod.t --- old/Time-Duration-1.20/t/release-02_pod.t 2015-04-25 10:45:49.000000000 +0200 +++ new/Time-Duration-1.21/t/release-02_pod.t 2019-05-11 18:09:07.000000000 +0200 @@ -1,8 +1,8 @@ BEGIN { unless ($ENV{RELEASE_TESTING}) { - require Test::More; - Test::More::plan(skip_all => 'these tests are for release candidate testing'); + print qq{1..0 # SKIP these tests are for release candidate testing\n}; + exit } } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/Time-Duration-1.20/t/release-03_pod_cover.t new/Time-Duration-1.21/t/release-03_pod_cover.t --- old/Time-Duration-1.20/t/release-03_pod_cover.t 2015-04-25 10:45:49.000000000 +0200 +++ new/Time-Duration-1.21/t/release-03_pod_cover.t 2019-05-11 18:09:07.000000000 +0200 @@ -1,8 +1,8 @@ BEGIN { unless ($ENV{RELEASE_TESTING}) { - require Test::More; - Test::More::plan(skip_all => 'these tests are for release candidate testing'); + print qq{1..0 # SKIP these tests are for release candidate testing\n}; + exit } }