Hello community, here is the log from the commit of package perl-Carp-Assert-More for openSUSE:Factory checked in at 2017-08-24 18:52:38 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/perl-Carp-Assert-More (Old) and /work/SRC/openSUSE:Factory/.perl-Carp-Assert-More.new (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "perl-Carp-Assert-More" Thu Aug 24 18:52:38 2017 rev:7 rq:516828 version:1.16 Changes: -------- --- /work/SRC/openSUSE:Factory/perl-Carp-Assert-More/perl-Carp-Assert-More.changes 2013-06-06 15:10:26.000000000 +0200 +++ /work/SRC/openSUSE:Factory/.perl-Carp-Assert-More.new/perl-Carp-Assert-More.changes 2017-08-24 18:52:43.654643849 +0200 @@ -1,0 +2,24 @@ +Sat Aug 5 05:10:50 UTC 2017 - co...@suse.com + +- updated to 1.16 + see /usr/share/doc/packages/perl-Carp-Assert-More/Changes + + 1.16 Fri Aug 4 14:18:51 CDT 2017 + [ENHANCEMENTS] + Added the following functions: + * assert_numeric( $n ) + * assert_all_keys_in( \%hash, \@keylist ) + * assert_empty( [\%hash|\@list] ) + * assert_coderef( $ref ) + * assert_isa_in( $ref, \@class_list ) + Thanks to Eric A. Zarko for some of them. The rest were migrated + from a private code project. + + Renamed assert_listref() to assert_arrayref(), but keep + assert_listref() as backward compatibility. assert_listref() + may go away in the future. + + [DOCUMENTATION] + Fixed a goof in the assert_integer() docs. Thanks, Randy Lauen. + +------------------------------------------------------------------- Old: ---- Carp-Assert-More-1.14.tar.gz New: ---- Carp-Assert-More-1.16.tar.gz cpanspec.yml ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ perl-Carp-Assert-More.spec ++++++ --- /var/tmp/diff_new_pack.oIx3xm/_old 2017-08-24 18:52:44.726492927 +0200 +++ /var/tmp/diff_new_pack.oIx3xm/_new 2017-08-24 18:52:44.742490674 +0200 @@ -1,7 +1,7 @@ # # spec file for package perl-Carp-Assert-More # -# Copyright (c) 2013 SUSE LINUX Products GmbH, Nuernberg, Germany. +# Copyright (c) 2017 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,28 +17,28 @@ Name: perl-Carp-Assert-More -Version: 1.14 +Version: 1.16 Release: 0 %define cpan_name Carp-Assert-More -Summary: Convenience wrappers around Carp::Assert +Summary: Convenience Wrappers Around Carp::Assert License: Artistic-2.0 Group: Development/Libraries/Perl Url: http://search.cpan.org/dist/Carp-Assert-More/ -Source: http://www.cpan.org/authors/id/P/PE/PETDANCE/%{cpan_name}-%{version}.tar.gz +Source0: https://cpan.metacpan.org/authors/id/P/PE/PETDANCE/%{cpan_name}-%{version}.tar.gz +Source1: cpanspec.yml BuildArch: noarch BuildRoot: %{_tmppath}/%{name}-%{version}-build BuildRequires: perl BuildRequires: perl-macros BuildRequires: perl(Carp::Assert) BuildRequires: perl(Test::Exception) -#BuildRequires: perl(Carp::Assert::More) Requires: perl(Carp::Assert) Requires: perl(Test::Exception) %{perl_requires} %description -Carp::Assert::More is a set of wrappers around the the Carp::Assert manpage -functions to make the habit of writing assertions even easier. +Carp::Assert::More is a set of wrappers around the Carp::Assert functions +to make the habit of writing assertions even easier. Everything in here is effectively syntactic sugar. There's no technical reason to use @@ -72,6 +72,6 @@ %files -f %{name}.files %defattr(-,root,root,755) -%doc Changes README +%doc Changes README.md %changelog ++++++ Carp-Assert-More-1.14.tar.gz -> Carp-Assert-More-1.16.tar.gz ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/Carp-Assert-More-1.14/Changes new/Carp-Assert-More-1.16/Changes --- old/Carp-Assert-More-1.14/Changes 2012-10-31 17:37:08.000000000 +0100 +++ new/Carp-Assert-More-1.16/Changes 2017-08-04 21:18:59.000000000 +0200 @@ -1,5 +1,23 @@ Revision history for Perl extension Carp::Assert::More. +1.16 Fri Aug 4 14:18:51 CDT 2017 + [ENHANCEMENTS] + Added the following functions: + * assert_numeric( $n ) + * assert_all_keys_in( \%hash, \@keylist ) + * assert_empty( [\%hash|\@list] ) + * assert_coderef( $ref ) + * assert_isa_in( $ref, \@class_list ) + Thanks to Eric A. Zarko for some of them. The rest were migrated + from a private code project. + + Renamed assert_listref() to assert_arrayref(), but keep + assert_listref() as backward compatibility. assert_listref() + may go away in the future. + + [DOCUMENTATION] + Fixed a goof in the assert_integer() docs. Thanks, Randy Lauen. + 1.14 Wed Oct 31 11:37:04 CDT 2012 [ENHANCEMENTS] Added assert_undefined() for Ben Hengst. diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/Carp-Assert-More-1.14/MANIFEST new/Carp-Assert-More-1.16/MANIFEST --- old/Carp-Assert-More-1.14/MANIFEST 2012-10-31 17:37:25.000000000 +0100 +++ new/Carp-Assert-More-1.16/MANIFEST 2017-08-04 21:19:09.000000000 +0200 @@ -3,9 +3,13 @@ MANIFEST Makefile.PL More.pm -README +README.md t/00-load.t +t/assert_all_keys_in.t +t/assert_arrayref.t +t/assert_coderef.t t/assert_defined.t +t/assert_empty.t t/assert_exists.t t/assert_fail.t t/assert_hashref.t @@ -13,6 +17,7 @@ t/assert_integer.t t/assert_is.t t/assert_isa.t +t/assert_isa_in.t t/assert_isnt.t t/assert_lacks.t t/assert_like.t @@ -26,6 +31,7 @@ t/assert_nonref.t t/assert_nonzero_integer.t t/assert_nonzero.t +t/assert_numeric.t t/assert_positive_integer.t t/assert_positive.t t/assert_undefined.t diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/Carp-Assert-More-1.14/META.json new/Carp-Assert-More-1.16/META.json --- old/Carp-Assert-More-1.14/META.json 2012-10-31 17:37:25.000000000 +0100 +++ new/Carp-Assert-More-1.16/META.json 2017-08-04 21:19:09.000000000 +0200 @@ -4,7 +4,7 @@ "unknown" ], "dynamic_config" : 1, - "generated_by" : "ExtUtils::MakeMaker version 6.62, CPAN::Meta::Converter version 2.112621", + "generated_by" : "ExtUtils::MakeMaker version 7.16, CPAN::Meta::Converter version 2.150005", "license" : [ "artistic_2" ], @@ -22,20 +22,20 @@ "prereqs" : { "build" : { "requires" : { - "ExtUtils::MakeMaker" : 0 + "ExtUtils::MakeMaker" : "0" } }, "configure" : { "requires" : { - "ExtUtils::MakeMaker" : 0 + "ExtUtils::MakeMaker" : "0" } }, "runtime" : { "requires" : { - "Carp" : 0, - "Carp::Assert" : 0, - "Scalar::Util" : 0, - "Test::Exception" : 0, + "Carp" : "0", + "Carp::Assert" : "0", + "Scalar::Util" : "0", + "Test::Exception" : "0", "Test::More" : "0.18" } } @@ -49,8 +49,9 @@ "http://www.opensource.org/licenses/artistic-license-2.0.php" ], "repository" : { - "url" : "http://github.com/petdance/carp-assert-more/tree/master" + "url" : "https://github.com/petdance/carp-assert-more/tree/master" } }, - "version" : "1.14" + "version" : "1.16", + "x_serialization_backend" : "JSON::PP version 2.27400" } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/Carp-Assert-More-1.14/META.yml new/Carp-Assert-More-1.16/META.yml --- old/Carp-Assert-More-1.14/META.yml 2012-10-31 17:37:24.000000000 +0100 +++ new/Carp-Assert-More-1.16/META.yml 2017-08-04 21:19:09.000000000 +0200 @@ -3,28 +3,29 @@ author: - unknown build_requires: - ExtUtils::MakeMaker: 0 + ExtUtils::MakeMaker: '0' configure_requires: - ExtUtils::MakeMaker: 0 + ExtUtils::MakeMaker: '0' dynamic_config: 1 -generated_by: 'ExtUtils::MakeMaker version 6.62, CPAN::Meta::Converter version 2.112621' +generated_by: 'ExtUtils::MakeMaker version 7.16, CPAN::Meta::Converter version 2.150005' license: artistic_2 meta-spec: url: http://module-build.sourceforge.net/META-spec-v1.4.html - version: 1.4 + version: '1.4' name: Carp-Assert-More no_index: directory: - t - inc requires: - Carp: 0 - Carp::Assert: 0 - Scalar::Util: 0 - Test::Exception: 0 - Test::More: 0.18 + Carp: '0' + Carp::Assert: '0' + Scalar::Util: '0' + Test::Exception: '0' + Test::More: '0.18' resources: bugtracker: https://rt.cpan.org/Public/Dist/Display.html?Name=Carp-Assert-More license: http://www.opensource.org/licenses/artistic-license-2.0.php - repository: http://github.com/petdance/carp-assert-more/tree/master -version: 1.14 + repository: https://github.com/petdance/carp-assert-more/tree/master +version: '1.16' +x_serialization_backend: 'CPAN::Meta::YAML version 0.012' diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/Carp-Assert-More-1.14/Makefile.PL new/Carp-Assert-More-1.16/Makefile.PL --- old/Carp-Assert-More-1.14/Makefile.PL 2012-10-31 15:53:54.000000000 +0100 +++ new/Carp-Assert-More-1.16/Makefile.PL 2017-08-04 21:18:59.000000000 +0200 @@ -37,7 +37,7 @@ $parms{META_MERGE} = { resources => { bugtracker => 'https://rt.cpan.org/Public/Dist/Display.html?Name=Carp-Assert-More', - repository => 'http://github.com/petdance/carp-assert-more/tree/master', + repository => 'https://github.com/petdance/carp-assert-more/tree/master', license => 'http://www.opensource.org/licenses/artistic-license-2.0.php', } }; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/Carp-Assert-More-1.14/More.pm new/Carp-Assert-More-1.16/More.pm --- old/Carp-Assert-More-1.14/More.pm 2012-10-31 17:19:28.000000000 +0100 +++ new/Carp-Assert-More-1.16/More.pm 2017-08-04 21:18:59.000000000 +0200 @@ -7,8 +7,7 @@ use vars qw( $VERSION @ISA @EXPORT ); -*_fail_msg = *Carp::Assert::_fail_msg; - +sub _any(&;@); =head1 NAME @@ -16,15 +15,19 @@ =head1 VERSION -Version 1.14 +Version 1.16 =cut BEGIN { - $VERSION = '1.14'; + $VERSION = '1.16'; @ISA = qw(Exporter); @EXPORT = qw( + assert_all_keys_in + assert_arrayref + assert_coderef assert_defined + assert_empty assert_exists assert_fail assert_hashref @@ -32,6 +35,7 @@ assert_integer assert_is assert_isa + assert_isa_in assert_isnt assert_lacks assert_like @@ -45,6 +49,7 @@ assert_nonref assert_nonzero assert_nonzero_integer + assert_numeric assert_positive assert_positive_integer assert_undefined @@ -109,7 +114,7 @@ return if $string eq $match; require Carp; - &Carp::confess( _fail_msg($name) ); + &Carp::confess( Carp::Assert::_fail_msg($name) ); } =head2 assert_isnt( $string, $unmatch [,$name] ) @@ -129,7 +134,7 @@ return if defined($string) && defined($unmatch) && ($string ne $unmatch); require Carp; - &Carp::confess( _fail_msg($name) ); + &Carp::confess( Carp::Assert::_fail_msg($name) ); } =head2 assert_like( $string, qr/regex/ [,$name] ) @@ -150,7 +155,7 @@ return if $string =~ $regex; require Carp; - &Carp::confess( _fail_msg($name) ); + &Carp::confess( Carp::Assert::_fail_msg($name) ); } =head2 assert_unlike( $string, qr/regex/ [,$name] ) @@ -173,7 +178,7 @@ return if $string !~ $regex; require Carp; - &Carp::confess( _fail_msg($name) ); + &Carp::confess( Carp::Assert::_fail_msg($name) ); } =head2 assert_defined( $this [, $name] ) @@ -186,7 +191,7 @@ return if defined( $_[0] ); require Carp; - &Carp::confess( _fail_msg($_[1]) ); + &Carp::confess( Carp::Assert::_fail_msg($_[1]) ); } =head2 assert_undefined( $this [, $name] ) @@ -199,7 +204,7 @@ return unless defined( $_[0] ); require Carp; - &Carp::confess( _fail_msg($_[1]) ); + &Carp::confess( Carp::Assert::_fail_msg($_[1]) ); } =head2 assert_nonblank( $this [, $name] ) @@ -216,18 +221,37 @@ return if $this ne ""; require Carp; - &Carp::confess( _fail_msg($name) ); + &Carp::confess( Carp::Assert::_fail_msg($name) ); } + =head1 NUMERIC ASSERTIONS +=head2 assert_numeric( $n [, $name] ) + +Asserts that C<$n> looks like a number, according to C<Scalar::Util::looks_like_number>. + +=cut + +sub assert_numeric { + my $n = shift; + my $name = shift; + + require Scalar::Util; + + assert( Scalar::Util::looks_like_number( $n ), $name ); + + return; +} + + =head2 assert_integer( $this [, $name ] ) Asserts that I<$this> is an integer, which may be zero or negative. assert_integer( 0 ); # pass assert_integer( 14 ); # pass - assert_integer( -14 ); # FAIL + assert_integer( -14 ); # pass assert_integer( '14.' ); # FAIL =cut @@ -240,7 +264,7 @@ return if $this =~ /^-?\d+$/; require Carp; - &Carp::confess( _fail_msg($name) ); + &Carp::confess( Carp::Assert::_fail_msg($name) ); } =head2 assert_nonzero( $this [, $name ] ) @@ -263,7 +287,7 @@ return if $this+0 != 0; require Carp; - &Carp::confess( _fail_msg($name) ); + &Carp::confess( Carp::Assert::_fail_msg($name) ); } =head2 assert_positive( $this [, $name ] ) @@ -284,7 +308,7 @@ return if $this+0 > 0; require Carp; - &Carp::confess( _fail_msg($name) ); + &Carp::confess( Carp::Assert::_fail_msg($name) ); } =head2 assert_nonnegative( $this [, $name ] ) @@ -308,7 +332,7 @@ return if $this+0 >= 0; require Carp; - &Carp::confess( _fail_msg($name) ); + &Carp::confess( Carp::Assert::_fail_msg($name) ); } =head2 assert_negative( $this [, $name ] ) @@ -329,7 +353,7 @@ return if $this+0 < 0; require Carp; - &Carp::confess( _fail_msg($name) ); + &Carp::confess( Carp::Assert::_fail_msg($name) ); } =head2 assert_nonzero_integer( $this [, $name ] ) @@ -434,10 +458,76 @@ return if ref($this) eq $type; require Carp; - &Carp::confess( _fail_msg($name) ); + &Carp::confess( Carp::Assert::_fail_msg($name) ); } +=head2 assert_isa_in( $obj, \@types [, $description] ) + +Assert that the blessed C<$obj> isa one of the types in C<\@types>. + + assert_isa_in( $obj, [ 'My::Foo', 'My::Bar' ], 'Must pass either a Foo or Bar object' ); + +=cut + +sub assert_isa_in($$;$) { + my $obj = shift; + my $types = shift; + my $name = shift; + + require Scalar::Util; + + my $ok = _any { Scalar::Util::blessed($obj) && $obj->isa($_) } @{$types}; + assert( $ok, $name ); + + return; +} + + +=head2 assert_empty( $this [, $name ] ) + +I<$this> must be a ref to either a hash or an array. Asserts that that +collection contains no elements. Will assert (with its own message, +not I<$name>) unless given a hash or array ref. It is OK if I<$this> has +been blessed into objecthood, but the semantics of checking an object to see +if it does not have keys (for a hashref) or returns 0 in scalar context (for +an array ref) may not be what you want. + + assert_empty( 0 ); # FAIL + assert_empty( 'foo' ); # FAIL + assert_empty( undef ); # FAIL + assert_empty( {} ); # pass + assert_empty( [] ); # pass + assert_empty( {foo=>1} );# FAIL + assert_empty( [1,2,3] ); # FAIL + +=cut + +sub assert_empty($;$) { + my $ref = shift; + my $name = shift; + + require Scalar::Util; + + my $underlying_type; + if ( Scalar::Util::blessed( $ref ) ) { + $underlying_type = Scalar::Util::reftype( $ref ); + } + else { + $underlying_type = ref( $ref ); + } + + if ( $underlying_type eq 'HASH' ) { + assert_is( scalar keys %{$ref}, 0, $name ); + } + elsif ( $underlying_type eq 'ARRAY' ) { + assert_is( scalar @{$ref}, 0, $name ); + } + else { + assert_fail( 'Not an array or hash reference' ); + } +} + =head2 assert_nonempty( $this [, $name ] ) I<$this> must be a ref to either a hash or an array. Asserts that that @@ -496,7 +586,7 @@ return unless ref( $this ); require Carp; - &Carp::confess( _fail_msg($name) ); + &Carp::confess( Carp::Assert::_fail_msg($name) ); } =head2 assert_hashref( $ref [,$name] ) @@ -527,6 +617,8 @@ return assert_isa( $ref, 'HASH', $name ); } +=head2 assert_arrayref( $ref [, $name] ) + =head2 assert_listref( $ref [,$name] ) Asserts that I<$ref> is defined, and is a reference to a (possibly empty) list. @@ -535,14 +627,31 @@ hash (see C<assert_hashref>) applies here; this method returns false even for objects whose underlying structure is an array. +C<assert_listref> is an alias for C<assert_arrayref> and may go away in +the future. Use C<assert_arrayref> instead. + =cut -sub assert_listref($;$) { - my $ref = shift; +sub assert_arrayref($;$) { + my $ref = shift; my $name = shift; return assert_isa( $ref, 'ARRAY', $name ); } +*assert_listref = *assert_arrayref; + +=head2 assert_coderef( $ref [,$name] ) + +Asserts that I<$ref> is defined, and is a reference to a closure. + +=cut + +sub assert_coderef($;$) { + my $ref = shift; + my $name = shift; + + return assert_isa( $ref, 'CODE', $name ); +} =head1 SET AND HASH MEMBERSHIP @@ -567,7 +676,7 @@ return if $string eq $element; } require Carp; - &Carp::confess( _fail_msg($name) ); + &Carp::confess( Carp::Assert::_fail_msg($name) ); } =head2 assert_exists( \%hash, $key [,$name] ) @@ -595,7 +704,7 @@ for ( @list ) { if ( !exists( $hash->{$_} ) ) { require Carp; - &Carp::confess( _fail_msg($name) ); + &Carp::confess( Carp::Assert::_fail_msg($name) ); } } } @@ -624,11 +733,39 @@ for ( @list ) { if ( exists( $hash->{$_} ) ) { require Carp; - &Carp::confess( _fail_msg($name) ); + &Carp::confess( Carp::Assert::_fail_msg($name) ); } } } + +=head2 assert_all_keys_in( \%hash, \@names [, $name ] ) + +Asserts that each key in C<%hash> is in the list of C<@names>. + +This is used to ensure that there are no extra keys in a given hash. + + assert_all_keys_in( $obj, [qw( height width depth )], '$obj can only contain height, width and depth keys' ); + +=cut + +sub assert_all_keys_in { + my $hash = shift; + my $valid_keys = shift; + my $name = shift; + + assert_hashref( $hash ); + assert_listref( $valid_keys ); + + foreach my $key ( keys %{$hash} ) { + assert_in( $key, $valid_keys, $name ); + } + + return; +} + + + =head1 UTILITY ASSERTIONS =head2 assert_fail( [$name] ) @@ -641,13 +778,21 @@ sub assert_fail(;$) { require Carp; - &Carp::confess( _fail_msg($_[0]) ); + &Carp::confess( Carp::Assert::_fail_msg($_[0]) ); +} + + +# Since List::Util doesn't have any() all the way back. +sub _any(&;@) { + my $sub = shift; + $sub->($_) && return 1 for @_; + return 0; } =head1 COPYRIGHT & LICENSE -Copyright 2005-2012 Andy Lester. +Copyright 2005-2017 Andy Lester. This program is free software; you can redistribute it and/or modify it under the terms of the Artistic License version 2.0. @@ -655,6 +800,7 @@ =head1 ACKNOWLEDGEMENTS Thanks to +Eric A. Zarko, Bob Diss, Pete Krawczyk, David Storrs, diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/Carp-Assert-More-1.14/README new/Carp-Assert-More-1.16/README --- old/Carp-Assert-More-1.14/README 2012-10-31 14:51:23.000000000 +0100 +++ new/Carp-Assert-More-1.16/README 1970-01-01 01:00:00.000000000 +0100 @@ -1,11 +0,0 @@ -# Carp::Assert::More - -Carp::Assert::More is a set of handy assertion functions for Perl. - -For example, instead of writing - - assert( $foo ne '', '$foo cannot be blank' ); - -you can write - - assert_nonblank( $foo, '$foo cannot be blank' ); diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/Carp-Assert-More-1.14/README.md new/Carp-Assert-More-1.16/README.md --- old/Carp-Assert-More-1.14/README.md 1970-01-01 01:00:00.000000000 +0100 +++ new/Carp-Assert-More-1.16/README.md 2017-08-04 21:18:59.000000000 +0200 @@ -0,0 +1,14 @@ +# Carp::Assert::More + +[![Build Status](https://travis-ci.org/petdance/carp-assert-more.svg?branch=dev)](https://travis-ci.org/petdance/carp-assert-more) + +Carp::Assert::More is a set of handy assertion functions for Perl. + +For example, instead of writing + + assert( defined($foo), '$foo cannot be undefined' ); + assert( $foo ne '', '$foo cannot be blank' ); + +you can write + + assert_nonblank( $foo, '$foo cannot be blank' ); diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/Carp-Assert-More-1.14/t/assert_all_keys_in.t new/Carp-Assert-More-1.16/t/assert_all_keys_in.t --- old/Carp-Assert-More-1.14/t/assert_all_keys_in.t 1970-01-01 01:00:00.000000000 +0100 +++ new/Carp-Assert-More-1.16/t/assert_all_keys_in.t 2017-08-04 21:18:59.000000000 +0200 @@ -0,0 +1,36 @@ +#!perl -Tw + +use warnings; +use strict; + +use Test::More tests => 3; + +use Carp::Assert::More; + +use Test::Exception; + +my $monolith = { + depth => 1, + width => 4, + height => 9, +}; +my $shaq = { + firstname => 'Shaquille', + lastname => 'O\'Neal', + height => 85, +}; + +my @object_keys = qw( height width depth ); +my @person_keys = qw( firstname lastname height ); + +lives_ok( sub { assert_all_keys_in( $monolith, \@object_keys ) }, 'Monolith object has valid keys' ); +lives_ok( sub { assert_all_keys_in( $shaq, \@person_keys ) }, 'Shaq object has valid keys' ); + +throws_ok( + sub { assert_all_keys_in( $monolith, \@person_keys ) }, + qr/Assertion.*failed!/, + 'Monolith fails on person keys' +); + +done_testing(); +exit 0; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/Carp-Assert-More-1.14/t/assert_arrayref.t new/Carp-Assert-More-1.16/t/assert_arrayref.t --- old/Carp-Assert-More-1.14/t/assert_arrayref.t 1970-01-01 01:00:00.000000000 +0100 +++ new/Carp-Assert-More-1.16/t/assert_arrayref.t 2017-08-04 21:18:59.000000000 +0200 @@ -0,0 +1,66 @@ +#!perl -Tw + +# This is cut & paste of assert_arrayref.t + +package Foo; + +sub new { my $class = shift; return bless [@_], $class; } + +package main; + +use warnings; +use strict; + +use Test::More tests => 7; + +use Carp::Assert::More; + +local $@; +$@ = ''; + +# {} is not a listref +eval { + assert_arrayref( {} ); +}; +like( $@, qr/Assertion.*failed/ ); + +# a ref to a hash with stuff in it is not a listref +my $ref = { foo => 'foo', bar => 'bar' }; +eval { + assert_arrayref( $ref ); +}; +like( $@, qr/Assertion.*failed/ ); + +# 3 is not a listref +eval { + assert_arrayref( 3 ); +}; +like( $@, qr/Assertion.*failed/ ); + +# [] is a listref +eval { + assert_arrayref( [] ); +}; +is( $@, '' ); + +# a ref to a list with stuff in it is a listref +my @ary = ('foo', 'bar', 'baaz'); +eval { + assert_arrayref( \@ary ); +}; +is( $@, '' ); + +# sub {} is not a listref +eval { + assert_arrayref( sub {} ); +}; +like( $@, qr/Assertion.*failed/ ); + +# Foo->new->isa("ARRAY") returns true, so do we +eval { + assert_arrayref( Foo->new ); +}; +is( $@, '' ); + +done_testing(); +exit 0; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/Carp-Assert-More-1.14/t/assert_coderef.t new/Carp-Assert-More-1.16/t/assert_coderef.t --- old/Carp-Assert-More-1.14/t/assert_coderef.t 1970-01-01 01:00:00.000000000 +0100 +++ new/Carp-Assert-More-1.16/t/assert_coderef.t 2017-08-04 21:18:59.000000000 +0200 @@ -0,0 +1,61 @@ +#!perl -Tw + +package Foo; + +sub new { my $class = shift; return bless sub {}, $class; } + +package main; + +use warnings; +use strict; + +use Test::More tests => 7; + +use Carp::Assert::More; + +local $@; +$@ = ''; + +# {} is not a coderef +eval { + assert_coderef( {} ); +}; +like( $@, qr/Assertion.*failed/ ); + +# a ref to a hash with stuff in it is not a coderef +my $ref = { foo => 'foo', bar => 'bar' }; +eval { + assert_coderef( $ref ); +}; +like( $@, qr/Assertion.*failed/ ); + +# 3 is not a coderef +eval { + assert_coderef( 3 ); +}; +like( $@, qr/Assertion.*failed/ ); + +# [] is not a coderef +eval { + assert_coderef( [] ); +}; +like( $@, qr/Assertion.*failed/ ); + +# a ref to a list with stuff in it is not a coderef +my @ary = ('foo', 'bar', 'baaz'); +eval { + assert_coderef( \@ary ); +}; +like( $@, qr/Assertion.*failed/ ); + +# sub {} is a coderef +eval { + assert_coderef( sub {} ); +}; +is( $@, '' ); + +# Foo->new->isa("CODE") returns true, so do we +eval { + assert_coderef( Foo->new ); +}; +is( $@, '' ); diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/Carp-Assert-More-1.14/t/assert_empty.t new/Carp-Assert-More-1.16/t/assert_empty.t --- old/Carp-Assert-More-1.14/t/assert_empty.t 1970-01-01 01:00:00.000000000 +0100 +++ new/Carp-Assert-More-1.16/t/assert_empty.t 2017-08-04 21:18:59.000000000 +0200 @@ -0,0 +1,54 @@ +#!perl -Tw + +use warnings; +use strict; + +use Test::More tests => 12; +use Test::Exception; + +use Carp::Assert::More; + +use constant PASS => 1; +use constant FAIL => 0; + +my @cases = ( + [ 0 => FAIL ], + [ 'foo' => FAIL ], + [ undef => FAIL ], + [ {} => PASS ], + [ [] => PASS ], + [ {foo=>1} => FAIL ], + [ [1,2,3] => FAIL ], +); + +for my $case ( @cases ) { + my ($val,$expected_status) = @$case; + + eval { assert_empty( $val ) }; + $val = "undef" if !defined($val); + my $desc = "Checking \"$val\""; + + if ( $expected_status eq FAIL ) { + like( $@, qr/Assertion.+failed/, $desc ); + } else { + is( $@, "", $desc ); + } +} + +throws_ok( sub { assert_empty( 27 ) }, qr/Not an array or hash reference/ ); + +BLESSED_ARRAY: { + my $array_object = bless( [], 'WackyPackage' ); + lives_ok( sub { assert_empty( $array_object ) } ); + + push( @{$array_object}, 14 ); + throws_ok( sub { assert_empty( $array_object, 'Flooble' ) }, qr/\QAssertion (Flooble) failed!/ ); +} + +BLESSED_HASH: { + my $hash_object = bless( {}, 'WackyPackage' ); + lives_ok( sub { assert_empty( $hash_object ) } ); + + $hash_object->{foo} = 14; + throws_ok( sub { assert_empty( $hash_object, 'Flargle' ) }, qr/\QAssertion (Flargle) failed!/ ); +} diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/Carp-Assert-More-1.14/t/assert_exists.t new/Carp-Assert-More-1.16/t/assert_exists.t --- old/Carp-Assert-More-1.14/t/assert_exists.t 2012-10-31 17:29:03.000000000 +0100 +++ new/Carp-Assert-More-1.16/t/assert_exists.t 2017-08-04 21:18:59.000000000 +0200 @@ -3,11 +3,9 @@ use warnings; use strict; -use Test::More tests=>8; +use Test::More tests => 7; -BEGIN { - use_ok( 'Carp::Assert::More' ); -} +use Carp::Assert::More; my %foo = ( name => 'Andy Lester', diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/Carp-Assert-More-1.14/t/assert_fail.t new/Carp-Assert-More-1.16/t/assert_fail.t --- old/Carp-Assert-More-1.14/t/assert_fail.t 2012-10-31 17:29:07.000000000 +0100 +++ new/Carp-Assert-More-1.16/t/assert_fail.t 2017-08-04 21:18:59.000000000 +0200 @@ -3,9 +3,9 @@ use warnings; use strict; -use Test::More tests=>2; +use Test::More tests => 1; -BEGIN { use_ok( 'Carp::Assert::More' ); } +use Carp::Assert::More; eval { assert_fail( "Everything is broken!" ); diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/Carp-Assert-More-1.14/t/assert_isa_in.t new/Carp-Assert-More-1.16/t/assert_isa_in.t --- old/Carp-Assert-More-1.14/t/assert_isa_in.t 1970-01-01 01:00:00.000000000 +0100 +++ new/Carp-Assert-More-1.16/t/assert_isa_in.t 2017-08-04 21:18:59.000000000 +0200 @@ -0,0 +1,31 @@ +#!perl -Tw + +use warnings; +use strict; + +use Test::More tests => 12; +use Carp::Assert::More; + +use Test::Exception; + +my $rc = eval 'assert_isa_in(undef)'; +is( $rc, undef, 'Fails the eval' ); +like( $@, qr/Not enough arguments for Carp::Assert::More::assert_isa_in/, 'Prototype requires two arguments' ); + +dies_ok { assert_isa_in(undef, undef) } 'Dies with one undef argument'; +dies_ok { assert_isa_in(bless({}, 'x'), [] ) } 'No types passed in'; +dies_ok { assert_isa_in('z', []) } 'List of empty types does not allow you to pass non-objects'; + +lives_ok { assert_isa_in( bless({}, 'x'), [ 'x' ] ) } 'One out of one'; +dies_ok { assert_isa_in( bless({}, 'x'), [ 'y' ] ) } 'Zero out of one'; +lives_ok { assert_isa_in( bless({}, 'x'), [ 'y', 'x' ] ) } 'One out of two'; + +@y::ISA = ( 'x' ); +my $x = bless {}, 'y'; +isa_ok( $x, 'y', 'Verifying our assumptions' ); +lives_ok { assert_isa_in( bless({}, 'y'), [ 'y' ] ) } 'Matches child class'; +lives_ok { assert_isa_in( bless({}, 'y'), [ 'x' ] ) } 'Matches base class'; +dies_ok { assert_isa_in( bless({}, 'x'), [ 'y' ] ) } 'Parent does not match child'; + +done_testing(); +exit 0; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/Carp-Assert-More-1.14/t/assert_negative.t new/Carp-Assert-More-1.16/t/assert_negative.t --- old/Carp-Assert-More-1.14/t/assert_negative.t 2005-10-14 19:02:35.000000000 +0200 +++ new/Carp-Assert-More-1.16/t/assert_negative.t 2017-08-04 21:18:59.000000000 +0200 @@ -3,9 +3,9 @@ use warnings; use strict; -use Test::More tests=>7; +use Test::More tests => 6; -BEGIN { use_ok( 'Carp::Assert::More' ); } +use Carp::Assert::More; use constant PASS => 1; use constant FAIL => 2; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/Carp-Assert-More-1.14/t/assert_negative_integer.t new/Carp-Assert-More-1.16/t/assert_negative_integer.t --- old/Carp-Assert-More-1.14/t/assert_negative_integer.t 2005-10-14 19:02:35.000000000 +0200 +++ new/Carp-Assert-More-1.16/t/assert_negative_integer.t 2017-08-04 21:18:59.000000000 +0200 @@ -3,9 +3,9 @@ use warnings; use strict; -use Test::More tests=>8; +use Test::More tests => 7; -BEGIN { use_ok( 'Carp::Assert::More' ); } +use Carp::Assert::More; use constant PASS => 1; use constant FAIL => 2; @@ -33,3 +33,5 @@ } } +done_testing(); +exit 0; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/Carp-Assert-More-1.14/t/assert_nonnegative.t new/Carp-Assert-More-1.16/t/assert_nonnegative.t --- old/Carp-Assert-More-1.14/t/assert_nonnegative.t 2005-10-14 19:02:35.000000000 +0200 +++ new/Carp-Assert-More-1.16/t/assert_nonnegative.t 2016-07-06 20:10:36.000000000 +0200 @@ -1,11 +1,11 @@ -#!perl -Tw +#!perl -T use warnings; use strict; -use Test::More tests=>7; +use Test::More tests => 6; -BEGIN { use_ok( 'Carp::Assert::More' ); } +use Carp::Assert::More; use constant PASS => 1; use constant FAIL => 2; @@ -27,8 +27,8 @@ if ( $status eq FAIL ) { like( $@, qr/Assertion.+failed/, $desc ); - } else { - is( $@, "", $desc ); + } + else { + is( $@, '', $desc ); } } - diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/Carp-Assert-More-1.14/t/assert_nonnegative_integer.t new/Carp-Assert-More-1.16/t/assert_nonnegative_integer.t --- old/Carp-Assert-More-1.14/t/assert_nonnegative_integer.t 2005-10-14 19:02:35.000000000 +0200 +++ new/Carp-Assert-More-1.16/t/assert_nonnegative_integer.t 2017-08-04 21:18:59.000000000 +0200 @@ -3,9 +3,9 @@ use warnings; use strict; -use Test::More tests=>7; +use Test::More tests => 6; -BEGIN { use_ok( 'Carp::Assert::More' ); } +use Carp::Assert::More; use constant PASS => 1; use constant FAIL => 2; @@ -32,3 +32,5 @@ } } +done_testing(); +exit 0; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/Carp-Assert-More-1.14/t/assert_nonref.t new/Carp-Assert-More-1.16/t/assert_nonref.t --- old/Carp-Assert-More-1.14/t/assert_nonref.t 2005-10-14 19:02:35.000000000 +0200 +++ new/Carp-Assert-More-1.16/t/assert_nonref.t 2017-08-04 21:18:59.000000000 +0200 @@ -3,9 +3,9 @@ use warnings; use strict; -use Test::More tests => 6; +use Test::More tests => 5; -BEGIN { use_ok( 'Carp::Assert::More' ); } +use Carp::Assert::More; local $@; $@ = ''; @@ -41,3 +41,6 @@ assert_nonref( $ref ); }; like( $@, qr/Assertion.*failed/ ); + +done_testing(); +exit 0; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/Carp-Assert-More-1.14/t/assert_nonzero.t new/Carp-Assert-More-1.16/t/assert_nonzero.t --- old/Carp-Assert-More-1.14/t/assert_nonzero.t 2005-10-14 19:02:35.000000000 +0200 +++ new/Carp-Assert-More-1.16/t/assert_nonzero.t 2017-08-04 21:18:59.000000000 +0200 @@ -3,9 +3,9 @@ use warnings; use strict; -use Test::More tests=>7; +use Test::More tests => 6; -BEGIN { use_ok( 'Carp::Assert::More' ); } +use Carp::Assert::More; use constant PASS => 1; use constant FAIL => 2; @@ -32,3 +32,5 @@ } } +done_testing(); +exit 0; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/Carp-Assert-More-1.14/t/assert_nonzero_integer.t new/Carp-Assert-More-1.16/t/assert_nonzero_integer.t --- old/Carp-Assert-More-1.14/t/assert_nonzero_integer.t 2005-10-14 19:02:35.000000000 +0200 +++ new/Carp-Assert-More-1.16/t/assert_nonzero_integer.t 2017-08-04 21:18:59.000000000 +0200 @@ -3,9 +3,9 @@ use warnings; use strict; -use Test::More tests=>7; +use Test::More tests => 6; -BEGIN { use_ok( 'Carp::Assert::More' ); } +use Carp::Assert::More; use constant PASS => 1; use constant FAIL => 2; @@ -31,4 +31,3 @@ is( $@, "", $desc ); } } - diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/Carp-Assert-More-1.14/t/assert_numeric.t new/Carp-Assert-More-1.16/t/assert_numeric.t --- old/Carp-Assert-More-1.14/t/assert_numeric.t 1970-01-01 01:00:00.000000000 +0100 +++ new/Carp-Assert-More-1.16/t/assert_numeric.t 2017-08-04 21:18:59.000000000 +0200 @@ -0,0 +1,57 @@ +#!perl -Tw + +use warnings; +use strict; + +use Test::More tests => 21; + +use Carp::Assert::More; + +use Test::Exception; + +my @good = ( + 1, + 2112, + '2112', + 3.1415926, + -5150, + '-0.12', + '0.12', + 2.112E+03, + 2.112E3, + 2.112e3, + 2.112e0, + 2.112e-1, +); +my @bad = ( + undef, + 'zero', + '', + [], + {}, + \99, + \*STDIN, + '3-5', + 3.5.4 +); + +for my $good ( @good ) { + lives_ok( + sub { assert_numeric( $good, "$good is good" ) }, + "$good passes assertion" + ); +} + +for my $bad ( @bad ) { + my $disp = $bad; + $disp = '<undef>' unless defined $disp; + throws_ok( + sub { assert_numeric( $bad, "$disp is bad" ) }, + qr/\Q$disp is bad/, + "$disp fails assertion" + ); +} + + +done_testing(); +exit 0; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/Carp-Assert-More-1.14/t/assert_positive.t new/Carp-Assert-More-1.16/t/assert_positive.t --- old/Carp-Assert-More-1.14/t/assert_positive.t 2012-10-31 17:28:33.000000000 +0100 +++ new/Carp-Assert-More-1.16/t/assert_positive.t 2017-08-04 21:18:59.000000000 +0200 @@ -3,9 +3,9 @@ use warnings; use strict; -use Test::More tests=>7; +use Test::More tests => 6; -BEGIN { use_ok( 'Carp::Assert::More' ); } +use Carp::Assert::More; use constant PASS => 1; use constant FAIL => 2; @@ -33,3 +33,5 @@ } } +done_testing(); +exit 0; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/Carp-Assert-More-1.14/t/assert_positive_integer.t new/Carp-Assert-More-1.16/t/assert_positive_integer.t --- old/Carp-Assert-More-1.14/t/assert_positive_integer.t 2005-10-14 19:02:35.000000000 +0200 +++ new/Carp-Assert-More-1.16/t/assert_positive_integer.t 2017-08-04 21:18:59.000000000 +0200 @@ -3,9 +3,9 @@ use warnings; use strict; -use Test::More tests=>8; +use Test::More tests => 7; -BEGIN { use_ok( 'Carp::Assert::More' ); } +use Carp::Assert::More; use constant PASS => 1; use constant FAIL => 2; @@ -33,3 +33,5 @@ } } +done_testing(); +exit 0; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/Carp-Assert-More-1.14/t/test-coverage.t new/Carp-Assert-More-1.16/t/test-coverage.t --- old/Carp-Assert-More-1.14/t/test-coverage.t 2012-10-31 16:52:33.000000000 +0100 +++ new/Carp-Assert-More-1.16/t/test-coverage.t 2017-08-04 21:18:59.000000000 +0200 @@ -1,6 +1,6 @@ #!perl -Tw -use Test::More tests => 26; +use Test::More tests => 32; use Carp::Assert::More; ++++++ cpanspec.yml ++++++ --- #description_paragraphs: 3 #description: |- # override description from CPAN #summary: override summary from CPAN #no_testing: broken upstream #sources: # - source1 # - source2 #patches: # foo.patch: -p1 # bar.patch: #preamble: |- # BuildRequires: gcc-c++ #post_prep: |- # hunspell=`pkg-config --libs hunspell | sed -e 's,-l,,; s, *,,g'` # sed -i -e "s,hunspell-X,$hunspell," t/00-prereq.t Makefile.PL #post_build: |- # rm unused.files #post_install: |- # sed on %{name}.files #license: SUSE-NonFree #skip_noarch: 1 #custom_build: |- #./Build build flags=%{?_smp_mflags} --myflag #custom_test: |- #startserver && make test #ignore_requires: Bizarre::Module