There is no guarantee that strbuf_read_file must error out for
directories.  On some operating systems (e.g., Debian GNU/kFreeBSD
wheezy), reading a directory gives its raw content:

        $ head -c5 < / | cat -A

As a result, 'git diff -O/' succeeds instead of erroring out on
these systems, causing t4056.5 "orderfile is a directory" to fail.

On some weird OS it might even make sense to pass a directory to the
-O option and this is not a common user mistake that needs catching.
Remove the test.

Signed-off-by: Jonathan Nieder <>

t4056 is failing on systems using glibc with the kernel of FreeBSD[1]:

| expecting success: 
|       test_must_fail git diff -O/ --name-only HEAD^..HEAD
| a.h
| b.c
| c/Makefile
| d.txt
| test_must_fail: command succeeded: git diff -O/ --name-only HEAD^..HEAD
| not ok 5 - orderfile is a directory

How about this patch?



 t/ | 4 ----
 1 file changed, 4 deletions(-)

diff --git a/t/ b/t/
index 1ddd226..9e2b29e 100755
--- a/t/
+++ b/t/
@@ -68,10 +68,6 @@ test_expect_success POSIXPERM,SANITY 'unreadable orderfile' '
        test_must_fail git diff -Ounreadable_file --name-only HEAD^..HEAD
-test_expect_success 'orderfile is a directory' '
-       test_must_fail git diff -O/ --name-only HEAD^..HEAD
 for i in 1 2
        test_expect_success "orderfile using option ($i)" '

To unsubscribe from this list: send the line "unsubscribe git" in
the body of a message to
More majordomo info at

Reply via email to