parse-options: recognize abbreviated negated option with arg
Giving an argument to an option that doesn't take one causes Git to report that error specifically: $ git rm --dry-run=bogus error: option `dry-run' takes no value The same is true when the option is negated or abbreviated: $ git rm --no-dry-run=bogus error: option `no-dry-run' takes no value $ git rm --dry=bogus error: option `dry-run' takes no value Not so when doing both, though: $ git rm --no-dry=bogus error: unknown option `no-dry=bogus' usage: git rm [-f | --force] [-n] [-r] [--cached] [--ignore-unmatch] (Rest of the usage message omitted.) Improve consistency and usefulness of the error message by recognizing abbreviated negated options even if they have a (most likely bogus) argument. With this patch we get: $ git rm --no-dry=bogus error: option `no-dry-run' takes no value Signed-off-by: René Scharfe <l.s.r@web.de> Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:

committed by
Junio C Hamano

parent
3c2a3fdc38
commit
289cb15541
@ -210,6 +210,22 @@ test_expect_success 'superfluous value provided: boolean' '
|
||||
test_cmp expect actual
|
||||
'
|
||||
|
||||
test_expect_success 'superfluous value provided: boolean, abbreviated' '
|
||||
cat >expect <<-\EOF &&
|
||||
error: option `yes'\'' takes no value
|
||||
EOF
|
||||
test_expect_code 129 env GIT_TEST_DISALLOW_ABBREVIATED_OPTIONS=false \
|
||||
test-tool parse-options --ye=hi 2>actual &&
|
||||
test_cmp expect actual &&
|
||||
|
||||
cat >expect <<-\EOF &&
|
||||
error: option `no-yes'\'' takes no value
|
||||
EOF
|
||||
test_expect_code 129 env GIT_TEST_DISALLOW_ABBREVIATED_OPTIONS=false \
|
||||
test-tool parse-options --no-ye=hi 2>actual &&
|
||||
test_cmp expect actual
|
||||
'
|
||||
|
||||
test_expect_success 'superfluous value provided: cmdmode' '
|
||||
cat >expect <<-\EOF &&
|
||||
error: option `mode1'\'' takes no value
|
||||
|
Reference in New Issue
Block a user