NAME

CPAN::Reporter::Smoker::Safer - Turnkey smoking of installed distros

VERSION

Version 0.02

SYNOPSIS

# Default usage
perl -MCPAN::Reporter::Smoker::Safer -e start

# Control the 'trust' params for the default filter
perl -MCPAN::Reporter::Smoker::Safer -e 'start( safer=>{min_reports=>0, min_days_old=>2} )'

# Smoke all installed modules from a specific namespace
perl -MCPAN::Reporter::Smoker::Safer -e 'start( safer=>{min_reports=>0, min_days_old=>0, mask=>"/MyFoo::/"} )'

# Custom filter (in this case, specific authorid)
perl -MCPAN::Reporter::Smoker::Safer -e 'start( safer=>{filter=>sub{$_[1] =~ m#/DAVIDRW/#}} )'

DESCRIPTION

This is a subclass of CPAN::Reporter::Smoker that will limit the set of tested distributions to ones that are already installed on the system (and their dependencies). This is based on the assumption that, having been installed, the distributions and their dependencies are trusted. This can be used to run partial smoke testing on a box that normally wouldn't be desired for full smoke testing (i.e. isn't a dedicated/isolated environment). Another potential use is to vet everything before upgrading.

WARNING -- smoke testing is risky

While in theory this is much safer than full CPAN smoke testing, ALL of the same risks (see CPAN::Reporter::Smoker) still apply:

Smoke testing will download and run programs that other people have uploaded to CPAN. These programs could do *anything* to your system, including deleting everything on it. Do not run CPAN::Reporter::Smoker unless you are prepared to take these risks.

USAGE

start()

This is an overload of CPAN::Reporter::Smoker::start, and supports the same arguments, with the exception of list which is set internally. In addition, supports the following argument:

safer

Hashref with the following possible keys:

mask

Scalar; Defaults to '/./'; Value is passed to CPAN::Shell::expand() for filtering the module list (applies to module names, not distro names).

filter

Code ref; Defaults to "__filter". First argument is the CPAN::Reporter::Smoker::Safer class/object; Second argument is a CPAN::Distribution object. Return value should be 1 (true) to accept, and 0 (false) to reject the distribution.

	filter => sub {
	  my ($safer, $dist) = @_;
	  ...
          return 1; 
	},
min_reports

Defaults to 10. This is used by the default filter -- distros are 'trusted' if they have at least this many CPAN testers reports already.

min_days_old

Defaults to 10. This is used by the default filter -- distros are 'trusted' unless they were uploaded to CPAN at least this many days ago.

exclusions

Defaults to [ qr#/perl-5\.#, qr#/mod_perl-\d# ]. This is used by the default filter to exclude any distro whose name (e.g. A/AU/AUTHOR/Foo-Bar-1.23.tar.gz) matches one of these regexes.

Note that the disabled.yml functionality might be more suitable. See CPAN::Reporter::Smoker, CPAN, and CPAN::Distroprefs for more details.

INTERNAL METHODS

__filter

Used as the default "filter" code ref.

  • Excludes any distro who's name (e.g. A/AU/AUTHOR/Foo-Bar-1.23.tar.gz) matches a list of "exclusions".

  • Exclude any distro that was uploaded to CPAN less than "min_days_old" days ago.

  • Exclude any distro that has less than "min_reports" CPAN Testers reports.

__installed_dists

Returns an array ref of dist names (e.g. 'ANDK/CPAN-1.9301.tar.gz' ).

CPAN::Reporter::Smoker::Safer->__installed_dists( $mask, $filter );

mask is optional, and is same value as "mask". filter is optional, and is same value as "filter".

AUTHOR

David Westbrook (CPAN: davidrw), <dwestbrook at gmail.com>

BUGS

Please report any bugs or feature requests to bug-cpan-reporter-smoker-safer at rt.cpan.org, or through the web interface at http://rt.cpan.org/NoAuth/ReportBug.html?Queue=CPAN-Reporter-Smoker-Safer. 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 CPAN::Reporter::Smoker::Safer

You can also look for information at:

SEE ALSO

ACKNOWLEDGEMENTS

The cpan-testers-discuss mailling list for supporting and enhancing the concept.

COPYRIGHT & LICENSE

Copyright 2009 David Westbrook, all rights reserved.

This program is free software; you can redistribute it and/or modify it under the same terms as Perl itself.