Twelve tests in t4209 follow the same simple pattern for description, git log call and checking. Extract that shared logic into a helper function named test_log. Test specifications become a lot more compact, new tests can be added more easily. Signed-off-by: Rene Scharfe <l.s.r@xxxxxx> --- t/t4209-log-pickaxe.sh | 92 +++++++++++++++++++------------------------------- 1 file changed, 34 insertions(+), 58 deletions(-) diff --git a/t/t4209-log-pickaxe.sh b/t/t4209-log-pickaxe.sh index ff668b5..9f3bb40 100755 --- a/t/t4209-log-pickaxe.sh +++ b/t/t4209-log-pickaxe.sh @@ -3,6 +3,28 @@ test_description='log --grep/--author/--regexp-ignore-case/-S/-G' . ./test-lib.sh +test_log() { + expect=$1 + kind=$2 + needle=$3 + shift 3 + rest=$@ + + case $expect in + expect_nomatch) + match=nomatch + ;; + *) + match=match + ;; + esac + + test_expect_success "log $kind${rest:+ $rest} ($match)" " + git log $rest $kind $needle --format=%H >actual && + test_cmp $expect actual + " +} + test_expect_success setup ' >expect_nomatch && @@ -44,35 +66,12 @@ test_expect_success 'log --author -i' ' test_cmp expect_second actual ' -test_expect_success 'log -G (nomatch)' ' - git log -Gpicked --format=%H >actual && - test_cmp expect_nomatch actual -' - -test_expect_success 'log -G (match)' ' - git log -GPicked --format=%H >actual && - test_cmp expect_second actual -' - -test_expect_success 'log -G --regexp-ignore-case (nomatch)' ' - git log --regexp-ignore-case -Gpickle --format=%H >actual && - test_cmp expect_nomatch actual -' - -test_expect_success 'log -G -i (nomatch)' ' - git log -i -Gpickle --format=%H >actual && - test_cmp expect_nomatch actual -' - -test_expect_success 'log -G --regexp-ignore-case (match)' ' - git log --regexp-ignore-case -Gpicked --format=%H >actual && - test_cmp expect_second actual -' - -test_expect_success 'log -G -i (match)' ' - git log -i -Gpicked --format=%H >actual && - test_cmp expect_second actual -' +test_log expect_nomatch -G picked +test_log expect_second -G Picked +test_log expect_nomatch -G pickle --regexp-ignore-case +test_log expect_nomatch -G pickle -i +test_log expect_second -G picked --regexp-ignore-case +test_log expect_second -G picked -i test_expect_success 'log -G --textconv (missing textconv tool)' ' echo "* diff=test" >.gitattributes && @@ -87,35 +86,12 @@ test_expect_success 'log -G --no-textconv (missing textconv tool)' ' rm .gitattributes ' -test_expect_success 'log -S (nomatch)' ' - git log -Spicked --format=%H >actual && - test_cmp expect_nomatch actual -' - -test_expect_success 'log -S (match)' ' - git log -SPicked --format=%H >actual && - test_cmp expect_second actual -' - -test_expect_success 'log -S --regexp-ignore-case (match)' ' - git log --regexp-ignore-case -Spicked --format=%H >actual && - test_cmp expect_second actual -' - -test_expect_success 'log -S -i (match)' ' - git log -i -Spicked --format=%H >actual && - test_cmp expect_second actual -' - -test_expect_success 'log -S --regexp-ignore-case (nomatch)' ' - git log --regexp-ignore-case -Spickle --format=%H >actual && - test_cmp expect_nomatch actual -' - -test_expect_success 'log -S -i (nomatch)' ' - git log -i -Spickle --format=%H >actual && - test_cmp expect_nomatch actual -' +test_log expect_nomatch -S picked +test_log expect_second -S Picked +test_log expect_second -S picked --regexp-ignore-case +test_log expect_second -S picked -i +test_log expect_nomatch -S pickle --regexp-ignore-case +test_log expect_nomatch -S pickle -i test_expect_success 'log -S --textconv (missing textconv tool)' ' echo "* diff=test" >.gitattributes && -- 1.9.1 -- To unsubscribe from this list: send the line "unsubscribe git" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html