Re: [PATCH v5 13/34] directory rename detection: tests for handling overwriting untracked files
From: Elijah Newren <hidden>
Date: 2018-01-04 21:11:02
On Wed, Jan 3, 2018 at 5:52 PM, SZEDER Gábor [off-list ref] wrote:
quoted
+ test $(git rev-parse :0:y/b) = $(git rev-parse O:z/b) &&There is a test helper for that :) test_cmp_rev :0:y/b O:z/b Note, that this is not only a matter of useful output on failure, but also that of correctness and robustness.
Cool, good to know. Is there any reason test_cmp_rev is not
documented in t/README?
I already changed these yesterday, as part of trying to avoid the use
of plain 'test' as you suggested (I was just waiting another day or so
for more feedback before resubmitting the series). Since I tended to
have several of these rev-parse comparisons in a single test, I simply
combined them:
git rev-parse >actual
:0:y/b :1:x/c :2:x/c :3:x/c
git rev-parse >expect
O:z/b O:x/c A:x/c B:x/c
test_cmp expect actual
That does result in fewer rev-parse invocations, which is probably
good, but the test_cmp_rev does seem slightly more readable. Hmmm...
I noticed that this patch series adds several similar test $(git hash-object this) = $(git rev-parse that) conditions. Well, for that we don't have a test helper function. Similar 'hash-object = rev-parse' comparisons are already present in two other test scripts, so perhaps it's worth adding a helper function. Or you could perhaps git cat-file -p that >out && test_cmp this out
Yeah, I switched these over to the same format above; e.g. git hash-object this >actual && git rev-parse that > expect && test_cmp expect actual That does have the advantage of re-using a similar style.
quoted
+ test "very" = "$(cat y/c)" && + + test "important" = "$(cat y/d)" &&The 'verbose' helper could make conditions like these more, well, verbose about their failure: verbose test "very" = "$(cat y/c)" &&
Also good to know. Is there any reason the "verbose" helper isn't documented in t/README? I also switched these over yesterday to write to files and then use test_cmp, but
quoted
+ test "important" != "$(git rev-parse :3:y/d)" &&I'm not sure what this condition is supposed to check.
Well that's embarrassing. That was supposed to be 'cat-file -p', not rev-parse. And since I'm already testing that y/d on disk does have "important" as its contents and that :3:y/d matches O:z/c (i.e. has contents of "c"), the check was rather unnecessary, and too easy to false pass. I think I should just remove it (and two others like it).