[Bps-public-commit] Test-Chimps-Client branch, master, updated. 3a2ea9e44a73a11896b144f2d1ff62eaa5e7329b

Ruslan Zakirov ruz at bestpractical.com
Sat May 23 05:34:21 EDT 2009


The branch, master has been updated
       via  3a2ea9e44a73a11896b144f2d1ff62eaa5e7329b (commit)
       via  f53b2cef9ae12ed38d78f9e92bed2b7ba206daaf (commit)
       via  b885a43c4615c0097cac91a1ce2c10064cff7978 (commit)
       via  6fa766b4c4b19bb50abb4ee9cc8bb3c3982ec113 (commit)
       via  e3dbb01424819d346b2955aabbe0dba2a73c72d3 (commit)
      from  46dde7bdc08c1264b5e6ecad878c7bc8f509a16d (commit)

Summary of changes:
 Makefile.PL                   |    6 +-
 README                        |  127 ++++++++++++----
 lib/Test/Chimps/Client.pm     |   35 +++--
 lib/Test/Chimps/Smoker.pm     |  336 ++++++++++++++++++++++-------------------
 lib/Test/Chimps/Smoker/SVN.pm |    2 +-
 t/05-client-basic.t           |   16 +-
 6 files changed, 316 insertions(+), 206 deletions(-)

- Log -----------------------------------------------------------------
commit e3dbb01424819d346b2955aabbe0dba2a73c72d3
Author: Ruslan Zakirov <Ruslan.Zakirov at gmail.com>
Date:   Fri May 22 05:42:33 2009 +0400

    * bump version
    * use M::I::ReadmeFrom, define perl version, pod updates

diff --git a/Makefile.PL b/Makefile.PL
index 46a5689..54dcc4b 100644
--- a/Makefile.PL
+++ b/Makefile.PL
@@ -1,12 +1,12 @@
 use inc::Module::Install;
-
-# Define metadata
-name            'Test-Chimps-Client';
 all_from        'lib/Test/Chimps/Client.pm';
+readme_from     'lib/Test/Chimps/Client.pm';
 
 # Specific dependencies
 requires('Class::Accessor');
 requires('DBI');
+requires('Cwd');
+requires('Scalar::Util');
 requires('LWP::UserAgent');
 requires('HTTP::Request::Common');
 requires('Params::Validate');
diff --git a/README b/README
index 7bcc3b7..a618d4b 100644
--- a/README
+++ b/README
@@ -1,44 +1,116 @@
-Test-Chimps-Client
+NAME
+    Test::Chimps::Client - Send smoke test results to a server
 
-Chimps is the Collaborative Heterogeneous Infinite Monkey
-Perfectionification Service.  It is a framework for storing,
-viewing, generating, and uploading smoke reports.  This
-distribution provides client-side modules and binaries for Chimps.
+SYNOPSIS
+    This module simplifies the process of sending smoke test results (in the
+    form of "Test::TAP::Model"s) to a smoke server.
+
+        use Test::Chimps::Client;
+        use Test::TAP::Model::Visual;
+
+        chdir "some/module/directory";
+
+        my $model = Test::TAP::Model::Visual->new_with_tests(glob("t/*.t"));
+
+        my $client = Test::Chimps::Client->new(
+          server => 'http://www.example.com/cgi-bin/smoke-server.pl',
+          model  => $model
+        );
+
+        my ($status, $msg) = $client->send;
+
+        if (! $status) {
+          print "Error: $msg\n";
+          exit(1);
+        }
 
 INSTALLATION
