test-reach: create new test tool for ref_newer
authorDerrick Stolee <dstolee@microsoft.com>
Fri, 20 Jul 2018 16:33:15 +0000 (16:33 +0000)
committerJunio C Hamano <gitster@pobox.com>
Fri, 20 Jul 2018 22:38:55 +0000 (15:38 -0700)
commitab176ac4ae9456a97ff4904c0222c6a0fc63a130
tree96af388a19b5faf402191a8e00ae9879df0ea9b6
parentba3ca1edce70d9d2d0eea1ac69377ae786e9413a
test-reach: create new test tool for ref_newer

As we prepare to change the behavior of the algorithms in
commit-reach.c, create a new test-tool subcommand 'reach' to test these
methods on interesting commit-graph shapes.

To use the new test-tool, use 'test-tool reach <method>' and provide
input to stdin that describes the inputs to the method. Currently, we
only implement the ref_newer method, which requires two commits. Use
lines "A:<committish>" and "B:<committish>" for the two inputs. We will
expand this input later to accommodate methods that take lists of
commits.

The test t6600-test-reach.sh creates a repo whose commits form a
two-dimensional grid. This grid makes it easy for us to determine
reachability because commit-A-B can reach commit-X-Y if and only if A is
at least X and B is at least Y. This helps create interesting test cases
for each result of the methods in commit-reach.c.

We test all methods in three different states of the commit-graph file:
Non-existent (no generation numbers), fully computed, and mixed (some
commits have generation numbers and others do not).

Signed-off-by: Derrick Stolee <dstolee@microsoft.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Makefile
t/helper/test-reach.c [new file with mode: 0644]
t/helper/test-tool.c
t/helper/test-tool.h
t/t6600-test-reach.sh [new file with mode: 0755]