[Rt-commit] r5560 - in Test-Chimps-Client/trunk: . bin examples lib/Test lib/Test/Chimps lib/Test/Chimps/Client lib/Test/Chimps/Server t t-data t/bogus-tests t/chimps-home

zev at bestpractical.com zev at bestpractical.com
Wed Jul 12 15:53:44 EDT 2006


Author: zev
Date: Wed Jul 12 15:53:39 2006
New Revision: 5560

Added:
   Test-Chimps-Client/trunk/bin/chimps-client.pl   (contents, props changed)
   Test-Chimps-Client/trunk/bin/chimps-smoker.pl   (contents, props changed)
   Test-Chimps-Client/trunk/lib/Test/Chimps/Smoker.pm
   Test-Chimps-Client/trunk/t-data/
   Test-Chimps-Client/trunk/t-data/bogus-tests/
   Test-Chimps-Client/trunk/t-data/bogus-tests/00-basic.t
   Test-Chimps-Client/trunk/t-data/smoker-config.yml
   Test-Chimps-Client/trunk/t/10-smoker-basic.t
Removed:
   Test-Chimps-Client/trunk/bin/poll_and_submit.pl
   Test-Chimps-Client/trunk/bin/report_server.pl
   Test-Chimps-Client/trunk/bin/submit_report.pl
   Test-Chimps-Client/trunk/bin/yaml2dbi.pl
   Test-Chimps-Client/trunk/examples/
   Test-Chimps-Client/trunk/lib/Test/Chimps.pm
   Test-Chimps-Client/trunk/lib/Test/Chimps/Client/
   Test-Chimps-Client/trunk/lib/Test/Chimps/Report.pm
   Test-Chimps-Client/trunk/lib/Test/Chimps/ReportCollection.pm
   Test-Chimps-Client/trunk/lib/Test/Chimps/Server/
   Test-Chimps-Client/trunk/lib/Test/Chimps/Server.pm
   Test-Chimps-Client/trunk/t/01-report-basic.t
   Test-Chimps-Client/trunk/t/10-server-basic.t
   Test-Chimps-Client/trunk/t/15-poller-basic.t
   Test-Chimps-Client/trunk/t/20-lister-basic.t
   Test-Chimps-Client/trunk/t/bogus-tests/
   Test-Chimps-Client/trunk/t/chimps-home/
Modified:
   Test-Chimps-Client/trunk/   (props changed)
   Test-Chimps-Client/trunk/Changes
   Test-Chimps-Client/trunk/MANIFEST
   Test-Chimps-Client/trunk/Makefile.PL
   Test-Chimps-Client/trunk/README
   Test-Chimps-Client/trunk/lib/Test/Chimps/Client.pm
   Test-Chimps-Client/trunk/t/05-client-basic.t
   Test-Chimps-Client/trunk/t/boilerplate.t

Log:
 r11442 at galvatron:  zev | 2006-07-12 15:53:12 -0400
 modified files to reflect split and renaming


Modified: Test-Chimps-Client/trunk/Changes
==============================================================================
--- Test-Chimps-Client/trunk/Changes	(original)
+++ Test-Chimps-Client/trunk/Changes	Wed Jul 12 15:53:39 2006
@@ -1,5 +1,8 @@
-Revision history for Test-Chimps
+Revision history for Test-Chimps-Client
 
 0.01    Fri Jun 16 13:21:11 EDT 2006
         First revision.  
 
+0.02    Wed Jul 12 15:49:42 EDT 2006
+        Split off from main Chimps distribution and first CPAN
+        release.

Modified: Test-Chimps-Client/trunk/MANIFEST
==============================================================================
--- Test-Chimps-Client/trunk/MANIFEST	(original)
+++ Test-Chimps-Client/trunk/MANIFEST	Wed Jul 12 15:53:39 2006
@@ -1,9 +1,6 @@
-bin/poll_and_submit.pl
-bin/report_server.pl
-bin/submit_report.pl
-bin/yaml2dbi.pl
+bin/chimps-client.pl
+bin/chimps-smoker.pl
 Changes
-examples/list.tmpl
 inc/Module/AutoInstall.pm
 inc/Module/Install.pm
 inc/Module/Install/AutoInstall.pm