+    To install this module, run the following commands:
+
+        perl Makefile.PL
+        make
+        make test
+        make install
+
+DESCRIPTION
+    Chimps is the Collaborative Heterogeneous Infinite Monkey
+    Perfectionification Service. It is a framework for storing, viewing,
+    generating, and uploading smoke reports. This distribution provides
+    client-side modules and binaries for Chimps.
+
+METHODS
+  new ARGS
+    Creates a new Client object. ARGS is a hash whose valid keys are:
+
+    *   file
+
+        Mandatory. The value must be a "Test::TAP::Model". These are the
+        test results that will be submitted to the server.
+
+    *   report_variables
+
+        Optional. A hashref of report variables and values to send to the
+        server.
+
+    *   server
+
+        Mandatory. The URI of the server script to upload the model to.
+
+  send
+    Submit the specified model to the server. This function's return value
+    is a list, the first of which indicates success or failure, and the
+    second of which is an error string.
+
+ACCESSORS
+    There are read-only accessors for model, report_variables, and server.
+
+AUTHOR
+    Zev Benjamin, "<zev at cpan.org>"
+
+BUGS
+    Please report any bugs or feature requests to "bug-test-chimps at
+    rt.cpan.org", or through the web interface at
+    <http://rt.cpan.org/NoAuth/ReportBug.html?Queue=Test-Chimps-Client>. I
+    will be notified, and then you'll automatically be notified of progress
+    on your bug as I make changes.
+
+SUPPORT
+    You can find documentation for this module with the perldoc command.
+
+        perldoc Test::Chimps::Client
+
+    You can also look for information at:
 
-To install this module, run the following commands:
+    *   Mailing list
 
-    perl Makefile.PL
-    make
-    make test
-    make install
+        Chimps has a mailman mailing list at chimps at bestpractical.com. You
+        can subscribe via the web interface at
+        <http://lists.bestpractical.com/cgi-bin/mailman/listinfo/chimps>.
 
+    *   AnnoCPAN: Annotated CPAN documentation
 
-SUPPORT AND DOCUMENTATION
+        <http://annocpan.org/dist/Test-Chimps-Client>
 
-After installing, you can find documentation for this module with the perldoc command.
+    *   CPAN Ratings
 
-    perldoc Test::Chimps::Client
+        <http://cpanratings.perl.org/d/Test-Chimps-Client>
 
-You can also look for information at:
+    *   RT: CPAN's request tracker
 
-    Search CPAN
-        http://search.cpan.org/dist/Test-Chimps-Client
+        <http://rt.cpan.org/NoAuth/Bugs.html?Dist=Test-Chimps-Client>
 
-    CPAN Request Tracker:
-        http://rt.cpan.org/NoAuth/Bugs.html?Dist=Test-Chimps-Client
+    *   Search CPAN
 
-    AnnoCPAN, annotated CPAN documentation:
-        http://annocpan.org/dist/Test-Chimps-Client
+        <http://search.cpan.org/dist/Test-Chimps-Client>
 
-    CPAN Ratings:
-        http://cpanratings.perl.org/d/Test-Chimps-Client
+ACKNOWLEDGEMENTS
+    Some code in this module is based on smokeserv-client.pl from the Pugs
+    distribution.
 
-COPYRIGHT AND LICENCE
+COPYRIGHT & LICENSE
+    Copyright 2006 Best Practical Solutions. Portions copyright 2005-2006
+    the Pugs project.
 
-Copyright 2006 Best Practical Solutions.
-Portions copyright 2005-2006 the Pugs project.
+    This program is free software; you can redistribute it and/or modify it
+    under the same terms as Perl itself.
 
-This program is free software; you can redistribute it and/or modify it
-under the same terms as Perl itself.
diff --git a/lib/Test/Chimps/Client.pm b/lib/Test/Chimps/Client.pm
index 89e8178..ecab014 100644
--- a/lib/Test/Chimps/Client.pm
+++ b/lib/Test/Chimps/Client.pm
@@ -1,13 +1,15 @@
 package Test::Chimps::Client;
 
+use 5.008;
 use warnings;
 use strict;
 
+our $VERSION = '0.11';
+
 use Carp;
 use Params::Validate qw/:all/;
 use HTTP::Request::Common;
 use LWP::UserAgent;
-use Storable qw/nfreeze/;
 
 use constant PROTO_VERSION => 1.0;
 
@@ -15,14 +17,6 @@ use constant PROTO_VERSION => 1.0;
 
 Test::Chimps::Client - Send smoke test results to a server
 
-=head1 VERSION
-
-Version 0.05
-
-=cut
-
-our $VERSION = '0.10';
-
 =head1 SYNOPSIS
 
 This module simplifies the process of sending smoke test results
