]> git.vpit.fr Git - perl/modules/rgit.git/commitdiff
Throughly test App::Rgit::Command::action
authorVincent Pit <vince@profvince.com>
Sun, 5 Oct 2008 22:08:26 +0000 (00:08 +0200)
committerVincent Pit <vince@profvince.com>
Sun, 5 Oct 2008 22:08:26 +0000 (00:08 +0200)
lib/App/Rgit/Command.pm
t/15-failures.t

index 3754d83363bfc3af04a5e703f456c700e3f92ba5..203041439d6e175db61a16127720b32975e917a4 100644 (file)
@@ -70,9 +70,10 @@ Otherwise, returns the current class for C<$cmd>.
 
 sub action {
  my ($self, $cmd, $pkg) = @_;
- $cmd = $self->cmd if !defined $cmd
-                   and defined $self and $self->isa(__PACKAGE__);
- return unless defined $cmd;
+ if (not defined $cmd) {
+  return unless defined $self and ref $self and $self->isa(__PACKAGE__);
+  $cmd = $self->cmd;
+ }
  unless (defined $pkg) {
   return __PACKAGE__ . '::Each' unless defined $commands{$cmd};
   return $commands{$cmd}
index 52332672c5da3d15f50f03f4488c37470b5d3fa0..46d2d320806aa01729d9c4e61c2a06c144cd97ed 100644 (file)
@@ -3,7 +3,7 @@
 use strict;
 use warnings;
 
-use Test::More tests => 20;
+use Test::More tests => 30;
 
 use App::Rgit;
 
@@ -56,3 +56,24 @@ like($@, qr!Command\s+dongs\s+should\s+be\s+executed\s+as\s+a\s+App::Rgit::Comma
 $res = eval { App::Rgit::Test::Foo->App::Rgit::Command::new(cmd => 'version') };
 is($@, '', 'App::Rgit::Test::Foo->App::Rgit::Command::new(cmd => "version"): does not croak');
 isa_ok($res, 'App::Rgit::Test::Foo', 'App::Rgit::Test::Foo->App::Rgit::Command::new(cmd => "version"): returns valid object');
+
+$res = eval { App::Rgit::Command->action('version') };
+is($@,   '', 'App::Rgit::Command->action("version"): does not croak');
+is($res, 'App::Rgit::Command::Once', 'App::Rgit::Command->action("version"): returns valid object');
+
+$res = eval { App::Rgit::Command->new(cmd => 'version')->action() };
+is($@,   '', 'App::Rgit::Command->action(): does not croak');
+is($res, 'App::Rgit::Command::Once', 'App::Rgit::Command->action(): returns valid object');
+
+$res = eval { App::Rgit::Command->action() };
+is($@,   '',    'App::Rgit::Command->action(): no cmd: does not croak');
+is($res, undef, 'App::Rgit::Command->action(); no cmd: returns undef');
+
+$res = eval { App::Rgit::Command::action() };
+is($@,   '',    'undef->App::Rgit::Command::action(): no cmd: does not croak');
+is($res, undef, 'undef->App::Rgit::Command::action(); no cmd: returns undef');
+
+$res = bless { }, 'App::Rgit::Test::Monkey';
+$res = eval { $res->App::Rgit::Command::action() };
+is($@,   '',    'App::Rgit::Test::Monkey->App::Rgit::Command::action(): no cmd: does not croak');
+is($res, undef, 'App::Rgit::Test::Monkey->App::Rgit::Command::action(); no cmd: returns undef');