@@ -15,24 +12,17 @@
 inc/Module/Install/Metadata.pm
 inc/Module/Install/Win32.pm
 inc/Module/Install/WriteAll.pm
-lib/Test/Chimps.pm
 lib/Test/Chimps/Client.pm
-lib/Test/Chimps/Client/Poller.pm
-lib/Test/Chimps/Report.pm
-lib/Test/Chimps/ReportCollection.pm
-lib/Test/Chimps/Server.pm
-lib/Test/Chimps/Server/Lister.pm
+lib/Test/Chimps/Smoker.pm
 Makefile.PL
 MANIFEST			This list of files
 META.yml
 README
+t-data/bogus-tests/00-basic.t
+t-data/smoker-config.yml
 t/00-dependencies.t
-t/01-report-basic.t
 t/05-client-basic.t
-t/10-server-basic.t
-t/15-poller-basic.t
-t/20-lister-basic.t
-t/bogus-tests/00-basic.t
+t/10-smoker-basic.t
 t/boilerplate.t
 t/pod-coverage.t
 t/pod.t

Modified: Test-Chimps-Client/trunk/Makefile.PL
==============================================================================
--- Test-Chimps-Client/trunk/Makefile.PL	(original)
+++ Test-Chimps-Client/trunk/Makefile.PL	Wed Jul 12 15:53:39 2006
@@ -2,22 +2,12 @@
 
 # Define metadata
 name            'Test-Chimps';
-all_from        'lib/Test/Chimps.pm';
+all_from        'lib/Test/Chimps/Client.pm';
 
 # Specific dependencies
-requires('Algorithm::TokenBucket');
 requires('Class::Accessor');
-requires('Date::Parse');
-requires('DateTime');
-requires('HTML::Mason');
-requires('Jifty::DBI::Collection');
-requires('Jifty::DBI::Handle');
-requires('Jifty::DBI::Record');
-requires('Jifty::DBI::Schema');
-requires('Jifty::DBI::SchemaGenerator');
 requires('LWP::UserAgent');
 requires('Params::Validate');
-requires('Test::TAP::HTMLMatrix');
 requires('Test::TAP::Model::Visual');
 requires('YAML::Syck');
 

Modified: Test-Chimps-Client/trunk/README
==============================================================================
--- Test-Chimps-Client/trunk/README	(original)
+++ Test-Chimps-Client/trunk/README	Wed Jul 12 15:53:39 2006
@@ -1,10 +1,9 @@
-Test-Chimps
+Test-Chimps-Client
 
-This module modularizes the pugs smoke server/client
-(smokeserv-client.pl and smokeserv-server.pl).  It also makes the
-code more generic so that other groups can take advantage of the
-simple but powerful smoke server. It will provide scripts to
-replicate pugs' scripts behavior in a more generic fashion.
+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.
 
 INSTALLATION
 
@@ -20,25 +19,26 @@
 
 After installing, you can find documentation for this module with the perldoc command.
 
-    perldoc Test::Chimps
+    perldoc Test::Chimps::Client
 
 You can also look for information at:
 
     Search CPAN
-        http://search.cpan.org/dist/Test-Chimps
+        http://search.cpan.org/dist/Test-Chimps-Client
 
     CPAN Request Tracker:
-        http://rt.cpan.org/NoAuth/Bugs.html?Dist=Test-Chimps
+        http://rt.cpan.org/NoAuth/Bugs.html?Dist=Test-Chimps-Client
 
     AnnoCPAN, annotated CPAN documentation:
-        http://annocpan.org/dist/Test-Chimps
+        http://annocpan.org/dist/Test-Chimps-Client
 
     CPAN Ratings:
-        http://cpanratings.perl.org/d/Test-Chimps
+        http://cpanratings.perl.org/d/Test-Chimps-Client
 
 COPYRIGHT AND LICENCE
 
-Copyright (C) 2006 Zev Benjamin
+Copyright 2006 Best Practical Solutions, all rights reserved.
+Portions copyright 2005-2006 the Pugs project, all rights reserved.
 
 This program is free software; you can redistribute it and/or modify it
 under the same terms as Perl itself.