@@ -39,14 +33,29 @@ This module simplifies the process of sending smoke test results
       server => 'http://www.example.com/cgi-bin/smoke-server.pl',
       model  => $model
     );
-    
+
     my ($status, $msg) = $client->send;
-    
+
     if (! $status) {
       print "Error: $msg\n";
       exit(1);
     }
 
+=head1 INSTALLATION
+
+To install this module, run the following commands:
+
+    perl Makefile.PL
+    make
+    make test
+    make install
+
+=head1 DESCRIPTION
+
+Chimps is the Collaborative Heterogeneous Infinite Monkey
+Perfectionification Service.  It is a framework for storing,
+viewing, generating, and uploading smoke reports.  This
+distribution provides client-side modules and binaries for Chimps.
 
 =head1 METHODS
 

commit 6fa766b4c4b19bb50abb4ee9cc8bb3c3982ec113
Author: Ruslan Zakirov <Ruslan.Zakirov at gmail.com>
Date:   Fri May 22 06:27:13 2009 +0400

    * update tests according to the latest API

diff --git a/t/05-client-basic.t b/t/05-client-basic.t
index b164e4c..9a4ca48 100644
--- a/t/05-client-basic.t
+++ b/t/05-client-basic.t
@@ -1,21 +1,21 @@
 #!perl
 
-use Test::More tests => 6;
+use Test::More tests => 5;
 
 BEGIN {
   use_ok( 'Test::Chimps::Client' );
   use_ok( 'Test::TAP::Model::Visual' );
 }
 
-my $m = Test::TAP::Model::Visual->new_with_tests('t-data/bogus-tests/00-basic.t');
+use File::Temp;
 
-my $c = Test::Chimps::Client->new(model => $m,
-                                  server => 'bogus',
-                                  compress => 1);
+my $tmp = File::Temp->new;
+
+my $c = Test::Chimps::Client->new(
+    archive => $tmp,
+    server => 'bogus',
+);
 
 ok($c, "the client object is defined");
 isa_ok($c, 'Test::Chimps::Client', "and it's of the correct type");
-
-is($c->model, $m, "the reports accessor works");
 is($c->server, "bogus", "the server accessor works");
-is($c->compress, 1, "the compress accessor works");

commit b885a43c4615c0097cac91a1ce2c10064cff7978
Author: Ruslan Zakirov <Ruslan.Zakirov at gmail.com>
Date:   Fri May 22 06:27:45 2009 +0400

    * shuffle methods around, update pod

diff --git a/lib/Test/Chimps/Smoker.pm b/lib/Test/Chimps/Smoker.pm
index cc265bb..2d45418 100644
--- a/lib/Test/Chimps/Smoker.pm
+++ b/lib/Test/Chimps/Smoker.pm
@@ -17,30 +17,43 @@ use DBI;
 
 =head1 NAME
 
-Test::Chimps::Smoker - Poll a set of SVN repositories and run tests when they change
+Test::Chimps::Smoker - Poll a set of repositories and run tests when they change
 
 =head1 SYNOPSIS
 
-This module gives you everything you need to make your own build
-slave.  You give it a configuration file describing all of your
-projects and how to test them, and it will monitor the SVN
-repositories, check the projects out (and their dependencies), test
-them, and submit the report to a server.
+    # command line tool
+    chimps-smoker.pl \
+        -c /path/to/configfile.yml \
+        -s http://www.example.com/cgi-bin/chimps-server.pl
 
+    # API
     use Test::Chimps::Smoker;
 
     my $poller = Test::Chimps::Smoker->new(
-      server      => 'http://www.example.com/cgi-bin/chimps-server.pl',
-      config_file => '/path/to/configfile.yml'
+        server      => 'http://www.example.com/cgi-bin/chimps-server.pl',
+        config_file => '/path/to/configfile.yml',
+    );
+
+    $poller->smoke;
 
+=head1 DESCRIPTION
 
