The standard philosophy for Unix software when a help option (such as --help) is specified is that the software should exit 0, printing the help output to standard output, since the standard output is for user-requested output and the program performed the requested task successfully. If the user specifies an incorrect option, then the help output should be printed to standard error (since the user has made a mistake) and it should exit unsuccessfully. Most of our commands currently exit 129 on receiving the -h option to print the short help, which does not line up with the standard philosophy above. Let's change that to exit 0 instead. This requires changes to a variety of tests which previously wanted the 129 exit code, so update them. Note that because git diff does its own option parsing, it still exits with 129, so update some of the tests to expect either exit status. Some commands also now pass with -h but not --help-all, so handle those cases differently for those commands. Signed-off-by: brian m. carlson <sandals@crustytoothpaste.net> Signed-off-by: Junio C Hamano <gitster@pobox.com>
62 lines
1.4 KiB
Bash
Executable File
62 lines
1.4 KiB
Bash
Executable File
#!/bin/sh
|
|
|
|
test_description='basic ls-files tests
|
|
|
|
This test runs git ls-files with various unusual or malformed
|
|
command-line arguments.
|
|
'
|
|
|
|
. ./test-lib.sh
|
|
|
|
test_expect_success 'ls-files in empty repository' '
|
|
git ls-files >actual &&
|
|
test_must_be_empty actual
|
|
'
|
|
|
|
test_expect_success 'ls-files with nonexistent path' '
|
|
git ls-files doesnotexist >actual &&
|
|
test_must_be_empty actual
|
|
'
|
|
|
|
test_expect_success 'ls-files with nonsense option' '
|
|
test_expect_code 129 git ls-files --nonsense 2>actual &&
|
|
test_grep "[Uu]sage: git ls-files" actual
|
|
'
|
|
|
|
test_expect_success 'ls-files -h in corrupt repository' '
|
|
mkdir broken &&
|
|
(
|
|
cd broken &&
|
|
git init &&
|
|
>.git/index &&
|
|
git ls-files -h >usage 2>&1
|
|
) &&
|
|
test_grep "[Uu]sage: git ls-files " broken/usage
|
|
'
|
|
|
|
test_expect_success 'ls-files does not crash with -h' '
|
|
git ls-files -h >usage &&
|
|
test_grep "[Uu]sage: git ls-files " usage &&
|
|
nongit git ls-files -h >usage &&
|
|
test_grep "[Uu]sage: git ls-files " usage
|
|
'
|
|
|
|
test_expect_success SYMLINKS 'ls-files with absolute paths to symlinks' '
|
|
mkdir subs &&
|
|
ln -s nosuch link &&
|
|
ln -s ../nosuch subs/link &&
|
|
git add link subs/link &&
|
|
git ls-files -s link subs/link >expect &&
|
|
git ls-files -s "$(pwd)/link" "$(pwd)/subs/link" >actual &&
|
|
test_cmp expect actual &&
|
|
|
|
(
|
|
cd subs &&
|
|
git ls-files -s link >../expect &&
|
|
git ls-files -s "$(pwd)/link" >../actual
|
|
) &&
|
|
test_cmp expect actual
|
|
'
|
|
|
|
test_done
|