Hello community,

here is the log from the commit of package perl-Test-Spec for openSUSE:Factory 
checked in at 2015-04-15 16:25:07
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/perl-Test-Spec (Old)
 and      /work/SRC/openSUSE:Factory/.perl-Test-Spec.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "perl-Test-Spec"

Changes:
--------
--- /work/SRC/openSUSE:Factory/perl-Test-Spec/perl-Test-Spec.changes    
2013-11-26 14:42:09.000000000 +0100
+++ /work/SRC/openSUSE:Factory/.perl-Test-Spec.new/perl-Test-Spec.changes       
2015-04-15 16:25:08.000000000 +0200
@@ -1,0 +2,23 @@
+Tue Apr 14 19:54:09 UTC 2015 - co...@suse.com
+
+- updated to 0.49
+   see /usr/share/doc/packages/perl-Test-Spec/Changes
+
+  0.49 Sun Jan 18 12:56:00 EST 2015
+    - Added with_deep
+      Contributed by Andy Jones (issue #21)
+    - Documented memory leak in stub()
+      Reported by Victor Efimov (issue #14)
+    - Added Travis CI info
+      Contributed by Andy Jones (issue #23)
+    - Fixed mock() example documentation
+      Reported by Victor Efimov (issue #15)
+      Contributed by Andy Jones (issue #22)
+  
+  0.48 Tue Jan 06 22:52:00 EST 2015
+    - Testing fixes for Alpha branch of Test::More
+      Contributed by Chad Granum (issue #18)
+    - Metadata fixes
+      Contributed by Graham Knop (issue #19)
+
+-------------------------------------------------------------------

Old:
----
  Test-Spec-0.47.tar.gz

New:
----
  Test-Spec-0.49.tar.gz

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Other differences:
------------------
++++++ perl-Test-Spec.spec ++++++
--- /var/tmp/diff_new_pack.um8qC3/_old  2015-04-15 16:25:08.000000000 +0200
+++ /var/tmp/diff_new_pack.um8qC3/_new  2015-04-15 16:25:08.000000000 +0200
@@ -1,7 +1,7 @@
 #
 # spec file for package perl-Test-Spec
 #
-# Copyright (c) 2013 SUSE LINUX Products GmbH, Nuernberg, Germany.
+# Copyright (c) 2015 SUSE LINUX GmbH, Nuernberg, Germany.
 #
 # All modifications and additions to the file contributed by third parties
 # remain the property of their copyright owners, unless otherwise agreed
@@ -17,7 +17,7 @@
 
 
 Name:           perl-Test-Spec
-Version:        0.47
+Version:        0.49
 Release:        0
 %define cpan_name Test-Spec
 Summary:        Write tests in a declarative specification style
@@ -32,17 +32,13 @@
 BuildRequires:  perl(Package::Stash) >= 0.23
 BuildRequires:  perl(TAP::Parser)
 BuildRequires:  perl(Test::Deep) >= 0.103
+BuildRequires:  perl(Test::More) >= 0.88
 BuildRequires:  perl(Test::Trap)
 BuildRequires:  perl(Tie::IxHash)
-#BuildRequires: perl(Test::Spec)
-#BuildRequires: perl(Test::Spec::Context)
-#BuildRequires: perl(Test::Spec::Mocks)
-#BuildRequires: perl(Test::Spec::Mocks::Expectation)
-#BuildRequires: perl(Test::Spec::SharedHash)
-#BuildRequires: perl(Tie::StdHash)
 Requires:       perl(Package::Stash) >= 0.23
 Requires:       perl(TAP::Parser)
 Requires:       perl(Test::Deep) >= 0.103
+Requires:       perl(Test::More) >= 0.88
 Requires:       perl(Test::Trap)
 Requires:       perl(Tie::IxHash)
 %{perl_requires}

++++++ Test-Spec-0.47.tar.gz -> Test-Spec-0.49.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/Test-Spec-0.47/.travis.yml 
new/Test-Spec-0.49/.travis.yml
--- old/Test-Spec-0.47/.travis.yml      1970-01-01 01:00:00.000000000 +0100
+++ new/Test-Spec-0.49/.travis.yml      2015-01-18 19:01:51.000000000 +0100
@@ -0,0 +1,10 @@
+language: perl
+
+perl:
+  - "5.20"
+  - "5.18"
+  - "5.16"
+  - "5.14"
+  - "5.12"
+  - "5.10"
+  - "5.8"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/Test-Spec-0.47/Changes new/Test-Spec-0.49/Changes
--- old/Test-Spec-0.47/Changes  2013-10-11 07:23:38.000000000 +0200
+++ new/Test-Spec-0.49/Changes  2015-01-18 19:01:51.000000000 +0100
@@ -1,5 +1,22 @@
 Revision history for Perl extension Test::Spec.
 
+0.49 Sun Jan 18 12:56:00 EST 2015
+  - Added with_deep
+    Contributed by Andy Jones (issue #21)
+  - Documented memory leak in stub()
+    Reported by Victor Efimov (issue #14)
+  - Added Travis CI info
+    Contributed by Andy Jones (issue #23)
+  - Fixed mock() example documentation
+    Reported by Victor Efimov (issue #15)
+    Contributed by Andy Jones (issue #22)
+
+0.48 Tue Jan 06 22:52:00 EST 2015
+  - Testing fixes for Alpha branch of Test::More
+    Contributed by Chad Granum (issue #18)
+  - Metadata fixes
+    Contributed by Graham Knop (issue #19)
+
 0.47 Fri Oct 11 01:22:00 EDT 2012
   - added repository metadata for CPAN
     Contributed by David Steinbrunner (issue #13)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/Test-Spec-0.47/MANIFEST new/Test-Spec-0.49/MANIFEST
--- old/Test-Spec-0.47/MANIFEST 2013-10-11 07:24:49.000000000 +0200
+++ new/Test-Spec-0.49/MANIFEST 2015-01-18 19:03:18.000000000 +0100
@@ -1,3 +1,4 @@
+.travis.yml
 Changes
 lib/Test/Spec.pm
 lib/Test/Spec/Context.pm
@@ -29,4 +30,5 @@
 t/subset_spec.pl
 t/test_helper.pl
 t/uncompilable_spec.pl
-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 -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/Test-Spec-0.47/META.json new/Test-Spec-0.49/META.json
--- old/Test-Spec-0.47/META.json        1970-01-01 01:00:00.000000000 +0100
+++ new/Test-Spec-0.49/META.json        2015-01-18 19:03:18.000000000 +0100
@@ -0,0 +1,61 @@
+{
+   "abstract" : "Write tests in a declarative specification style",
+   "author" : [
+      "Philip Garrett <philip.garr...@icainformatics.com>"
+   ],
+   "dynamic_config" : 1,
+   "generated_by" : "ExtUtils::MakeMaker version 6.98, CPAN::Meta::Converter 
version 2.143240",
+   "license" : [
+      "perl_5"
+   ],
+   "meta-spec" : {
+      "url" : "http://search.cpan.org/perldoc?CPAN::Meta::Spec";,
+      "version" : "2"
+   },
+   "name" : "Test-Spec",
+   "no_index" : {
+      "directory" : [
+         "t",
+         "inc"
+      ]
+   },
+   "prereqs" : {
+      "build" : {
+         "requires" : {
+            "ExtUtils::MakeMaker" : "0"
+         }
+      },
+      "configure" : {
+         "requires" : {
+            "ExtUtils::MakeMaker" : "0"
+         }
+      },
+      "runtime" : {
+         "requires" : {
+            "Carp" : "0",
+            "Exporter" : "0",
+            "List::Util" : "0",
+            "Package::Stash" : "0.23",
+            "Scalar::Util" : "1.11",
+            "TAP::Parser" : "0",
+            "Test::Deep" : "0.103",
+            "Test::More" : "0.88",
+            "Test::Trap" : "0",
+            "Tie::IxHash" : "0",
+            "constant" : "0"
+         }
+      }
+   },
+   "release_status" : "stable",
+   "resources" : {
+      "bugtracker" : {
+         "web" : "https://github.com/kingpong/perl-Test-Spec/issues";
+      },
+      "repository" : {
+         "type" : "git",
+         "url" : "https://github.com/kingpong/perl-Test-Spec";,
+         "web" : "https://github.com/kingpong/perl-Test-Spec";
+      }
+   },
+   "version" : "0.49"
+}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/Test-Spec-0.47/META.yml new/Test-Spec-0.49/META.yml
--- old/Test-Spec-0.47/META.yml 2013-10-11 07:24:49.000000000 +0200
+++ new/Test-Spec-0.49/META.yml 2015-01-18 19:03:18.000000000 +0100
@@ -1,34 +1,35 @@
---- #YAML:1.0
-name:               Test-Spec
-version:            0.47
-abstract:           Write tests in a declarative specification style
+---
+abstract: 'Write tests in a declarative specification style'
 author:
-    - Philip Garrett <philip.garr...@icainformatics.com>
-license:            perl
-distribution_type:  module
-configure_requires:
-    ExtUtils::MakeMaker:  0
+  - 'Philip Garrett <philip.garr...@icainformatics.com>'
 build_requires:
-    ExtUtils::MakeMaker:  0
+  ExtUtils::MakeMaker: '0'
+configure_requires:
+  ExtUtils::MakeMaker: '0'
+dynamic_config: 1
+generated_by: 'ExtUtils::MakeMaker version 6.98, CPAN::Meta::Converter version 
2.143240'
+license: perl
+meta-spec:
+  url: http://module-build.sourceforge.net/META-spec-v1.4.html
+  version: '1.4'
+name: Test-Spec
+no_index:
+  directory:
+    - t
+    - inc
 requires:
-    Carp:            0
-    constant:        0
-    Exporter:        0
-    List::Util:      0
-    Package::Stash:  0.23
-    Scalar::Util:    0
-    TAP::Parser:     0
-    Test::Deep:      0.103
-    Test::More:      0
-    Test::Trap:      0
-    Tie::IxHash:     0
+  Carp: '0'
+  Exporter: '0'
+  List::Util: '0'
+  Package::Stash: '0.23'
+  Scalar::Util: '1.11'
+  TAP::Parser: '0'
+  Test::Deep: '0.103'
+  Test::More: '0.88'
+  Test::Trap: '0'
+  Tie::IxHash: '0'
+  constant: '0'
 resources:
-    repository:  https://github.com/kingpong/perl-Test-Spec
-no_index:
-    directory:
-        - t
-        - inc
-generated_by:       ExtUtils::MakeMaker version 6.56
-meta-spec:
-    url:      http://module-build.sourceforge.net/META-spec-v1.4.html
-    version:  1.4
+  bugtracker: https://github.com/kingpong/perl-Test-Spec/issues
+  repository: https://github.com/kingpong/perl-Test-Spec
+version: '0.49'
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/Test-Spec-0.47/Makefile.PL 
new/Test-Spec-0.49/Makefile.PL
--- old/Test-Spec-0.47/Makefile.PL      2013-10-11 07:20:55.000000000 +0200
+++ new/Test-Spec-0.49/Makefile.PL      2015-01-07 04:56:23.000000000 +0100
@@ -1,8 +1,8 @@
-use 5.008008;
+use 5.008005;
 use ExtUtils::MakeMaker;
 # See lib/ExtUtils/MakeMaker.pm for details of how to influence
 # the contents of the Makefile that is written.
-WriteMakefile(
+my %MM_ARGS = (
     NAME              => 'Test::Spec',
     VERSION_FROM      => 'lib/Test/Spec.pm', # finds $VERSION
     PREREQ_PM         => {
@@ -10,21 +10,36 @@
       'Exporter'       => 0,
       'List::Util'     => 0,
       'Package::Stash' => 0.23,
-      'Scalar::Util'   => 0,
-      'TAP::Parser'    => 0,
+      'Scalar::Util'   => 1.11,
       'Test::Deep'     => 0.103, # earlier versions clash with UNIVERSAL::isa
-      'Test::More'     => 0,
+      'Test::More'     => 0.88,
       'Test::Trap'     => 0,
       'Tie::IxHash'    => 0,
       'constant'       => 0,
     },
-    ($] >= 5.005 ?     ## Add these new keywords supported since 5.005
-      (ABSTRACT_FROM  => 'lib/Test/Spec.pm', # retrieve abstract from module
-       AUTHOR         => 'Philip Garrett <philip.garr...@icainformatics.com>') 
: ()),
+    TEST_REQUIRES => {
+      'TAP::Parser'    => 0,
+    },
+    ABSTRACT_FROM  => 'lib/Test/Spec.pm', # retrieve abstract from module
+    AUTHOR         => 'Philip Garrett <philip.garr...@icainformatics.com>',
     LICENSE => 'perl',
     META_MERGE        => {
+        'meta-spec' => { version => 2.0 },
         resources => {
-            repository => 'https://github.com/kingpong/perl-Test-Spec',
+            repository => {
+                type => 'git',
+                web => 'https://github.com/kingpong/perl-Test-Spec',
+                url => 'https://github.com/kingpong/perl-Test-Spec',
+            },
+            bugtracker => {
+                web => 'https://github.com/kingpong/perl-Test-Spec/issues',
+            },
         },
     },
 );
+
+$MM_ARGS{BUILD_REQUIRES} = {%{$MM_ARGS{BUILD_REQUIRES}}, %{delete 
$MM_ARGS{TEST_REQUIRES}}}
+  if $eumm_version < 6.63_03;
+$MM_ARGS{PREREQ_PM} = {%{$MM_ARGS{PREREQ_PM}}, %{delete 
$MM_ARGS{BUILD_REQUIRES}}}
+  if $eumm_version < 6.55_01;
+WriteMakefile(%MM_ARGS);
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/Test-Spec-0.47/lib/Test/Spec/Mocks.pm 
new/Test-Spec-0.49/lib/Test/Spec/Mocks.pm
--- old/Test-Spec-0.47/lib/Test/Spec/Mocks.pm   2013-10-11 07:11:13.000000000 
+0200
+++ new/Test-Spec-0.49/lib/Test/Spec/Mocks.pm   2015-01-18 19:01:51.000000000 
+0100
@@ -3,6 +3,7 @@
 use warnings;
 use Carp ();
 use Scalar::Util ();
+use Test::Deep::NoTest ();
 
 require Test::Spec;
 
@@ -265,14 +266,31 @@
 
   sub with {
     my $self = shift;
-    $self->_args(\@_);
+    return $self->with_eq(@_);
+  }
+
+  sub with_eq {
+    my $self = shift;
+    $self->_eq_args(\@_);
+    return $self;
+  }
+
+  sub with_deep {
+    my $self = shift;
+    $self->_deep_args(\@_);
     return $self;
   }
 
-  sub _args {
+  sub _eq_args {
+    my $self = shift;
+    $self->{__eq_args} = shift if @_;
+    return $self->{__eq_args} ||= undef;
+  }
+
+  sub _deep_args {
     my $self = shift;
-    $self->{__args} = shift if @_;
-    return $self->{__args} ||= undef;
+    $self->{__deep_args} = shift if @_;
+    return $self->{__deep_args} ||= undef;
   }
 
   sub _given_args {
@@ -281,16 +299,16 @@
     return $self->{__given_args} ||= undef;
   }
 
-  sub _check_arguments {
+ sub _check_eq_args {
     my $self = shift;
-    return unless defined $self->_args;
+    return unless defined $self->_eq_args;
 
-    if (!defined $self->_given_args || scalar(@{$self->_args}) != 
scalar(@{$self->_given_args})) {
+    if (!defined $self->_given_args || scalar(@{$self->_eq_args}) != 
scalar(@{$self->_given_args})) {
         return "Number of arguments don't match expectation";
     }
     my @problems = ();
-    for my $i (0..$#{$self->_args}) {
-      my $a = $self->_args->[$i];
+    for my $i (0..$#{$self->_eq_args}) {
+      my $a = $self->_eq_args->[$i];
       my $b = $self->_given_args->[$i];
       unless ($self->_match_arguments($a, $b)) {
         $a = 'undef' unless defined $a;
@@ -309,6 +327,19 @@
     return $a eq $b;
   }
 
+  sub _check_deep_args {
+    my $self = shift;
+    return unless defined $self->_deep_args;
+
+    my @got = $self->_given_args;
+    my @expected = $self->_deep_args;
+    my ($same, $stack) = Test::Deep::cmp_details(\@got, \@expected);
+    if ( !$same ) {
+      return Test::Deep::deep_diag($stack);
+    }
+    return; # args are the same
+  }
+
   #
   # EXCEPTIONS
   #
@@ -445,7 +476,10 @@
         $self->_method, $message, $self->_call_count,
       );
     }
-    for my $message ($self->_check_arguments()) {
+    for my $message ($self->_check_eq_args) {
+      push @prob, $message;
+    }
+    for my $message ($self->_check_deep_args) {
       push @prob, $message;
     }
     return @prob;
@@ -738,7 +772,9 @@
 once (the default for mocks).
 
   it "returns true when a yes_or_no question is answered 'yes'" => sub {
-    my $console_mock = mock()->expects('read_line')->returns("yes");
+    my $console_mock = mock();
+    $console_mock->expects('read_line')
+                 ->returns("yes");
     # $console_mock->read_line returns "yes"
     ok( $asker->yes_or_no($console_mock, "Am I awesome?") );
   };
@@ -968,7 +1004,7 @@
 
 I<This method is alpha and will probably change in a future release.>
 
-=item with(@arguments)
+=item with(@arguments) / with_eq(@arguments)
 
 Configures the mocked method so that it must be called with arguments as
 specified. The arguments will be compared using the "eq" operator, so it works
@@ -976,6 +1012,21 @@
 they must be the exact same instance or you must overload the "eq" operator to
 provide the behavior you desire.
 
+=item with_deep(@arguments)
+
+Similar to C<with_eq> except the arguments are compared using L<Test::Deep>: 
scalars are
+compared by value, arrays and hashes must have the same elements and references
+must be blessed into the same class.
+
+    $cache->expects('set')
+          ->with_deep($customer_id, { name => $customer_name });
+
+Use L<Test::Deep>'s comparison functions for more flexibility:
+
+    use Test::Deep::NoTest ();
+    $s3->expects('put')
+       ->with_deep('test-bucket', 'my-doc', Test::Deep::ignore());
+
 =item raises($exception)
 
 Configures the mocked method so that it raises C<$exception> when called.
@@ -999,6 +1050,20 @@
 
 =back
 
+=head1 KNOWN ISSUES
+
+=over 4
+
+=item Memory leaks
+
+Because of the way the mock objects (C<stubs>, C<stub>, C<expects>, and 
C<mock>)
+are integrated into the Test::Spec runtime they will leak memory. It is
+not recommended to use the Test::Spec mocks in any long-running program.
+
+Patches welcome.
+
+=back
+
 =head1 SEE ALSO
 
 There are other less sugary mocking systems for Perl, including
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/Test-Spec-0.47/lib/Test/Spec.pm 
new/Test-Spec-0.49/lib/Test/Spec.pm
--- old/Test-Spec-0.47/lib/Test/Spec.pm 2013-10-11 07:21:46.000000000 +0200
+++ new/Test-Spec-0.49/lib/Test/Spec.pm 2015-01-18 19:01:51.000000000 +0100
@@ -3,7 +3,7 @@
 use warnings;
 use Test::Trap ();        # load as early as possible to override CORE::exit
 
-our $VERSION = '0.47';
+our $VERSION = '0.49';
 
 use base qw(Exporter);
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/Test-Spec-0.47/t/define.t 
new/Test-Spec-0.49/t/define.t
--- old/Test-Spec-0.47/t/define.t       2013-10-11 07:11:13.000000000 +0200
+++ new/Test-Spec-0.49/t/define.t       2015-01-07 04:56:23.000000000 +0100
@@ -10,7 +10,6 @@
 package Testcase::Spec::Define;
 use strict;
 use warnings;
-use Test::Deep;
 use Test::More tests => 18;
 
 # builds a hash of "parent name" => { "child name" => ... }
@@ -114,11 +113,16 @@
 is( A->phase, Test::Spec::DEFINITION_PHASE, "definition phase" );
 
 {
-  no warnings 'once';
-  my $stub = Stub->new;
-  local *A::builder          = sub { $stub };
-  local *Test::More::builder = sub { $stub };
-  A->runtests;
+  if ($INC{'Test/Stream.pm'}) {
+    Test::Stream->intercept(sub { A->runtests });
+  }
+  else {
+    no warnings 'once';
+    my $stub = Stub->new;
+    local *A::builder          = sub { $stub };
+    local *Test::More::builder = sub { $stub };
+    A->runtests;
+  }
 }
 
 is( A->phase, Test::Spec::EXECUTION_PHASE, "execution phase" );
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/Test-Spec-0.47/t/disabled.t 
new/Test-Spec-0.49/t/disabled.t
--- old/Test-Spec-0.47/t/disabled.t     2013-10-11 07:11:13.000000000 +0200
+++ new/Test-Spec-0.49/t/disabled.t     2015-01-07 04:56:23.000000000 +0100
@@ -13,7 +13,6 @@
 BEGIN { require "$Bin/test_helper.pl" };
 
 use Test::More;
-use TAP::Parser;
 
 my @results = parse_tap("disabled_spec.pl");
 my %passing = map { $_->description => $_ } grep { $_->is_test } @results;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/Test-Spec-0.47/t/mocks.t new/Test-Spec-0.49/t/mocks.t
--- old/Test-Spec-0.47/t/mocks.t        2013-10-11 07:11:13.000000000 +0200
+++ new/Test-Spec-0.49/t/mocks.t        2015-01-18 19:01:51.000000000 +0100
@@ -273,6 +273,7 @@
 
     describe "argument matching" => sub {
       my ($stub, $expectation);
+      my ($with_method, $num_args_mismatch_err, $args_mismatch_err);
 
       before each => sub {
         $stub = stub();
@@ -280,68 +281,124 @@
         $expectation->cancel; # don't verify
       };
 
-      it "passes when expecting no arguments" => sub {
-        $expectation->with();
-        $stub->run();
-        is(scalar($expectation->problems), 0);
+      shared_examples_for "number of arguments" => sub {
+        it "passes when expecting no arguments" => sub {
+          $expectation->$with_method();
+          $stub->run();
+          is(scalar($expectation->problems), 0);
+        };
+
+        it "fails when expecting no arguments and one argument given" => sub {
+          $expectation->$with_method();
+          $stub->run(1);
+          contains_ok([$expectation->problems], $num_args_mismatch_err);
+        };
+
+        it "fails when expecting one argument but given none" => sub {
+          $expectation->$with_method("Foo");
+          $stub->run();
+          contains_ok([$expectation->problems], $num_args_mismatch_err);
+        };
+
+        it "fails when expecting one argument but given two" => sub {
+          $expectation->$with_method("Foo");
+          $stub->run("Foo", "Bar");
+          contains_ok([$expectation->problems], $num_args_mismatch_err);
+        };
+
+      };
+
+      shared_examples_for "shallow string comparisons" => sub {
+        it "passes when expecting one String('Foo') argument" => sub {
+          $expectation->$with_method("Foo");
+          $stub->run("Foo");
+          is(scalar($expectation->problems), 0);
+        };
+
+        it "fails when expecting one String('Foo') argument but given a 
different String" => sub {
+          $expectation->$with_method("Foo");
+          $stub->run("Bar");
+          contains_ok([$expectation->problems], $args_mismatch_err);
+        };
+
+        it "fails when expecting many string arguments but given different 
arguments" => sub {
+          $expectation->$with_method('Foo', 'Bar', 'Baz');
+          $stub->run('Foo', 'Bar', 'Bat');
+          contains_ok([$expectation->problems], $args_mismatch_err);
+        };
+      };
+
+      describe "with eq" => sub {
+        before all => sub {
+          $with_method = 'with';
+          $num_args_mismatch_err = qr/^Number of arguments don't match 
expectation$/;
+          $args_mismatch_err = qr/^Expected argument in position/;
+        };
+
+        it_should_behave_like "number of arguments";
+        it_should_behave_like "shallow string comparisons";
+
+        it "passes when expecting an object argument that was given" => sub {
+          my $obj = TestOO->new;
+          $expectation->with($obj);
+          $stub->run($obj);
+          is(scalar($expectation->problems), 0);
+        };
+
+        it "fails when expecting an object argument but given a different one" 
=> sub {
+          $expectation->with(TestOO->new);
+          $stub->run(TestOO->new);
+          contains_ok([$expectation->problems], qr/^Expected argument in 
position 0 to be 'TestOO=HASH.+ but it was 'TestOO=HASH/);
+        };
+
+        it "passes when expecting an object argument and given a different one 
that compares with eq operator" => sub {
+          $expectation->with(TestProduct->new);
+          $stub->run(TestProduct->new);
+          is(scalar($expectation->problems), 0);
+        };
+      };
+
+      describe "with Test::Deep" => sub {
+        before all => sub {
+          $with_method = 'with_deep';
+          $num_args_mismatch_err = qr/^Compared array length/;
+          $args_mismatch_err = qr/^Compared .*(?!length)/;
+        };
+
+        it_should_behave_like "number of arguments";
+        it_should_behave_like "shallow string comparisons";
+
+        it "passes when expecting an object argument that was given" => sub {
+          my $obj = TestOO->new;
+          $expectation->with_deep($obj);
+          $stub->run($obj);
+          is(scalar($expectation->problems), 0);
+        };
+
+        it "passes when expecting an empty hash and given a different one" => 
sub {
+          $expectation->with_deep({});
+          $stub->run({});
+          is(scalar($expectation->problems), 0);
+        };
+
+        it "passes when given a copy of the data structure it is expecting" => 
sub {
+          $expectation->with_deep({ key => 'value' });
+          $stub->run({ key => 'value' });
+          is(scalar($expectation->problems), 0);
+        };
+
+        it "passes when expecting an object and given a clone" => sub {
+          $expectation->with_deep(TestOO->new);
+          $stub->run(TestOO->new);
+          is(scalar($expectation->problems), 0);
+        };
+
+        it "does a deep comparison of nested structures" => sub {
+          $expectation->with_deep({ product => TestProduct->new });
+          $stub->run({ product => TestProduct->new });
+          is(scalar($expectation->problems), 0);
+        };
       };
-
-      it "fails when expecting no arguments and one argument given" => sub {
-        $expectation->with();
-        $stub->run(1);
-        contains_ok([$expectation->problems], qr/^Number of arguments don't 
match expectation$/);
-      };
-
-      it "passes when expecting one String('Foo') argument" => sub {
-        $expectation->with("Foo");
-        $stub->run("Foo");
-        is(scalar($expectation->problems), 0);
-      };
-
-      it "fails when expecting one String('Foo') argument but given none" => 
sub {
-        $expectation->with("Foo");
-        $stub->run();
-        contains_ok([$expectation->problems], qr/^Number of arguments don't 
match expectation$/);
-      };
-
-      it "fails when expecting one String('Foo') argument but given two" => 
sub {
-        $expectation->with("Foo");
-        $stub->run("Foo", "Bar");
-        contains_ok([$expectation->problems], qr/^Number of arguments don't 
match expectation$/);
-      };
-
-      it "fails when expecting one String('Foo') argument but given a 
different String" => sub {
-        $expectation->with("Foo");
-        $stub->run("Bar");
-        contains_ok([$expectation->problems], qr/^Expected argument in 
position 0 to be 'Foo', but it was 'Bar'$/);
-      };
-
-      it "passes when expecting an object argument that was given" => sub {
-        my $obj = TestOO->new;
-        $expectation->with($obj);
-        $stub->run($obj);
-        is(scalar($expectation->problems), 0);
-      };
-
-      it "fails when expecting an object argument but given none" => sub {
-        my $obj = TestOO->new;
-        $expectation->with($obj);
-        $stub->run();
-        contains_ok([$expectation->problems], qr/^Number of arguments don't 
match expectation$/);
-      };
-
-      it "fails when expecting an object argument but given a different one" 
=> sub {
-        $expectation->with(TestOO->new);
-        $stub->run(TestOO->new);
-        contains_ok([$expectation->problems], qr/^Expected argument in 
position 0 to be 'TestOO=HASH.+ but it was 'TestOO=HASH/);
-      };
-
-      it "passes when expecting an object argument and given a different one 
that compares with eq operator" => sub {
-        $expectation->with(TestProduct->new);
-        $stub->run(TestProduct->new);
-        is(scalar($expectation->problems), 0);
-      };
-
     };
 
     describe "call count expectation" => sub {
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/Test-Spec-0.47/t/shared_examples.t 
new/Test-Spec-0.49/t/shared_examples.t
--- old/Test-Spec-0.47/t/shared_examples.t      2013-10-11 07:11:13.000000000 
+0200
+++ new/Test-Spec-0.49/t/shared_examples.t      2015-01-07 04:56:23.000000000 
+0100
@@ -13,7 +13,6 @@
 BEGIN { require "$Bin/test_helper.pl" };
 
 use Test::More;
-use TAP::Parser;
 
 my @results = parse_tap("shared_examples_spec.pl");
 my %passing = map { $_->description => 1 } grep { $_->is_test } @results;


Reply via email to