-    $poller->poll();
+Chimps is the Collaborative Heterogeneous Infinite Monkey
+Perfectionification Service.  It is a framework for storing,
+viewing, generating, and uploading smoke reports.  This
+distribution provides client-side modules and binaries for Chimps.
+
+This module gives you everything you need to make your own build
+slave.  You give it a configuration file describing all of your
+projects and how to test them, and it will monitor the repositories,
+check the projects out (and their dependencies), test them, and submit
+the report to a server.
 
 =head1 METHODS
 
 =head2 new ARGS
 
-Creates a new Client object.  ARGS is a hash whose valid keys are:
+Creates a new smoker object.  ARGS is a hash whose valid keys are:
 
 =over 4
 
@@ -48,15 +61,21 @@ Creates a new Client object.  ARGS is a hash whose valid keys are:
 
 Mandatory.  The configuration file describing which repositories to
 monitor.  The format of the configuration is described in
-L</"CONFIGURATION FILE">.
+L</"CONFIGURATION FILE">. File is update after each run.
 
 =item * server
 
-Mandatory.  The URI of the server script to upload the reports to.
+Optional.  The URI of the server script to upload the reports to.
+Defaults to simulation mode when reports are sent.
+
+=item * sleep
+
+Optional.  Number of seconds to sleep between repository checks.
+Defaults to 60 seconds.
 
 =item * simulate [DEPRECATED]
 
-[DEPRECATED] Just don't provide server to send files to.
+[DEPRECATED] Just don't provide server option to enable simulation.
 
 Don't actually submit the smoke reports, just run the tests.  This
 I<does>, however, increment the revision numbers in the config
@@ -130,52 +149,103 @@ sub _init {
     $self->load_config;
 }
 
