Skip to content
Gather and study test output over a range of git commits
Perl Perl 6
Branch: master
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
examples
lib/Devel/Git
t
xt
.README.pod
.gitignore
.gitmodules
.version_info.pl
Changes
LICENSE
MANIFEST
MANIFEST.SKIP
Makefile.PL
README
README.md
Todo

README.md

NAME

Devel::Git::MultiBisect - Study build and test output over a range of git commits

DESCRIPTION

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.

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 changed. Devel::Git::MultiBisect::BuildTransitions provides methods to achieve that objective. Please refer to their documentation for further discussion.

PREREQUISITES

Perl 5.10 or higher.

CPAN module Devel::CheckBin needed for perl Makefile.PL.

CPAN modules Capture::Tiny and IO::CaptureOutput needed for testing only.

git.

INSTALL

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
You can’t perform that action at this time.