Added: Test-Chimps-Client/trunk/bin/chimps-client.pl
==============================================================================
--- (empty file)
+++ Test-Chimps-Client/trunk/bin/chimps-client.pl	Wed Jul 12 15:53:39 2006
@@ -0,0 +1,45 @@
+#!/usr/bin/env perl
+
+use warnings;
+use strict;
+
+use Test::Chimps::Client;
+use Test::TAP::Model::Visual;
+
+my $model;
+{
+  local $SIG{ALRM} = sub { die "10 minute timeout exceeded" };
+  alarm 600;
+  print "running tests for $project\n";
+  eval {
+    $model = Test::TAP::Model::Visual->new_with_tests(glob("t/*.t t/*/t/*.t"));
+  };
+  alarm 0;                      # cancel alarm
+}
+        
+if ($@) {
+  print "Tests aborted: $@\n";
+}
+
+my $duration = $model->structure->{end_time} - $model->structure->{start_time};
+
+my $client = Test::Chimps::Client->new(
+  model  => $model,
+  server => 'http://galvatron.mit.edu/cgi-bin/report_server.pl',
+  {
+    project   => $project,
+    revision  => $revision,
+    committer => $committer,
+    duration  => $duration,
+    osname    => $Config{osname},
+    osvers    => $Config{osvers},
+    archname  => $Config{archname}
+  }
+);
+
+my ($status, $msg) = $client->send;
+
+if (! $status) {
+  print "Error: $msg\n";
+  exit(1);
+}

Added: Test-Chimps-Client/trunk/bin/chimps-smoker.pl
==============================================================================
--- (empty file)
+++ Test-Chimps-Client/trunk/bin/chimps-smoker.pl	Wed Jul 12 15:53:39 2006
@@ -0,0 +1,13 @@
+#!/usr/bin/env perl
+
+use warnings;
+use strict;
+
+use Test::Chimps::Smoker;
+  
+my $poller = Test::Chimps::Smoker->new(
+  server      => 'http://galvatron.mit.edu/cgi-bin/report_server.pl',
+  config_file => "$ENV{HOME}/poll-config.yml",
+);
+
+$poller->smoke;

Modified: Test-Chimps-Client/trunk/lib/Test/Chimps/Client.pm
==============================================================================
--- Test-Chimps-Client/trunk/lib/Test/Chimps/Client.pm	(original)
+++ Test-Chimps-Client/trunk/lib/Test/Chimps/Client.pm	Wed Jul 12 15:53:39 2006
@@ -15,6 +15,14 @@
 
 Test::Chimps::Client - Send smoke test results to a server
 
+=head1 VERSION
+
+Version 0.02
+
+=cut
+
+our $VERSION = '0.02';
+
 =head1 SYNOPSIS
 
 This module simplifies the process of sending smoke test results
@@ -143,7 +151,7 @@
 
 Please report any bugs or feature requests to
 C<bug-test-chimps at rt.cpan.org>, or through the web interface at
-L<http://rt.cpan.org/NoAuth/ReportBug.html?Queue=Test-Chimps>.
+L<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.
 
@@ -151,7 +159,7 @@
 
 You can find documentation for this module with the perldoc command.
 
-    perldoc Test::Chimps
+    perldoc Test::Chimps::Client
 
 You can also look for information at:
 
@@ -159,30 +167,31 @@
 
 =item * AnnoCPAN: Annotated CPAN documentation
 
-L<http://annocpan.org/dist/Test-Chimps>
+L<http://annocpan.org/dist/Test-Chimps-Client>
 
 =item * CPAN Ratings
 
-L<http://cpanratings.perl.org/d/Test-Chimps>
+L<http://cpanratings.perl.org/d/Test-Chimps-Client>
 
 =item * RT: CPAN's request tracker
 
-L<http://rt.cpan.org/NoAuth/Bugs.html?Dist=Test-Chimps>
+L<http://rt.cpan.org/NoAuth/Bugs.html?Dist=Test-Chimps-Client>
 
 =item * Search CPAN
 
-L<http://search.cpan.org/dist/Test-Chimps>
+L<http://search.cpan.org/dist/Test-Chimps-Client>
 
 =back
 
 =head1 ACKNOWLEDGEMENTS
 
