Merge branch 'as/check-ignore'
"git check-ignore ." segfaulted, as a function it calls deep in its callchain took a string in the <ptr, length> form but did not stop when given an empty string. * as/check-ignore: name-hash: allow hashing an empty string t0008: document test_expect_success_multi
This commit is contained in:
commit
ef94636a4d
@ -89,7 +89,7 @@ static int check_ignore(const char *prefix, const char **pathspec)
|
|||||||
? strlen(prefix) : 0, path);
|
? strlen(prefix) : 0, path);
|
||||||
full_path = check_path_for_gitlink(full_path);
|
full_path = check_path_for_gitlink(full_path);
|
||||||
die_if_path_beyond_symlink(full_path, prefix);
|
die_if_path_beyond_symlink(full_path, prefix);
|
||||||
if (!seen[i] && path[0]) {
|
if (!seen[i]) {
|
||||||
exclude = last_exclude_matching_path(&check, full_path,
|
exclude = last_exclude_matching_path(&check, full_path,
|
||||||
-1, &dtype);
|
-1, &dtype);
|
||||||
if (exclude) {
|
if (exclude) {
|
||||||
|
@ -24,11 +24,11 @@ static unsigned int hash_name(const char *name, int namelen)
|
|||||||
{
|
{
|
||||||
unsigned int hash = 0x123;
|
unsigned int hash = 0x123;
|
||||||
|
|
||||||
do {
|
while (namelen--) {
|
||||||
unsigned char c = *name++;
|
unsigned char c = *name++;
|
||||||
c = icase_hash(c);
|
c = icase_hash(c);
|
||||||
hash = hash*101 + c;
|
hash = hash*101 + c;
|
||||||
} while (--namelen);
|
}
|
||||||
return hash;
|
return hash;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -75,6 +75,16 @@ test_check_ignore () {
|
|||||||
stderr_empty_on_success "$expect_code"
|
stderr_empty_on_success "$expect_code"
|
||||||
}
|
}
|
||||||
|
|
||||||
|
# Runs the same code with 3 different levels of output verbosity,
|
||||||
|
# expecting success each time. Takes advantage of the fact that
|
||||||
|
# check-ignore --verbose output is the same as normal output except
|
||||||
|
# for the extra first column.
|
||||||
|
#
|
||||||
|
# Arguments:
|
||||||
|
# - (optional) prereqs for this test, e.g. 'SYMLINKS'
|
||||||
|
# - test name
|
||||||
|
# - output to expect from -v / --verbose mode
|
||||||
|
# - code to run (should invoke test_check_ignore)
|
||||||
test_expect_success_multi () {
|
test_expect_success_multi () {
|
||||||
prereq=
|
prereq=
|
||||||
if test $# -eq 4
|
if test $# -eq 4
|
||||||
@ -128,6 +138,7 @@ test_expect_success 'setup' '
|
|||||||
cat <<-\EOF >.gitignore &&
|
cat <<-\EOF >.gitignore &&
|
||||||
one
|
one
|
||||||
ignored-*
|
ignored-*
|
||||||
|
top-level-dir/
|
||||||
EOF
|
EOF
|
||||||
for dir in . a
|
for dir in . a
|
||||||
do
|
do
|
||||||
@ -167,6 +178,10 @@ test_expect_success 'setup' '
|
|||||||
#
|
#
|
||||||
# test invalid inputs
|
# test invalid inputs
|
||||||
|
|
||||||
|
test_expect_success_multi '. corner-case' '' '
|
||||||
|
test_check_ignore . 1
|
||||||
|
'
|
||||||
|
|
||||||
test_expect_success_multi 'empty command line' '' '
|
test_expect_success_multi 'empty command line' '' '
|
||||||
test_check_ignore "" 128 &&
|
test_check_ignore "" 128 &&
|
||||||
stderr_contains "fatal: no path specified"
|
stderr_contains "fatal: no path specified"
|
||||||
|
Loading…
Reference in New Issue
Block a user