From: Eric Sunshine Date: Tue, 06 Aug 2013 13:59:49 GMT Subject: [PATCH v2 16/16] line-range: reject -L line numbers less than 1 Message-ID: <1375797589-65308-17-git-send-email-sunshine@sunshineco.com> In-Reply-To: <1375797589-65308-1-git-send-email-sunshine@sunshineco.com> Since inception, git-blame -L has been documented as accepting 1-based line numbers. When handed a line number less than 1, -L's behavior is undocumented and undefined; it's also nonsensical and should be diagnosed as an error. Do so. Signed-off-by: Eric Sunshine --- line-range.c | 5 ++++- t/annotate-tests.sh | 18 +++++++++--------- 2 files changed, 13 insertions(+), 10 deletions(-) diff --git a/line-range.c b/line-range.c index ede0c6c..de4e32f 100644 --- a/line-range.c +++ b/line-range.c @@ -54,8 +54,11 @@ static const char *parse_loc(const char *spec, nth_line_fn_t nth_line, } num = strtol(spec, &term, 10); if (term != spec) { - if (ret) + if (ret) { + if (num <= 0) + die("-L invalid line number: %ld", num); *ret = num; + } return term; } diff --git a/t/annotate-tests.sh b/t/annotate-tests.sh index 376b042..99caa42 100644 --- a/t/annotate-tests.sh +++ b/t/annotate-tests.sh @@ -185,15 +185,15 @@ test_expect_success 'blame -L Y,X (undocumented)' ' check_count -L6,3 B 1 B1 1 B2 1 D 1 ' -test_expect_failure 'blame -L -X' ' +test_expect_success 'blame -L -X' ' test_must_fail $PROG -L-1 file ' -test_expect_failure 'blame -L 0' ' +test_expect_success 'blame -L 0' ' test_must_fail $PROG -L0 file ' -test_expect_failure 'blame -L ,0' ' +test_expect_success 'blame -L ,0' ' test_must_fail $PROG -L,0 file ' @@ -447,8 +447,8 @@ test_expect_success 'blame empty' ' check_count -h HEAD^^ -f incremental ' -test_expect_success 'blame -L 0 empty (undocumented)' ' - check_count -h HEAD^^ -f incremental -L0 +test_expect_success 'blame -L 0 empty' ' + test_must_fail $PROG -L0 incremental HEAD^^ ' test_expect_success 'blame -L 1 empty' ' @@ -463,8 +463,8 @@ test_expect_success 'blame half' ' check_count -h HEAD^ -f incremental I 1 ' -test_expect_success 'blame -L 0 half (undocumented)' ' - check_count -h HEAD^ -f incremental -L0 I 1 +test_expect_success 'blame -L 0 half' ' + test_must_fail $PROG -L0 incremental HEAD^ ' test_expect_success 'blame -L 1 half' ' @@ -483,8 +483,8 @@ test_expect_success 'blame full' ' check_count -f incremental I 1 ' -test_expect_success 'blame -L 0 full (undocumented)' ' - check_count -f incremental -L0 I 1 +test_expect_success 'blame -L 0 full' ' + test_must_fail $PROG -L0 incremental ' test_expect_success 'blame -L 1 full' ' -- 1.8.4.rc1.409.gbd48715