-The code in this distribution is based on smokeserv-client.pl and
-smokeserv-server.pl from the PUGS distribution.
+The code in this distribution is based on smokeserv-client.pl from
+the PUGS distribution.
 
 =head1 COPYRIGHT & LICENSE
 
-Copyright 2006 Zev Benjamin, all rights reserved.
+Copyright 2006 Best Practical Solutions, all rights reserved.
+Portions copyright 2005-2006 the Pugs project, all rights reserved.
 
 This program is free software; you can redistribute it and/or modify it
 under the same terms as Perl itself.

Added: Test-Chimps-Client/trunk/lib/Test/Chimps/Smoker.pm
==============================================================================
--- (empty file)
+++ Test-Chimps-Client/trunk/lib/Test/Chimps/Smoker.pm	Wed Jul 12 15:53:39 2006
@@ -0,0 +1,447 @@
+package Test::Chimps::Smoker;
+
+use warnings;
+use strict;
+
+use Config;
+use File::Basename;
+use File::Path;
+use File::Temp qw/tempdir/;
+use Params::Validate qw/:all/;
+use Test::Chimps::Client;
+use Test::TAP::Model::Visual;
+use YAML::Syck;
+
+=head1 NAME
+
+Test::Chimps::Smoker - Poll a set of SVN 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.
+
+    use Test::Chimps::Smoker;
+
+    my $poller = Test::Chimps::Smoker->new(
+      server      => 'http://www.example.com/cgi-bin/smoke-server.pl',
+      config_file => '/path/to/configfile.yml'
+
+
+    $poller->poll();
+
+=head1 METHODS
+
+=head2 new ARGS
+
+Creates a new Client object.  ARGS is a hash whose valid keys are:
+
+=over 4
+
+=item * config_file
+
+Mandatory.  The configuration file describing which repositories to
+monitor.  The format of the configuration is described in
+L</"CONFIGURATION FILE">.
+
+=item * server
+
+Mandatory.  The URI of the server script to upload the reports to.
+
+=item * simulate
+
+Don't actually submit the smoke reports, just run the tests.  This
+I<does>, however, increment the revision numbers in the config
+file.
+
+=back
+
+=cut
+
+use base qw/Class::Accessor/;
+__PACKAGE__->mk_ro_accessors(qw/server config_file simulate/);
+__PACKAGE__->mk_accessors(
+  qw/_added_to_inc _env_stack _checkout_paths _config/);
+
+# add a signal handler so destructor gets run
+$SIG{INT} = sub {print "caught sigint.  cleaning up...\n"; exit(1)};
+
+sub new {
+  my $class = shift;
+  my $obj = bless {}, $class;
+  $obj->_init(@_);
+  return $obj;
+}
+
+sub _init {
+  my $self = shift;
+  my %args = validate_with(params => \@_,
+                           spec => 
+                           { server => 1,
+                             config_file => 1,
+                             simulate => 0},
+                           called => 'The Test::Chimps::Smoker constructor');
+  
+  foreach my $key (keys %args) {
+    $self->{$key} = $args{$key};
+  }
+  $self->_added_to_inc([]);
+  $self->_env_stack([]);
+  $self->_checkout_paths([]);
+  
+  $self->_config(LoadFile($self->config_file));
+}
+
+sub DESTROY {
+  my $self = shift;
+  foreach my $tmpdir (@{$self->_checkout_paths}) {
+    _remove_tmpdir($tmpdir);
+  }
+}
+
+=head2 smoke
+
+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 does not return.
+
+=cut
+
+sub smoke {
+  my $self = shift;
+  my $config = $self->_config;
+  while (1) {
+    foreach my $project (keys %{$config}) {
+      next if $config->{$project}->{dependency_only};
+    
+      my $info_out = `svn info $config->{$project}->{svn_uri}`;
+      $info_out =~ m/^Revision: (\d+)/m;
+      my $latest_revision = $1;
+      $info_out =~ m/^Last Changed Rev: (\d+)/m;
+      my $last_changed_revision = $1;
+
+      my $old_revision = $config->{$project}->{revision};
+
+      next unless $last_changed_revision > $old_revision;
+
+      foreach my $revision (($old_revision + 1) .. $latest_revision) {
+        # only actually do the check out if the revision and last changed revision match for
+        # a particular revision
+        next unless _change_on_revision($config->{$project}->{svn_uri}, $revision);
+
+        $info_out = `svn info -r $revision $config->{$project}->{svn_uri}`;
+        $info_out =~ m/^Last Changed Author: (\w+)/m;
+        my $committer = $1;
+        
+        $config->{$project}->{revision} = $revision;
+
+        $self->_checkout_project($config->{$project}, $revision);
+
+        my $model;
+        {
+          local $SIG{ALRM} = sub { die "10 minute timeout exceeded" };
+          alarm 600;
+          print "running tests for $project\n";
+          eval {
+            $model = Test::TAP::Model::Visual->new_with_tests(glob("t/*.t t/*/t/*.t"));
+          };
+          alarm 0; # cancel alarm
+        }
+        
+        if ($@) {
+          print "Tests aborted: $@\n";
+        }
+        
+        my $duration = $model->structure->{end_time} - $model->structure->{start_time};
+
+        $self->_unroll_env_stack;
+        
+        foreach my $libdir (@{$self->_added_to_inc}) {
+          print "removing $libdir from \@INC\n";
+          shift @INC;
+        }
+        $self->_added_to_inc([]);
+
+        chdir(File::Spec->rootdir);
+
+        foreach my $tmpdir (@{$self->_checkout_paths}) {
+          _remove_tmpdir($tmpdir);
+        }
+        $self->_checkout_paths([]);
+
+        my $client = Test::Chimps::Client->new(model => $model,
+                                               report_variables =>
+                                               { project => $project,
+                                                 revision => $revision,
+                                                 committer => $committer,
+                                                 duration => $duration,
+                                                 osname => $Config{osname},
+                                                 osvers => $Config{osvers},
+                                                 archname => $Config{archname}
+                                               },
+                                               server => $self->server);
+
+        my ($status, $msg);
+        if ($self->simulate) {
+          $status = 1;
+        } else {
+          ($status, $msg) = $client->send;
+        }
+        
+        if ($status) {
+          print "Sumbitted smoke report for $project revision $revision\n";
+          DumpFile($self->config_file, $config);
+        } else {
+          print "Error: the server responded: $msg\n";
+        }
+      }
+    }
+    sleep 60;
+  }
+}
+
+sub _checkout_project {
+  my $self = shift;
+  my $project = shift;
+  my $revision = shift;
+
+  my $tmpdir = tempdir("chimps-svn-XXXXXXX", TMPDIR => 1);
+  unshift @{$self->_checkout_paths}, $tmpdir;
+
+  system("svn", "co", "-r", $revision, $project->{svn_uri}, $tmpdir);
+
+  $self->_push_onto_env_stack($project->{env});
+
+  my $projectdir = File::Spec->catdir($tmpdir, $project->{root_dir});
+
+  if (defined $project->{dependencies}) {
+    foreach my $dep (@{$project->{dependencies}}) {
+      print "processing dependency $dep\n";
+      $self->_checkout_project($self->_config->{$dep}, 'HEAD');
+    }
+  }
+  
+  chdir($projectdir);
+
+  my $old_perl5lib = $ENV{PERL5LIB};
+  $ENV{PERL5LIB} = join($Config{path_sep}, @{$self->_added_to_inc}) .
+    ':' . $ENV{PERL5LIB};
+  if (defined $project->{configure_cmd}) {
+    system($project->{configure_cmd});
+  }
+  $ENV{PERL5LIB} = $old_perl5lib;
+  
+  for my $libloc (qw{blib/lib}) {
+    my $libdir = File::Spec->catdir($tmpdir,
+                                    $project->{root_dir},
+                                    $libloc);
+    print "adding $libdir to \@INC\n";
+    unshift @{$self->_added_to_inc}, $libdir;
+    unshift @INC, $libdir;
+  }
+
+
+  return $projectdir;
+}
+
+sub _remove_tmpdir {
+  my $tmpdir = shift;
+  print "removing temporary directory $tmpdir\n";
+  rmtree($tmpdir, 0, 0);
+}
+
+sub _change_on_revision {
+  my $uri = shift;
+  my $revision = shift;
+
+  my $info_out = `svn info -r $revision $uri`;
+  $info_out =~ m/^Revision: (\d+)/m;
+  my $latest_revision = $1;
+  $info_out =~ m/^Last Changed Rev: (\d+)/m;
+  my $last_changed_revision = $1;
+
+  return $latest_revision == $last_changed_revision;
+}
+
+sub _push_onto_env_stack {
+  my $self = shift;
+  my $vars = shift;
+
+  my $frame = {};
+  foreach my $var (keys %$vars) {
+    if (exists $ENV{$var}) {
+      $frame->{$var} = $ENV{$var};
+    } else {
+      $frame->{$var} = undef;
+    }
+    my $value = $vars->{$var};
+    # old value substitution
+    $value =~ s/\$$var/$ENV{$var}/g;
+
+    print "setting environment variable $var to $value\n";
+    $ENV{$var} = $value;
+  }
+  push @{$self->_env_stack}, $frame;
+}
+
+sub _unroll_env_stack {
+  my $self = shift;
+
+  while (scalar @{$self->_env_stack}) {
+    my $frame = pop @{$self->_env_stack};
+    foreach my $var (keys %$frame) {
+      if (defined $frame->{$var}) {
+        print "reverting environment variable $var to $frame->{$var}\n";
+        $ENV{$var} = $frame->{$var};
+      } else {
+        print "unsetting environment variable $var\n";
+        delete $ENV{$var};
+      }
+    }
+  }
+}
+
+=head1 ACCESSORS
+
+There are read-only accessors for server, config_file, simulate.
+
+=head1 CONFIGURATION FILE
+
+The configuration file is YAML dump of a hash.  The keys at the top
+level of the hash are project names.  Their values are hashes that
+comprise the configuration options for that project.
+
+Perhaps an example is best.  A typical configuration file might
+look like this:
+
+    --- 
+    Some-jifty-project: 
+      configure_cmd: perl Makefile.PL --skipdeps && make
+      dependencies: 
+        - Jifty
+      revision: 555
+      root_dir: trunk/foo
+      svn_uri: svn+ssh://svn.example.com/svn/foo
+    Jifty: 
+      configure_cmd: perl Makefile.PL --skipdeps && make
+      dependencies: 
+        - Jifty-DBI
+      revision: 1332
+      root_dir: trunk
+      svn_uri: svn+ssh://svn.jifty.org/svn/jifty.org/jifty
+    Jifty-DBI: 
+      configure_cmd: perl Makefile.PL --skipdeps && make
+      env: 
+        JDBI_TEST_MYSQL: jiftydbitestdb
+        JDBI_TEST_MYSQL_PASS: ''
+        JDBI_TEST_MYSQL_USER: jiftydbitest
+        JDBI_TEST_PG: jiftydbitestdb
+        JDBI_TEST_PG_USER: jiftydbitest
+      revision: 1358
+      root_dir: trunk
+      svn_uri: svn+ssh://svn.jifty.org/svn/jifty.org/Jifty-DBI
+    
+The supported project options are as follows:
+
+=over 4
+
+=item * configure_cmd
+
+The command to configure the project after checkout, but before
+running tests.
+
+=item * revision
+
+This is the last revision known for a given project.  When started,
+the poller will attempt to checkout and test all revisions (besides
+ones on which the directory did not change) between this one and
+HEAD.  When a test has been successfully uploaded, the revision
+number is updated and the configuration file is re-written.
+
+=item * root_dir
+
+The subdirectory inside the repository where configuration and
+testing commands should be run.
+
+=item * svn_uri
+
+The subversion URI of the project.
+
+=item * env
+
+A hash of environment variable names and values that are set before
+configuration, and reverted to their previous values after the
+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.
+
+=item * dependencies
+
+A list of project names that are dependencies for the given
+project.  All dependencies are checked out at HEAD, have their
+configuration commands run, and all dependencys' $root_dir/blib/lib
+directories are added to @INC before the configuration command for
+the project is run.
+
+=item * dependency_only
+
+Indicates that this project should not be tested.  It is only
+present to serve as a dependency for another project.
+
+=back
+
+=head1 AUTHOR
+
+Zev Benjamin, C<< <zev at cpan.org> >>
+
+=head1 BUGS
+
+Please report any bugs or feature requests to
+C<bug-test-chimps at rt.cpan.org>, or through the web interface at
+L<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.
+
+=head1 SUPPORT
+
+You can find documentation for this module with the perldoc command.
+
+    perldoc Test::Chimps::Smoker
+
+You can also look for information at:
+
+=over 4
+
+=item * AnnoCPAN: Annotated CPAN documentation
+
+L<http://annocpan.org/dist/Test-Chimps-Client>
+
+=item * CPAN Ratings
+
+L<http://cpanratings.perl.org/d/Test-Chimps-Client>
+
+=item * RT: CPAN's request tracker
+
+L<http://rt.cpan.org/NoAuth/Bugs.html?Dist=Test-Chimps-Client>
+
+=item * Search CPAN
+
+L<http://search.cpan.org/dist/Test-Chimps-Client>
+
+=back
+
+=head1 COPYRIGHT & LICENSE
+
+Copyright 2006 Best Practical Solutions, all rights reserved.
+
+This program is free software; you can redistribute it and/or modify it
+under the same terms as Perl itself.
+
+=cut
+
+1;

Added: Test-Chimps-Client/trunk/t-data/bogus-tests/00-basic.t
==============================================================================
--- (empty file)
+++ Test-Chimps-Client/trunk/t-data/bogus-tests/00-basic.t	Wed Jul 12 15:53:39 2006
@@ -0,0 +1,9 @@
+#!perl -T
+
+use Test::More tests => 3;
+
+is(1, 1);
+
+ok(1+1 == 2);
+
+isnt(2+2, 5);

Added: Test-Chimps-Client/trunk/t-data/smoker-config.yml
==============================================================================
--- (empty file)
+++ Test-Chimps-Client/trunk/t-data/smoker-config.yml	Wed Jul 12 15:53:39 2006
@@ -0,0 +1 @@
+--- ~

Modified: Test-Chimps-Client/trunk/t/05-client-basic.t
==============================================================================
--- Test-Chimps-Client/trunk/t/05-client-basic.t	(original)
+++ Test-Chimps-Client/trunk/t/05-client-basic.t	Wed Jul 12 15:53:39 2006
@@ -8,7 +8,7 @@
   use_ok( 'Test::Chimps::Client' );
 }
 
