t4209: set up expectations up front

Instead of creating an expect file for each test, build three files with
the possible valid values during setup and use them in the tests.  This
shortens the test code and saves nine calls to git rev-parse.

Signed-off-by: Rene Scharfe <l.s.r@web.de>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:
René Scharfe 2014-03-22 18:15:51 +01:00 committed by Junio C Hamano
parent 5f95c9f850
commit b0f7c7cf86

View File

@ -4,80 +4,74 @@ test_description='log --grep/--author/--regexp-ignore-case/-S/-G'
. ./test-lib.sh . ./test-lib.sh
test_expect_success setup ' test_expect_success setup '
>expect_nomatch &&
>file && >file &&
git add file && git add file &&
test_tick && test_tick &&
git commit -m initial && git commit -m initial &&
git rev-parse --verify HEAD >expect_initial &&
echo Picked >file && echo Picked >file &&
git add file &&
test_tick && test_tick &&
git commit -a --author="Another Person <another@example.com>" -m second git commit --author="Another Person <another@example.com>" -m second &&
git rev-parse --verify HEAD >expect_second
' '
test_expect_success 'log --grep' ' test_expect_success 'log --grep' '
git log --grep=initial --format=%H >actual && git log --grep=initial --format=%H >actual &&
git rev-parse --verify HEAD^ >expect && test_cmp expect_initial actual
test_cmp expect actual
' '
test_expect_success 'log --grep --regexp-ignore-case' ' test_expect_success 'log --grep --regexp-ignore-case' '
git log --regexp-ignore-case --grep=InItial --format=%H >actual && git log --regexp-ignore-case --grep=InItial --format=%H >actual &&
git rev-parse --verify HEAD^ >expect && test_cmp expect_initial actual
test_cmp expect actual
' '
test_expect_success 'log --grep -i' ' test_expect_success 'log --grep -i' '
git log -i --grep=InItial --format=%H >actual && git log -i --grep=InItial --format=%H >actual &&
git rev-parse --verify HEAD^ >expect && test_cmp expect_initial actual
test_cmp expect actual
' '
test_expect_success 'log --author --regexp-ignore-case' ' test_expect_success 'log --author --regexp-ignore-case' '
git log --regexp-ignore-case --author=person --format=%H >actual && git log --regexp-ignore-case --author=person --format=%H >actual &&
git rev-parse --verify HEAD >expect && test_cmp expect_second actual
test_cmp expect actual
' '
test_expect_success 'log --author -i' ' test_expect_success 'log --author -i' '
git log -i --author=person --format=%H >actual && git log -i --author=person --format=%H >actual &&
git rev-parse --verify HEAD >expect && test_cmp expect_second actual
test_cmp expect actual
' '
test_expect_success 'log -G (nomatch)' ' test_expect_success 'log -G (nomatch)' '
git log -Gpicked --format=%H >actual && git log -Gpicked --format=%H >actual &&
>expect && test_cmp expect_nomatch actual
test_cmp expect actual
' '
test_expect_success 'log -G (match)' ' test_expect_success 'log -G (match)' '
git log -GPicked --format=%H >actual && git log -GPicked --format=%H >actual &&
git rev-parse --verify HEAD >expect && test_cmp expect_second actual
test_cmp expect actual
' '
test_expect_success 'log -G --regexp-ignore-case (nomatch)' ' test_expect_success 'log -G --regexp-ignore-case (nomatch)' '
git log --regexp-ignore-case -Gpickle --format=%H >actual && git log --regexp-ignore-case -Gpickle --format=%H >actual &&
>expect && test_cmp expect_nomatch actual
test_cmp expect actual
' '
test_expect_success 'log -G -i (nomatch)' ' test_expect_success 'log -G -i (nomatch)' '
git log -i -Gpickle --format=%H >actual && git log -i -Gpickle --format=%H >actual &&
>expect && test_cmp expect_nomatch actual
test_cmp expect actual
' '
test_expect_success 'log -G --regexp-ignore-case (match)' ' test_expect_success 'log -G --regexp-ignore-case (match)' '
git log --regexp-ignore-case -Gpicked --format=%H >actual && git log --regexp-ignore-case -Gpicked --format=%H >actual &&
git rev-parse --verify HEAD >expect && test_cmp expect_second actual
test_cmp expect actual
' '
test_expect_success 'log -G -i (match)' ' test_expect_success 'log -G -i (match)' '
git log -i -Gpicked --format=%H >actual && git log -i -Gpicked --format=%H >actual &&
git rev-parse --verify HEAD >expect && test_cmp expect_second actual
test_cmp expect actual
' '
test_expect_success 'log -G --textconv (missing textconv tool)' ' test_expect_success 'log -G --textconv (missing textconv tool)' '
@ -89,45 +83,38 @@ test_expect_success 'log -G --textconv (missing textconv tool)' '
test_expect_success 'log -G --no-textconv (missing textconv tool)' ' test_expect_success 'log -G --no-textconv (missing textconv tool)' '
echo "* diff=test" >.gitattributes && echo "* diff=test" >.gitattributes &&
git -c diff.test.textconv=missing log -Gfoo --no-textconv >actual && git -c diff.test.textconv=missing log -Gfoo --no-textconv >actual &&
>expect && test_cmp expect_nomatch actual &&
test_cmp expect actual &&
rm .gitattributes rm .gitattributes
' '
test_expect_success 'log -S (nomatch)' ' test_expect_success 'log -S (nomatch)' '
git log -Spicked --format=%H >actual && git log -Spicked --format=%H >actual &&
>expect && test_cmp expect_nomatch actual
test_cmp expect actual
' '
test_expect_success 'log -S (match)' ' test_expect_success 'log -S (match)' '
git log -SPicked --format=%H >actual && git log -SPicked --format=%H >actual &&
git rev-parse --verify HEAD >expect && test_cmp expect_second actual
test_cmp expect actual
' '
test_expect_success 'log -S --regexp-ignore-case (match)' ' test_expect_success 'log -S --regexp-ignore-case (match)' '
git log --regexp-ignore-case -Spicked --format=%H >actual && git log --regexp-ignore-case -Spicked --format=%H >actual &&
git rev-parse --verify HEAD >expect && test_cmp expect_second actual
test_cmp expect actual
' '
test_expect_success 'log -S -i (match)' ' test_expect_success 'log -S -i (match)' '
git log -i -Spicked --format=%H >actual && git log -i -Spicked --format=%H >actual &&
git rev-parse --verify HEAD >expect && test_cmp expect_second actual
test_cmp expect actual
' '
test_expect_success 'log -S --regexp-ignore-case (nomatch)' ' test_expect_success 'log -S --regexp-ignore-case (nomatch)' '
git log --regexp-ignore-case -Spickle --format=%H >actual && git log --regexp-ignore-case -Spickle --format=%H >actual &&
>expect && test_cmp expect_nomatch actual
test_cmp expect actual
' '
test_expect_success 'log -S -i (nomatch)' ' test_expect_success 'log -S -i (nomatch)' '
git log -i -Spickle --format=%H >actual && git log -i -Spickle --format=%H >actual &&
>expect && test_cmp expect_nomatch actual
test_cmp expect actual
' '
test_expect_success 'log -S --textconv (missing textconv tool)' ' test_expect_success 'log -S --textconv (missing textconv tool)' '
@ -139,8 +126,7 @@ test_expect_success 'log -S --textconv (missing textconv tool)' '
test_expect_success 'log -S --no-textconv (missing textconv tool)' ' test_expect_success 'log -S --no-textconv (missing textconv tool)' '
echo "* diff=test" >.gitattributes && echo "* diff=test" >.gitattributes &&
git -c diff.test.textconv=missing log -Sfoo --no-textconv >actual && git -c diff.test.textconv=missing log -Sfoo --no-textconv >actual &&
>expect && test_cmp expect_nomatch actual &&
test_cmp expect actual &&
rm .gitattributes rm .gitattributes
' '