Devel::Git::MultiBisect - Study build and test output over a range of
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
Devel::Git::MultiBisect::Transitions, provide different flavors of that
functionality for objectives (a) and (b), respectively. Please refer to their
documentation for further discussion.
What Is Multisection?
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.
Multisection of Build-Time Failures
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
Devel::Git::MultiBisect::BuildTransitions provides methods to
achieve that objective. Please refer to their documentation for further
Perl 5.10 or higher.
Devel::CheckBin needed for
IO::CaptureOutput needed for testing only.
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: