]> git.vpit.fr Git - perl/modules/rgit.git/commitdiff
Sort the list of repositories by repository path. Test for git returning non-zero
authorVincent Pit <vince@profvince.com>
Mon, 6 Oct 2008 16:30:32 +0000 (18:30 +0200)
committerVincent Pit <vince@profvince.com>
Mon, 6 Oct 2008 16:30:32 +0000 (18:30 +0200)
bin/rgit
lib/App/Rgit/Config/Default.pm
t/20-each.t
t/bin/git

index 559fd9fbc39e0a32ba1c3a246903dec670ae8992..101d63470156611295b448ee7562e4272b966304 100755 (executable)
--- a/bin/rgit
+++ b/bin/rgit
@@ -53,7 +53,7 @@ Version 0.02
 
 =head1 DESCRIPTION
 
-This utility recursively searches in the current directory (or in the directory given by the C<GIT_DIR> environment variable if it's set) for all git repositories, C<chdir> into each of them, and executes the specified git command.
+This utility recursively searches in the current directory (or in the directory given by the C<GIT_DIR> environment variable if it's set) for all git repositories, sort this list by the repository path, C<chdir> into each of them, and executes the specified git command.
 Moreover, those formats are substuted in the arguments before running the command :
 
 =over 4
index 98b085f741e462e029b46dcead7b0eb1e9399082..9203d81bbfdd806885be2e88dd3fb1c4eaf95b6d 100644 (file)
@@ -51,7 +51,7 @@ sub repos {
   },
   follow => 1
  }, $self->root;
- $self->{repos} = [ values %repos ];
+ $self->{repos} = [ sort { $a->repo cmp $b->repo } values %repos ];
 }
 
 =head1 SEE ALSO
index 1e14faca1acb12b3c9027ecd8ea2380f320ae88f..4180a933335cbc58702aa957440ea7cd4b656a32 100644 (file)
@@ -7,7 +7,7 @@ use Cwd qw/cwd abs_path/;
 use File::Spec::Functions qw/catdir catfile/;
 use File::Temp qw/tempfile tempdir/;
 
-use Test::More tests => 2 + 3 * 1;
+use Test::More tests => 2 + 3 * 2;
 
 use App::Rgit;
 
@@ -50,7 +50,7 @@ sub repo {
 my $tmpdir = tempdir(CLEANUP => 1);
 my $cwd = cwd;
 chdir $tmpdir or die "chdir($tmpdir): $!";
-my @expected = sort { $a->[0] cmp $b->[0] } build({
+my @expected = sort { $a->[1] cmp $b->[1] } build({
  x => {
   a => {
    _ => repo('a', 0),
@@ -91,7 +91,7 @@ is(grep({ ref eq 'ARRAY' } @expected), 3, 'all of them are array references');
              '^n'
             ], @expected;
 
-for my $cmd (qw/commit/) {
+for my $cmd (qw/commit FAIL/) {
  my ($fh, $filename) = tempfile(UNLINK => 1);
  my $ar = App::Rgit->new(
   git  => abs_path('t/bin/git'),
@@ -101,9 +101,10 @@ for my $cmd (qw/commit/) {
  );
  isnt($ar, undef, "each $cmd has a defined object");
  my $exit = $ar->run;
- is($exit, 0, "each $cmd returned 0");
- my @lines = sort split /\n/, do { local $/; <$fh> };
+ my $fail = $cmd eq 'FAIL' ? 1 : 0;
+ is($exit, $fail << 8, "each $cmd returned $fail");
+ my @lines = split /\n/, do { local $/; <$fh> };
  my $res = [ map [ split /\|/, $_ ], @lines ];
- my $exp = [ map [ $cmd, @$_ ], @expected ];
+ my $exp = [ map [ $cmd, @$_ ], $fail ? $expected[0] : @expected ];
  is_deeply($res, $exp, "each $cmd did the right thing");
 }
index 6d769f6906c0be54033ce2e47ef8cb8dab2fdf03..d93614d1c6cea3e3e0891d624c4b5591b51d3838 100755 (executable)
--- a/t/bin/git
+++ b/t/bin/git
@@ -3,7 +3,10 @@
 # This has to work with olde perls
 
 my $filename = shift @ARGV;
+my $cmd = shift @ARGV;
 open FH, ">>$filename" or die "open($filename): $!";
-print FH join '|', @ARGV;
+print FH join '|', $cmd, @ARGV;
 print FH "\n";
 close FH;
+
+exit(($cmd && $cmd eq 'FAIL') ? 1 : 0);