-sub load_config {
+=head2 smoke PARAMS
+
+Calling smoke will cause the C<Smoker> object to continually poll
+repositories for changes in revision numbers.  If an (actual)
+change is detected, the repository will be checked out (with
+dependencies), built, and tested, and the resulting report will be
+submitted to the server.  This method may not return.  Valid
+options to smoke are:
+
+=over 4
+
+=item * iterations
+
+Specifies the number of iterations to run.  This is the number of
+smoke reports to generate per project.  A value of 'inf' means to
+continue smoking forever.  Defaults to 'inf'.
+
+=item * projects
+
+An array reference specifying which projects to smoke.  If the
+string 'all' is provided instead of an array reference, all
+projects will be smoked.  Defaults to 'all'.
+
+=back
+
+=cut
+
+sub smoke {
     my $self = shift;
+    my $config = $self->config;
 
-    my $cfg = $self->config(LoadFile($self->config_file));
+    my %args = validate_with(
+        params => \@_,
+        spec   => {
+            iterations => {
+                optional => 1,
+                type     => SCALAR,
+                regex    => qr/^(inf|\d+)$/,
+                default  => 'inf'
+              },
+            projects => {
+                optional => 1,
+                type     => ARRAYREF | SCALAR,
+                default  => 'all'
+              }
+          },
+        called => 'Test::Chimps::Smoker->smoke'
+      );
 
-    # update old style config file
-    {
-        my $found_old_style = 0;
-        foreach ( grep $_->{svn_uri}, values %$cfg ) {
-            $found_old_style = 1;
+    my $projects = $args{projects};
+    my $iterations = $args{iterations};
+    $self->_validate_projects_opt($projects);
 
-            $_->{'repository'} = {
-                type => 'SVN',
-                uri  => delete $_->{svn_uri},
-            };
-        }
-        DumpFile($self->config_file, $cfg) if $found_old_style;
+    if ($projects eq 'all') {
+        $projects = [keys %$config];
     }
-    
-    # store project name in its hash
-    $cfg->{$_}->{'name'} = $_ foreach keys %$cfg;
+
+    $self->_smoke_n_times($iterations, $projects);
 }
 
-sub update_revision_in_config {
-    my $self = shift;
-    my ($project, $revision) = @_;
+sub _validate_projects_opt {
+    my ($self, $projects) = @_;
+    return if $projects eq 'all';
 
-    my $tmp = LoadFile($self->config_file);
-    $tmp->{$project}->{revision} = $self->config->{$project}->{revision} = $revision;
-    DumpFile($self->config_file, $tmp);
+    foreach my $project (@$projects) {
+        die "no such project: '$project'"
+          unless exists $self->config->{$project};
+    }
 }
 
-sub DESTROY {
+sub _smoke_n_times {
     my $self = shift;
-    $self->remove_checkouts;
+    my $n = shift;
+    my $projects = shift;
+
+    if ($n <= 0) {
+        die "Can not smoke projects a negative number of times";
+    } elsif ($n eq 'inf') {
+        while (1) {
+            $self->_smoke_projects($projects);
+            CORE::sleep $self->sleep if $self->sleep;
+        }
+    } else {
+        for (my $i = 0; $i < $n;) {
+            $i++ if $self->_smoke_projects($projects);
+            CORE::sleep $self->sleep if $self->sleep;
+        }
+    }
 }
 
-sub source {
+sub _smoke_projects {
     my $self = shift;
-    my $project = shift;
-    $self->meta->{$project}{'source'} ||= Test::Chimps::Smoker::Source->new(
-            %{ $self->config->{$project}{'repository'} },
-            config => $self->config->{$project},
-            smoker => $self,
-        );
-    return $self->meta->{$project}{'source'};
+    my $projects = shift;
+
+    foreach my $project (@$projects) {
+        $self->_smoke_once($project);
+    }
 }
 
 sub _smoke_once {
@@ -251,116 +321,47 @@ sub _smoke_once {
     return 1;
 }
 
-sub remove_checkouts {
+sub load_config {
     my $self = shift;
 
-    my $meta = $self->meta;
-    foreach my $source ( grep $_, map $_->{'source'}, values %$meta ) {
-        next unless my $dir = $source->directory;
-
-        _remove_tmpdir($dir);
-        $source->directory(undef);
-        $source->cloned(0);
-    }
-}
+    my $cfg = $self->config(LoadFile($self->config_file));
 
-sub _smoke_n_times {
-    my $self = shift;
-    my $n = shift;
-    my $projects = shift;
+    # update old style config file
+    {
+        my $found_old_style = 0;
+        foreach ( grep $_->{svn_uri}, values %$cfg ) {
+            $found_old_style = 1;
 
-    if ($n <= 0) {
-        die "Can not smoke projects a negative number of times";
-    } elsif ($n eq 'inf') {
-        while (1) {
-            $self->_smoke_projects($projects);
-            CORE::sleep $self->sleep if $self->sleep;
-        }
-    } else {
-        for (my $i = 0; $i < $n;) {
-            $i++ if $self->_smoke_projects($projects);
-            CORE::sleep $self->sleep if $self->sleep;
+            $_->{'repository'} = {
+                type => 'SVN',
+                uri  => delete $_->{svn_uri},
+            };
         }
+        DumpFile($self->config_file, $cfg) if $found_old_style;
     }
+    
+    # store project name in its hash
+    $cfg->{$_}->{'name'} = $_ foreach keys %$cfg;
 }
 
-sub _smoke_projects {
+sub update_revision_in_config {
     my $self = shift;
-    my $projects = shift;
+    my ($project, $revision) = @_;
 
-    foreach my $project (@$projects) {
-        $self->_smoke_once($project);
-    }
+    my $tmp = LoadFile($self->config_file);
+    $tmp->{$project}->{revision} = $self->config->{$project}->{revision} = $revision;
+    DumpFile($self->config_file, $tmp);
 }
 
-=head2 smoke PARAMS
-
-Calling smoke will cause the C<Smoker> object to continually poll
-repositories for changes in revision numbers.  If an (actual)
-change is detected, the repository will be checked out (with
-dependencies), built, and tested, and the resulting report will be
-submitted to the server.  This method may not return.  Valid
-options to smoke are:
-
-=over 4
-
-=item * iterations
-
-Specifies the number of iterations to run.  This is the number of
-smoke reports to generate per project.  A value of 'inf' means to
-continue smoking forever.  Defaults to 'inf'.
-
-=item * projects
-
-An array reference specifying which projects to smoke.  If the
-string 'all' is provided instead of an array reference, all
-projects will be smoked.  Defaults to 'all'.
-
-=back
-
-=cut
-
-sub smoke {
+sub source {
     my $self = shift;
-    my $config = $self->config;
-
-    my %args = validate_with(
-        params => \@_,
-        spec   => {
-            iterations => {
-                optional => 1,
-                type     => SCALAR,
-                regex    => qr/^(inf|\d+)$/,
-                default  => 'inf'
-              },
-            projects => {
-                optional => 1,
-                type     => ARRAYREF | SCALAR,
-                default  => 'all'
-              }
-          },
-        called => 'Test::Chimps::Smoker->smoke'
-      );
-
-    my $projects = $args{projects};
-    my $iterations = $args{iterations};
-    $self->_validate_projects_opt($projects);
-
-    if ($projects eq 'all') {
-        $projects = [keys %$config];
-    }
-
-    $self->_smoke_n_times($iterations, $projects);
-}
-
-sub _validate_projects_opt {
-    my ($self, $projects) = @_;
-    return if $projects eq 'all';
-
-    foreach my $project (@$projects) {
-        die "no such project: '$project'"
-          unless exists $self->config->{$project};
-    }
+    my $project = shift;
+    $self->meta->{$project}{'source'} ||= Test::Chimps::Smoker::Source->new(
+            %{ $self->config->{$project}{'repository'} },
+            config => $self->config->{$project},
+            smoker => $self,
+        );
+    return $self->meta->{$project}{'source'};
 }
 
 sub _clone_project {
@@ -476,12 +477,6 @@ sub _clean_dbs {
     $dbh->do("DROP DATABASE $_") for @dbs;
 }
 
-sub _remove_tmpdir {
-    my $tmpdir = shift;
-    print "removing temporary directory $tmpdir\n";
-    rmtree($tmpdir, 0, 0);
-}
-
 sub _push_onto_env_stack {
     my $self = shift;
     my $vars = shift;
@@ -521,9 +516,33 @@ sub _unroll_env_stack {
     }
 }
 
+sub DESTROY {
+    my $self = shift;
+    $self->remove_checkouts;
+}
+
+sub remove_checkouts {
+    my $self = shift;
+
+    my $meta = $self->meta;
+    foreach my $source ( grep $_, map $_->{'source'}, values %$meta ) {
+        next unless my $dir = $source->directory;
+
+        _remove_tmpdir($dir);
+        $source->directory(undef);
+        $source->cloned(0);
+    }
+}
+
+sub _remove_tmpdir {
+    my $tmpdir = shift;
+    print "removing temporary directory $tmpdir\n";
+    rmtree($tmpdir, 0, 0);
+}
+
 =head1 ACCESSORS
 
-There are read-only accessors for server, config_file, and simulate.
+There are read-only accessors for server and config_file.
 
 =head1 CONFIGURATION FILE
 
@@ -542,7 +561,7 @@ look like this:
       revision: 555
       root_dir: trunk/foo
       repository:
-        type: svn
+        type: SVN
         uri: svn+ssh://svn.example.com/svn/foo
       test_glob: t/*.t t/*/*.t
     Jifty:
@@ -552,7 +571,7 @@ look like this:
       revision: 1332
       root_dir: trunk
       repository:
-        type: svn
+        type: SVN
         uri: svn+ssh://svn.jifty.org/svn/jifty.org/jifty
     Jifty-DBI:
       configure_cmd: perl Makefile.PL --skipdeps && make
@@ -565,7 +584,7 @@ look like this:
       revision: 1358
       root_dir: trunk
       repository:
-        type: svn
+        type: SVN
         uri: svn+ssh://svn.jifty.org/svn/jifty.org/Jifty-DBI
 
 The supported project options are as follows:
@@ -590,9 +609,12 @@ number is updated and the configuration file is re-written.
 The subdirectory inside the repository where configuration and
 testing commands should be run.
 
-=item * svn_uri
+=item * repository
 
-The subversion URI of the project.
+A hash describing repository of the project. Mandatory key is
+type which must match a source class name, for example SVN or
+Git. Another things is uri option, but a particular class
+may have more options.
 
 =item * env
 
@@ -602,6 +624,10 @@ tests have been run.  In addition, if environment variable FOO's
 new value contains the string "$FOO", then the old value of FOO
 will be substituted in when setting the environment variable.
 
+Special environment variables are set in addition to described
+above. For each project CHIMPS_<project name>_ROOT is set pointing
+to the current checkout of the project.
+
 =item * dependencies
 
 A list of project names that are dependencies for the given
@@ -689,7 +715,7 @@ L<http://search.cpan.org/dist/Test-Chimps-Client>
 
 =head1 COPYRIGHT & LICENSE
 
-Copyright 2006 Best Practical Solutions.
+Copyright 2006-2009 Best Practical Solutions.
 
 This program is free software; you can redistribute it and/or modify it
 under the same terms as Perl itself.

commit f53b2cef9ae12ed38d78f9e92bed2b7ba206daaf
Author: Ruslan Zakirov <Ruslan.Zakirov at gmail.com>
Date:   Fri May 22 06:28:25 2009 +0400

    * update docs

diff --git a/README b/README
index a618d4b..4c9fdf0 100644
--- a/README
+++ b/README
@@ -35,8 +35,9 @@ INSTALLATION
 DESCRIPTION
     Chimps is the Collaborative Heterogeneous Infinite Monkey
     Perfectionification Service. It is a framework for storing, viewing,
-    generating, and uploading smoke reports. This distribution provides
-    client-side modules and binaries for Chimps.
+    generating, and uploading smoke reports.
+
+    This distribution provides client-side modules and binaries for Chimps.
 
 METHODS
   new ARGS
@@ -108,8 +109,8 @@ ACKNOWLEDGEMENTS
     distribution.
 
 COPYRIGHT & LICENSE
-    Copyright 2006 Best Practical Solutions. Portions copyright 2005-2006
-    the Pugs project.
+    Copyright 2006-2009 Best Practical Solutions. Portions copyright
+    2005-2006 the Pugs project.
 
     This program is free software; you can redistribute it and/or modify it
     under the same terms as Perl itself.
diff --git a/lib/Test/Chimps/Client.pm b/lib/Test/Chimps/Client.pm
index ecab014..e38c394 100644
--- a/lib/Test/Chimps/Client.pm
+++ b/lib/Test/Chimps/Client.pm
@@ -54,8 +54,10 @@ To install this module, run the following commands:
 
 Chimps is the Collaborative Heterogeneous Infinite Monkey
 Perfectionification Service.  It is a framework for storing,
-viewing, generating, and uploading smoke reports.  This
-distribution provides client-side modules and binaries for Chimps.
+viewing, generating, and uploading smoke reports.
+
+This distribution provides client-side modules and binaries
+for Chimps.
 
 =head1 METHODS
 
@@ -210,7 +212,7 @@ Pugs distribution.
 
 =head1 COPYRIGHT & LICENSE
 
-Copyright 2006 Best Practical Solutions.
+Copyright 2006-2009 Best Practical Solutions.
 Portions copyright 2005-2006 the Pugs project.
 
 This program is free software; you can redistribute it and/or modify it

commit 3a2ea9e44a73a11896b144f2d1ff62eaa5e7329b
Author: Ruslan Zakirov <Ruslan.Zakirov at gmail.com>
Date:   Sat May 23 13:33:51 2009 +0400

    * -l is new enough, use --limit

diff --git a/lib/Test/Chimps/Smoker/SVN.pm b/lib/Test/Chimps/Smoker/SVN.pm
index 8e0f963..f118831 100644
--- a/lib/Test/Chimps/Smoker/SVN.pm
+++ b/lib/Test/Chimps/Smoker/SVN.pm
@@ -40,7 +40,7 @@ sub next {
     my $self = shift;
 
     my $revision = $self->config->{revision};
-    my $cmd = "svn log -l1 -q -r $revision:HEAD ". $self->uri;
+    my $cmd = "svn log --limit 1 -q -r $revision:HEAD ". $self->uri;
     my ($next, $committer) = (`$cmd` =~ m/^r([0-9]+)\s+\|\s*.*?\s*\|/m);
     return () unless $next;
 

-----------------------------------------------------------------------



More information about the Bps-public-commit mailing list