Devel::Git::MultiBisect - Study build and test output over a range of git commits
Given a Perl library or application kept in git for version control, it is often useful to be able to compare the output collected from running one or more test files over a range of git commits. If that range is sufficiently large, a test may fail in more than one way over that range.
If that is the case, then simply asking, "When did this file start to fail?" -- a question which git bisect
is designed to answer -- is insufficient. In order to identify more than one point of failure, we may need to (a) capture the test output for each commit; or, (b) capture the test output only at those commits where the output changed. The output of a run of a test file may change for a variety of reasons: test failures, segfaults, changes in the number or content of tests, etc.
Devel::Git::MultiBisect provides methods to achieve that objective. Its child classes, Devel::Git::MultiBisect::AllCommits and Devel::Git::MultiBisect::Transitions, provide different flavors of that functionality for objectives (a) and (b), respectively. Please refer to their documentation for further discussion.
In this library we introduce the term multisection as a short-hand for multiple bisection. Instead of hoping to identify a single commit within a range of commits that will, in effect, divide that range into "before" and "after" sub-ranges, we hope to identify multiple commits within that range where an application's behavior changed significantly.
Perl 5 has many different configuration options, some of which are used infrequently. Given a specific set of configuration options and a sufficiently large number of git commits and, it is possible that Perl would fail to build (i.e.
, a build-time failure in make) in more than one way over that range.
If that is the case, then simply asking, "When did Perl start failing to build with this set of configuration options?" is insufficient. We may need to capture the build-time error output at those commits where the output changed. Devel::Git::MultiBisect::BuildTransitions provides methods to achieve that objective. Please refer to their documentation for further discussion.
Perl 5.14 or higher.
CPAN module Devel::CheckBin needed for perl Makefile.PL
.
CPAN module Capture::Tiny needed for testing only.
git.
perl Makefile.PL
make
make test
make install
This library has not yet been tested on Windows.
Once installed, start reading the documentation by calling:
perldoc Devel::Git::MultiBisect