NAME

    CPANPLUS::YACSmoke - Yet Another CPANPLUS Smoke Tester

VERSION

    version 1.06

SYNOPSIS

      perl -MCPANPLUS::YACSmoke -e test

DESCRIPTION

    CPANPLUS::YACSmoke is an enhancement of the venerable CPAN::YACSmoke
    that uses the API backend of CPANPLUS to run tests on CPAN modules and
    post results to the CPAN Testers list.

    CPANPLUS::Dist::YACSmoke is loaded into the CPANPLUS configuration
    before any modules are tested.

    It will create a database file in the .cpanplus directory, which it
    uses to track tested distributions. This information will be used to
    keep from posting multiple reports for the same module, and to keep
    from testing modules that use non-passing modules as prerequisites.

    If prereqs have been tested previously and have resulted in a pass
    grade then the tests for those prereqs will be skipped, speeding up
    smoke testing.

    By default it uses CPANPLUS configuration settings.

CONFIGURATION FILE

    CPANPLUS::YACSmoke only honours the exclude_dists in CPAN::YACSmoke
    style ini files.

    The exclude_dists setting, which is laid out as:

      [CONFIG]
      exclude_dists=<<HERE
      mod_perl
      HERE

    The above would then ignore any distribution that includes the string
    'mod_perl' in its name. This is useful for distributions which use
    external C libraries, which are not installed, or for which testing is
    problematic.

    CPANPLUS::YACSmoke also supports exclude_auths in the ini file. Similar
    to exclude_dists, but for excluding all distributions by a particular
    CPAN author ID.

      [CONFIG]
      exclude_auths=<<THERE
      ^ASS
      THERE

    The above would ignore all distributions of any CPAN author ID that
    begins with ASS, such as ASSAM and ASSONIA.

    Experimental support for local::lib type environment has been added. In
    the ini file specify the local::lib setting to enable this feature.

      [CONFIG]
      local::lib = 1

    Setting this will make CPANPLUS::YACSmoke setup a local::lib under the
    current working directory before testing starts. All modules tested
    (and prereqs resolved during testing) will be installed into the
    local::lib. When testing finishes, the local::lib will be removed.

    See Config::IniFiles for more information on the INI file format.

PROCEDURAL INTERFACE

 EXPORTS

    The following routines are exported by default. They are intended to be
    called from the command-line, though they could be used from a script.

    test( [ $dist [, $dist .... ] ] )

        perl -MCPANPLUS::YACSmoke -e test
      
        perl -MCPANPLUS::YACSmoke -e test('R/RR/RRWO/Some-Dist-0.01.tar.gz')

      Runs tests on CPAN distributions. Arguments should be paths of
      individual distributions in the author directories. If no arguments
      are given, it will download the RECENT file from CPAN and use that.

      By default it uses CPANPLUS configuration settings. If CPANPLUS is
      set not to send test reports, then it will not send test reports.

    mark( $dist [, $grade ] ] )

        perl -MCPANPLUS::YACSmoke -e mark('Some-Dist-0.01')
      
        perl -MCPANPLUS::YACSmoke -e mark('Some-Dist-0.01', 'fail')

      Retrieves the test result in the database, or changes the test
      result.

      It can be useful to update the status of a distribution that once
      failed or was untestable but now works, so as to test modules which
      make use of it.

      Grades can be one of (case insensitive):

        aborted  = tests aborted (uninstallable prereqs or other failure in test)
        pass     = passed tests
        fail     = failed tests
        unknown  = no tests available
        na       = not applicable to platform or installed libraries
        ungraded = no grade (test possibly aborted by user)
        none     = undefines a grade
        ignored  = package was ignored (a newer version was tested)

    excluded( [ $dist [, $dist ... ] ] )

        perl -MCPANPLUS::YACSmoke -e excluded('Some-Dist-0.01')
      
        perl -MCPANPLUS::YACSmoke -e excluded()

      Given a list of distributions, indicates which ones would be excluded
      from testing, based on the exclude_dist list that is created.

    purge( [ \%config, ] [ $dist [, $dist ... ] ] )

        perl -MCPANPLUS::YACSmoke -e purge()
      
        perl -MCPANPLUS::YACSmoke -e purge('Some-Dist-0.01')

      Purges the entries from the local cpansmoke database. The criteria
      for purging is that a distribution must have a more recent version,
      which has previously been marked as a PASS. However, if one or more
      distributions are passed as a parameter list, those specific
      distributions will be purged.

      If the flush_flag is set, via the config hashref, to a true value,
      the directory path created for each older copy of a distribution is
      deleted.

    flush( [ 'all' | 'old' ] )

        perl -MCPANPLUS::YACSmoke -e flush()
      
        perl -MCPANPLUS::YACSmoke -e flush('all')
      
        perl -MCPANPLUS::YACSmoke -e flush('old')

      Removes unrequired build directories from the designated CPANPLUS
      build directory. Note that this deletes directories regardless of
      whether the associated distribution was tested.

      Default flush is 'all'. The 'old' option will only delete the older
      distributions, of multiple instances of a distribution.

      Note that this cannot be done reliably using last access or modify
      time, as the intention is for this distribution to be used on any OS
      that CPANPLUS is installed on. In this case not all OSs support the
      full range of return values from the stat function.

    reindex

      Make CPANPLUS reload its indices.

OBJECT INTERFACE

    Each of the procedural interface functions are available as methods of
    a CPANPLUS::YACSmoke object.

    new

      The object interface is created normally through the test() or mark()
      functions of the procedural interface.

ENVIRONMENT VARIABLES

    The following environment variables affect the operation of this
    module:

    PERL5_YACSMOKE_BASE

      Loaded into CPANPLUS by CPANPLUS::Config::YACSmoke, sets the basedir
      where CPANPLUS and CPANPLUS::YACSmoke related modules find the
      .cpanplus directory for their settings

        export PERL5_YACSMOKE_BASE=/home/moo/perls/conf/perl-5.8.9/

      Would set the base dir to /home/moo/perls/conf/perl-5.8.9/.cpanplus/

    Several environment variables get set by the module:

    AUTOMATED_TESTING

      Set to 1 to indicate that we are currently running in an automated
      testing environment

    PERL_MM_USE_DEFAULT

      Set to 1 MakeMaker and Module::Build's prompt functions will always
      return the default without waiting for user input.

    MAILDOMAIN

      Test::Reporter uses this. YACSmoke will set this if it isn't already
      set. It will try to determine the domain from the email setting in
      CPANPLUS. If this is cpan.org it will default to cpantesters.org (
      the perl.org MX doesn't like people trying to impersonate it, for
      obvious reasons ).

KUDOS

    Based on CPAN::YACSmoke by Robert Rothenberg and Barbie.

    Contributions and patience from Jos Boumans the CPANPLUS guy!

SEE ALSO

    CPANPLUS

    CPANPLUS::Dist::YACSmoke

    CPANPLUS::Config::YACSmoke

    CPAN::YACSmoke

    Test::Reporter

AUTHOR

    Chris Williams <chris@bingosnet.co.uk>

COPYRIGHT AND LICENSE

    This software is copyright (c) 2018 by Chris Williams, Jos Boumans,
    Robert Rothenberg and Barbie.

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

