From: Junio C Hamano Date: Wed, 22 Oct 2025 19:53:58 GMT Subject: Re: [PATCH v4] diff: stop output garbled message in dry run mode Message-ID: In-Reply-To: <20251019163024.18939-1-yldhome2d2@gmail.com> Lidong Yan writes: > +test_expect_success 'diff -I: ignore all content changes' ' > + test_when_finished "git rm -f file1 file2 file3" && > + : >file1 && > + git add file1 && > + : >file2 && > + git add file2 && > + : >file3 && > + git add file3 && > + > + rm -f file1 file2 && > + mkdir file2 && > + echo "A" >file3 && > + A_hash=$(git hash-object -w file3) && > + echo "B" >file3 && > + B_hash=$(git hash-object -w file3) && > + cat <<-EOF | git update-index --index-info && > + 100644 $A_hash 1 file3 > + 100644 $B_hash 2 file3 > + EOF > + > + test_diff_no_content_changes () { > + git diff $1 --ignore-blank-lines -I".*" >actual && > + test_line_count = 3 actual && > + test_grep "file1" actual && > + test_grep "file2" actual && > + test_grep "file3" actual && I am puzzled by this part of the new test. > + test_grep ! "diff --git" actual The "test_grep !" is to make sure we do not leak the "patch" output run in diff_flush_patch_quietly(), which is understandable, but in the new world order that even raw, name-only, and name-status honor "diff-from-contents" since b55e6d36 (diff: ensure consistent diff behavior with ignore options, 2025-08-08), shouldn't we expect empty "actual" that does not say file1/file2/file3 in it? > + } && > + test_diff_no_content_changes "--raw" && > + test_diff_no_content_changes "--name-only" && > + test_diff_no_content_changes "--name-status" && > + > + : >actual && > + test_must_fail git diff --quiet -I".*" >actual && > + test_must_be_empty actual > +' > + > # check_prefix > # check only lines with paths to avoid dependency on exact oid/contents > check_prefix () {