Re: [PATCH] for-each-ref: fix setup of option-parsing for --sort
From: Junio C Hamano <hidden>
Date: 2016-06-15 22:43:49
Lars Hjemli [off-list ref] writes:
The option value for --sort is already a pointer to a pointer to struct ref_sort, so just use it. Signed-off-by: Lars Hjemli <redacted> --- On Nov 10, 2007 5:25 PM, Johannes Schindelin [off-list ref] wrote:quoted
Could you add a test for that too, please?Is this ok?
Testing "for that" would be kind of hard and semi pointless, isn't it? If it's mismatch of the expected number of times a pointer is dereferenced between the caller and the callee, I'd imagine that it will read from and write to random place in memory and would lead to unpredictable behaviour. If you are lucky you would not get expected results but if you are unlucky who knows what would happen. But the new test makes sure --sort takes intended effect, which is a good thing. Thanks.
quoted hunk
builtin-for-each-ref.c | 2 +- t/t6300-for-each-ref.sh | 22 ++++++++++++++++++++++ 2 files changed, 23 insertions(+), 1 deletions(-)diff --git a/builtin-for-each-ref.c b/builtin-for-each-ref.c index da8c794..e909e66 100644 --- a/builtin-for-each-ref.c +++ b/builtin-for-each-ref.c@@ -847,7 +847,7 @@ int cmd_for_each_ref(int argc, const char **argv, const char *prefix) OPT_GROUP(""), OPT_INTEGER( 0 , "count", &maxcount, "show only <n> matched refs"), OPT_STRING( 0 , "format", &format, "format", "format to use for the output"), - OPT_CALLBACK(0 , "sort", &sort_tail, "key", + OPT_CALLBACK(0 , "sort", sort_tail, "key", "field name to sort on", &opt_parse_sort), OPT_END(), };diff --git a/t/t6300-for-each-ref.sh b/t/t6300-for-each-ref.sh index d0809eb..c722635 100755 --- a/t/t6300-for-each-ref.sh +++ b/t/t6300-for-each-ref.sh@@ -148,4 +148,26 @@ test_expect_success 'Check format "rfc2822" date fields output' ' git diff expected actual ' +cat >expected <<\EOF +refs/heads/master +refs/tags/testtag +EOF + +test_expect_success 'Verify ascending sort' ' + git-for-each-ref --format="%(refname)" --sort=refname >actual && + git diff expected actual +' + + +cat >expected <<\EOF +refs/tags/testtag +refs/heads/master +EOF + +test_expect_success 'Verify descending sort' ' + git-for-each-ref --format="%(refname)" --sort=-refname >actual && + git diff expected actual +' + + test_done-- 1.5.3.5.623.g0a1d