-my $m = Test::TAP::Model::Visual->new_with_tests('t/bogus-tests/00-basic.t');
+my $m = Test::TAP::Model::Visual->new_with_tests('t-data/bogus-tests/00-basic.t');
 
 my $c = Test::Chimps::Client->new(model => $m,
                                   server => 'bogus',

Added: Test-Chimps-Client/trunk/t/10-smoker-basic.t
==============================================================================
--- (empty file)
+++ Test-Chimps-Client/trunk/t/10-smoker-basic.t	Wed Jul 12 15:53:39 2006
@@ -0,0 +1,13 @@
+#!perl -T
+
+use Test::More tests => 3;
+
+BEGIN {
+  use_ok('Test::Chimps::Smoker');
+}
+
+my $s = Test::Chimps::Smoker->new(server => 'bogus',
+                                  config_file => 't-data/smoker-config.yml');
+
+ok($s, "the server object is defined");
+isa_ok($s, 'Test::Chimps::Smoker', "and it's of the correct type");

Modified: Test-Chimps-Client/trunk/t/boilerplate.t
==============================================================================
--- Test-Chimps-Client/trunk/t/boilerplate.t	(original)
+++ Test-Chimps-Client/trunk/t/boilerplate.t	Wed Jul 12 15:53:39 2006
@@ -2,7 +2,7 @@
 
 use strict;
 use warnings;
-use Test::More tests => 5;
+use Test::More tests => 4;
 
 sub not_in_file_ok {
     my ($filename, %regex) = @_;
@@ -45,6 +45,5 @@
     );
 }
 
-module_boilerplate_ok('lib/Test/Chimps/Report.pm');
 module_boilerplate_ok('lib/Test/Chimps/Client.pm');
-module_boilerplate_ok('lib/Test/Chimps/Server.pm');
+module_boilerplate_ok('lib/Test/Chimps/Smoker.pm');


More information about the Rt-commit mailing list