The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.

NAME

brewbuild - Automate module and reverse-dependency testing, on Windows and Unix.

SYNOPSIS

You must be in the root directory of the distribution you want to test.

Run all unit tests against all installed instances with no other action. Upon a FAIL, a log file will be generated in the current working directory named "bblog/version.bblog"

    brewbuild

    # output

    5.8.9 :: PASS
    5.20.3 :: FAIL
    5.22.1 :: PASS

Run tests on the local working copy of the current module, then run all tests of all reverse dependencies of this module (as reported by CPAN), to ensure the down river modules will work with your new build. In this case, FAILs are stored in "bblog/revdep-module-name.version.bblog"

    brewbuild --revdep # or -R

    # example output, in my Mock::Sub repo directory

    - working on reverse dependencies: Test-BrewBuild, File-Edit-Portable,
      Devel-Examine-Subs, Devel-Trace-Subs

    Test::BrewBuild
    5.18.4 :: FAIL
    5.22.1 :: PASS

    File::Edit::Portable
    5.18.4 :: PASS
    5.22.1 :: PASS

    Devel::Examine::Subs
    5.18.4 :: PASS
    5.22.1 :: PASS

    Devel::Trace::Subs
    5.18.4 :: PASS
    5.22.1 :: PASS

Print usage information

    brewbuild -h

Run on specific versions only (Unix)

    brewbuild --on 5.20.3 -o 5.8.9

Install three new instances of perl, randomly

    brewbuild --new 3

Remove all perl instances (less the currently used one), install two new random versions, and run tests against all installed perls

    brewbuild --remove --new 2

Install all available perl versions, and run tests against all of them

    brewbuild --new -1

Install a specific version and run tests on all instances (include just the number portion of the version per "perlbrew available" or "berrybrew available"

    brewbuild --install 5.20.3

...multiple versions can be passed in at once

    brewbuild -i 5.20.3 -i 5.14.4 -i 5.23.5

Display test platform setup instructions for Unix and Windows

    brewbuild --setup

DESCRIPTION

This brewbuild script installed by the Test::Brewbuild module allows you to perform your unit tests across all of your Perlbrew (Unix) or Berrybrew (Windows) Perl instances, as well as test all of your down-river CPAN modules that rely on your module against the locally updated version.

For Windows, you'll need to install Berrybrew (see "SEE ALSO" for details). For Unix, you'll need Perlbrew.

It allows you to remove and reinstall on each test run, install random versions of perl, or install specific versions.

All unit tests are run against all installed instances, unless otherwise specified.

The actual module is just a helper for the installed script, and isn't designed for end-user use.

TEST PLATFORM CONFIGURATION

Test::BrewBuild test platform configuration guide

UNIX

Install perlbrew and related requirements:

    cpanm App::perlbrew
    perlbrew install-patchperl
    perlbrew install-cpanm

Install and switch to your base perl instance, and install Test::BrewBuild:

    perlbrew install 5.22.1
    perlbrew switch 5.22.1
    cpanm Test::BrewBuild

WINDOWS

Note that the key here is that your %PATH% must be free and clear of anything Perl. That means that if you're using an existing box with Strawberry or ActiveState installed, you *must* remove all traces of them in the PATH environment variable for ``brewbuild'' to work correctly.

Easiest way to guarantee a working environment is using a clean-slate Windows server with nothing on it. For a Windows test platform, I mainly used an Amazon AWS t2.small server.

Download/install git for Windows:

    https://git-scm.com/download/win

Create a repository directory, and enter it:

    mkdir c:\repos
    cd c:\repos

Clone and configure berrybrew

    git clone https://github.com/dnmfarrell/berrybrew
    cd berrybrew
    bin\berrybrew.exe config (type 'y' when asked to install in PATH)

Close the current CMD window and open a new one to update env vars

Check available perls, and install one that'll become your core base install

    berrybrew available
    berrybrew install 5.22.1_64
    berrybrew switch 5.22.1_64
    close CMD window, and open new one

Make sure it took

    perl -v

Install Test::BrewBuild

    cpanm Test::BrewBuild

AUTHOR

Steve Bertrand, <steveb at cpan.org>

CONTRIBUTING

Any and all feedback and help is appreciated. A Pull Request is the preferred method of receiving changes (https://github.com/stevieb9/p5-test-brewbuild), but regular patches through the bug tracker, or even just email discussions are welcomed.

BUGS

https://github.com/stevieb9/p5-test-brewbuild/issues

SUPPORT

You can find documentation for this script and module with the perldoc command.

    perldoc brewbuild
    perldoc Test::BrewBuild

SEE ALSO

Berrybrew for Windows:

https://github.com/dnmfarrell/berrybrew

Perlbrew for Unixes:

http://perlbrew.pl

LICENSE AND COPYRIGHT

Copyright 2016 Steve Bertrand.

This program is free software; you can redistribute it and/or modify it under the terms of either: the GNU General Public License as published by the Free Software Foundation; or the Artistic License.

See http://dev.perl.org/licenses/ for more information.