package Test::Smoke::App::SmokePerl; use warnings; use strict; our $VERSION = '0.001'; use base 'Test::Smoke::App::Base'; use Test::Smoke::App::Archiver; use Test::Smoke::App::Reporter; use Test::Smoke::App::RunSmoke; use Test::Smoke::App::SendReport; use Test::Smoke::App::SyncTree; use Test::Smoke::App::Options; my $opt = 'Test::Smoke::App::Options'; use Test::Smoke::Util 'get_patch'; =head1 NAME Test::Smoke::App::SmokePerl - The tssmokeperl.pl application. =head1 DESCRIPTION =head2 $app->run(); Run all the parts: =over =item * synctree =item * runsmoke =item * report =item * sendrpt =item * archive =back =cut sub run { my $self = shift; $self->log_debug("Read configuration from: %s", $self->option('configfile')); my $old_commit = get_patch($self->option('ddir'))->[0] || ""; if ($self->option('smartsmoke') && $self->option('patchlevel')) { $old_commit = $self->option('patchlevel'); } $self->log_debug("Commitlevel before sync: %s", $old_commit); my $current_commit; if ($self->option('sync')) { local @ARGV = @{$self->ARGV}; $self->{_synctree} = Test::Smoke::App::SyncTree->new( $opt->synctree_config() ); $self->log_info("==> Starting synctree"); $current_commit = $self->synctree->run(); } else { $self->log_warn("==> Skipping synctree"); $current_commit = get_patch($self->option('ddir'))->[0]; } $self->log_debug("Commitlevel after sync: %s", $current_commit); if ($self->option('smartsmoke') && ($current_commit eq $old_commit)) { $self->log_warn("Skipping this smoke, commit(%s) did not change.", $old_commit); return; } { local @ARGV = @{$self->ARGV}; $self->{_runsmoke} = Test::Smoke::App::RunSmoke->new( $opt->runsmoke_config() ); $self->log_info("==> Starting runsmoke"); $self->runsmoke->run(); } if ($self->option('report')) { local @ARGV = @{$self->ARGV}; $self->{_reporter} = Test::Smoke::App::Reporter->new( $opt->reporter_config() ); $self->log_info("==> Starting reporter"); $self->reporter->run(); } else { $self->log_warn("==> Skipping reporter"); } if ($self->option('sendreport')) { local @ARGV = @{$self->ARGV}; $self->{_sendreport} = Test::Smoke::App::SendReport->new( $opt->sendreport_config() ); $self->log_info("==> Starting sendreport"); $self->sendreport->run(); } else { $self->log_warn("==> Skipping sendreport"); } if ($self->option('archive')) { local @ARGV = @{$self->ARGV}; $self->{_archiver} = Test::Smoke::App::Archiver->new( $opt->archiver_config() ); $self->log_info("==> Starting archiver"); $self->archiver->run(); } else { $self->log_warn("==> Skipping archiver"); } } 1; =head1 COPYRIGHT (c) 2002-2013, Abe Timmerman All rights reserved. With contributions from Jarkko Hietaniemi, Merijn Brand, Campo Weijerman, Alan Burlison, Allen Smith, Alain Barbet, Dominic Dunlop, Rich Rauenzahn, David Cantrell. This library is free software; you can redistribute it and/or modify it under the same terms as Perl itself. See: =over 4 =item * L =item * L =back This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. =cut