]> git.vpit.fr Git - perl/modules/rgit.git/commitdiff
Make App::Rgit::Config->new discover the root directory itself
authorVincent Pit <vince@profvince.com>
Wed, 24 Feb 2010 18:20:43 +0000 (19:20 +0100)
committerVincent Pit <vince@profvince.com>
Wed, 24 Feb 2010 18:20:43 +0000 (19:20 +0100)
bin/rgit
lib/App/Rgit/Config.pm
t/15-failures.t

index 19558a3d85bbf66e8e1777c748e3ab8ce205e62a..040dae68b11f0305c1818648acdd793b69f2e3fc 100755 (executable)
--- a/bin/rgit
+++ b/bin/rgit
@@ -43,12 +43,9 @@ if (not defined $policy) {
 
 setpgrp 0, 0 if $Config{d_setpgrp};
 
-my $root = $ENV{GIT_DIR};
-$root = cwd unless defined $root;
-
 my $ar = App::Rgit->new(
  git    => undef, # Autodiscovery
- root   => $root,
+ root   => undef, # Autodiscovery
  cmd    => $cmd,
  args   => \@ARGV,
  policy => $policy,
index 94a3359ff98767303214c7a5e1a8a25afb0cbd8e..903b3e4f9a433055274f96f511dfed03ed9039f1 100644 (file)
@@ -4,7 +4,7 @@ use strict;
 use warnings;
 
 use Carp       (); # confess
-use Cwd        (); # abs_path
+use Cwd        (); # cwd, abs_path
 use File::Spec (); # canonpath, catfile, path
 
 use App::Rgit::Repository;
@@ -44,8 +44,12 @@ sub new {
 
  my %args = @_;
 
- my $root = $args{root};
- return unless defined $root and -d $root;
+ my $root = defined $args{root}
+              ? $args{root}
+              : defined $ENV{GIT_DIR}
+                  ? $ENV{GIT_DIR}
+                  : Cwd::cwd;
+ Carp::confess("Invalid root directory") unless -d $root;
  $root = File::Spec->canonpath(Cwd::abs_path($root));
 
  my $git;
index 0e31edd4382297098cce2fd4f640905b766aa748..cf6568b871b5787ad0f4240d959a0866b86daba7 100644 (file)
@@ -6,25 +6,32 @@ use warnings;
 use Cwd        (); # cwd
 use File::Spec (); # catdir
 
-use Test::More tests => 43;
+use Test::More tests => 44;
 
 use App::Rgit;
 
 local $SIG{__WARN__} = sub { die @_ };
 
 my $res = eval {
- App::Rgit->new()
+ local $ENV{GIT_DIR};
+ App::Rgit->new();
 };
-is $@,   '',    "App::Rgit->new(): no root: doesn't croak";
-is $res, undef, 'App::Rgit->new(): no root: returns undef';
+is     $@,  '',         "App::Rgit->new(): no root, no GIT_DIR: doesn't croak";
+isa_ok $res,'App::Rgit','App::Rgit->new(): no root, no GIT_DIR: returns object';
+
+$res = eval {
+ local $ENV{GIT_DIR} = Cwd::cwd;
+ App::Rgit->new();
+};
+is     $@,   '',          "App::Rgit->new(): no root: doesn't croak";
+isa_ok $res, 'App::Rgit', 'App::Rgit->new(): no root: returns object';
 
 $res = eval {
  App::Rgit->new(
   root => $0,
  );
 };
-is $@,   '',    "App::Rgit->new(): wrong root: doesn't croak";
-is $res, undef, 'App::Rgit->new(): wrong root: returns undef';
+like $@, qr/Invalid root directory/, 'App::Rgit->new(): wrong root: croaks';
 
 $res = eval {
  local $ENV{GIT_EXEC_PATH};