On Wed, Mar 20, 2013 at 11:41:57AM -0700, Jonathan Nieder wrote:
> Ramkumar Ramachandra wrote:
> > Jonathan Nieder wrote:
> >> I dunno. The helper functions at the top of this test are already
> >> intimidating, so I guess I am looking for a way to avoid making that
> >> problem worse.
> > My patch does not make the situation worse in any way:
> Um, yes it does. It adds another function to learn to an already
> intimidating list.
Personally I do not find the set of helper functions intimidating. I
tend to read the tests in a top-down manner: a test is interesting
(usually because it fails), and then I want to see what it is doing, so
I look at any functions it calls, and so forth.
What I usually find _much_ harder to debug is when there is hidden state
leftover from other tests. So even though it is longer to write, I would
much rather see:
test_expect_success 'check that frob only affects foo' '
set_state_of foo &&
set_state_of bar &&
git frob &&
check_state_of foo &&
than for the test to assume the state of "foo" or "bar" prior to the
test. And I think helper functions can help make writing those sorts of
pre-conditions more reasonable (and without looking too hard, I think
t5516 does an OK job of that).
Related to that is when the helper functions operate on hidden state. In
this instance, we have tests that do things like:
git push testrepo refs/heads/master:refs/remotes/origin/master
and as a reader I say "wait, what's in testrepo?". I can follow mk_empty
and see that it hardcodes testrepo, but it is even better if the
function and its arguments are named in a way that I don't have to. So
even though it is more typing, I would argue that:
mk_empty testrepo &&
git push testrepo ...
is better, because the test script is more readable as a unit.
None of this is that huge a deal to me (and yet I seem to have written a
page about it :) ), but I figure while we are bikeshedding about test
To unsubscribe from this list: send the line "unsubscribe git" in
the body of a message to majord...@vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html