-$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 answer');
-
-$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 answer');
-
-$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');
-
-$res = eval { App::Rgit::Command->action('beer' => 'App::Rgit::Test::Pub') };
-is($@, '', 'App::Rgit::Command->action("beer" => "App::Rgit::Test::Pub"): does not croak');
-is($res, 'App::Rgit::Test::Pub', 'App::Rgit::Command->action("beer" => "App::Rgit::Test::Pub"): returns valid answer');
-
-$res = eval { App::Rgit::Command->action('beer') };
-is($@, '', 'App::Rgit::Command->action("beer"): does not croak');
-is($res, 'App::Rgit::Test::Pub', 'App::Rgit::Command->action("beer"): returns valid answer');
+$res = eval {
+ App::Rgit::Test::Foo->App::Rgit::Command::new(
+ cmd => 'version',
+ );
+};
+is $@, '', "App::Rgit::Test::Foo->App::Rgit::Command::new(cmd => 'version'): doesn't croak";
+isa_ok $res, 'App::Rgit::Test::Foo', "App::Rgit::Test::Foo->App::Rgit::Command::new(cmd => 'version'): returns object";
+
+$res = eval {
+ App::Rgit::Command->action('version')
+};
+is $@, '',
+ "App::Rgit::Command->action('version'): doesn't croak";
+is $res, 'App::Rgit::Command::Once',
+ "App::Rgit::Command->action('version'): returns class";
+
+$res = eval {
+ App::Rgit::Command->new(
+ cmd => 'version',
+ )->action();
+};
+is $@, '',
+ "App::Rgit::Command->action(): doesn't croak";
+is $res, 'App::Rgit::Command::Once',
+ 'App::Rgit::Command->action(): returns class';
+
+$res = eval {
+ App::Rgit::Command->action()
+};
+is $@, '', "App::Rgit::Command->action(): no cmd: doesn't 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: doesn't croak";
+is $res, undef, 'undef->App::Rgit::Command::action(); no cmd: returns undef';
+
+$res = eval {
+ my $obj = bless { }, 'App::Rgit::Test::Monkey';
+ $obj->App::Rgit::Command::action()
+};
+is $@, '',
+ "App::Rgit::Test::Monkey->App::Rgit::Command::action(): no cmd: doesn't croak";
+is $res, undef,
+ 'App::Rgit::Test::Monkey->App::Rgit::Command::action(); no cmd: returns undef';
+
+$res = eval {
+ App::Rgit::Command->action(
+ beer => 'App::Rgit::Test::Pub'
+ );
+};
+is $@, '',
+ "App::Rgit::Command->action(beer => 'App::Rgit::Test::Pub'): doesn't croak";
+is $res, 'App::Rgit::Test::Pub',
+ "App::Rgit::Command->action(beer => 'App::Rgit::Test::Pub'): returns class";
+
+$res = eval {
+ App::Rgit::Command->action('beer')
+};
+is $@, '',
+ "App::Rgit::Command->action('beer'): doesn't croak";
+is $res, 'App::Rgit::Test::Pub',
+ "App::Rgit::Command->action('beer'): returns class";
+
+$res = eval {
+ App::Rgit::Command->new(
+ cmd => 'beer',
+ );
+};
+like $@, qr!Couldn't load App::Rgit::Test::Pub:!,
+ 'App::Rgit::Command->new(cmd => "pub"): croaks';
+
+use App::Rgit::Config;
+
+my $arc = App::Rgit::Config->new(root => 't', git => 't/bin/git');
+
+$res = eval { $arc->repos };
+is $@, '', '$arc->repos: doesn\'t croak';
+is_deeply $res, [ ], '$arc->repos: found nothing';
+
+$res = eval { $arc->repos };
+is $@, '', '$arc->repos: doesn\'t croak';
+is_deeply $res, [ ], '$arc->repos: cached ok';
+
+use App::Rgit::Repository;
+
+my $cwd = Cwd::cwd;
+my $t = File::Spec->catdir($cwd, 't');
+chdir $t or die "chdir($t): $!";
+
+$res = eval {
+ App::Rgit::Repository->new();
+};
+is $@, '', "App::Rgit::Repository->new: no dir: doesn't croak";
+is $res, undef, 'App::Rgit::Repository->new: no dir: returns undef';
+
+$res = eval {
+ App::Rgit::Repository->new(
+ fake => 1,
+ );
+};
+is $@, '',
+ "App::Rgit::Repository->new: no dir, fake: doesn't croak";
+isa_ok $res, 'App::Rgit::Repository',
+ 'App::Rgit::Repository->new: no dir, fake: returns object';
+
+chdir $cwd or die "chdir($cwd): $!";
+
+$res = eval {
+ App::Rgit::Repository->new(dir => 't', fake => 1)
+};
+is $@, '',
+ "App::Rgit::Repository->new: relative dir, fake: doesn't croak";
+isa_ok $res, 'App::Rgit::Repository',
+ 'App::Rgit::Repository->new: relative dir, fake: returns object';