diff mbox series

[v2,3/4] t4054: test diff --no-index with stdin

Message ID 1c7db4dbe26715912672630c1a5659591931cb2d.1688586536.git.phillip.wood@dunelm.org.uk (mailing list archive)
State Accepted
Commit df521462f01b61314c9c18a4b58a53db0cd7bf3c
Headers show
Series diff --no-index: support reading from named pipes | expand

Commit Message

Phillip Wood July 5, 2023, 7:49 p.m. UTC
From: Phillip Wood <phillip.wood@dunelm.org.uk>

"git diff --no-index" supports reading from stdin with the path "-".
There is no test coverage for this so add a regression test before
changing the code in the next commit.

Signed-off-by: Phillip Wood <phillip.wood@dunelm.org.uk>
---
 t/t4053-diff-no-index.sh | 19 +++++++++++++++++++
 1 file changed, 19 insertions(+)

Comments

Junio C Hamano July 5, 2023, 9:22 p.m. UTC | #1
Phillip Wood <phillip.wood123@gmail.com> writes:

> +	cat >expect <<-EOF &&
> +	diff --git a/- b/a/1
> +	index $ZERO_OID..$(git hash-object --stdin <a/1) 100644
> +	--- a/-
> +	+++ b/a/1
> +	@@ -1 +1 @@
> +	-x
> +	+1
> +	EOF
> +
> +	test_write_lines x | test_expect_code 1 \
> +		git -c core.abbrev=no diff --no-index -- - a/1 >actual &&

Or "git diff --no-index --full-index -- - a/1", which looks somewhat
odd but may be correct and a bit shorter ;-)

Not a suggestion to use --full-index instead of core.abbrev; both
are equally valid.

> +	test_cmp expect actual &&
> +
> +	test_write_lines 1 | git diff --no-index -- a/1 - >actual &&
> +	test_must_be_empty actual
> +'

Good.

>  test_expect_success 'diff --no-index refuses to diff stdin and a directory' '
>  	test_must_fail git diff --no-index -- - a </dev/null 2>err &&
>  	grep "fatal: cannot compare stdin to a directory" err
diff mbox series

Patch

diff --git a/t/t4053-diff-no-index.sh b/t/t4053-diff-no-index.sh
index 5bfb282e98..4870443609 100755
--- a/t/t4053-diff-no-index.sh
+++ b/t/t4053-diff-no-index.sh
@@ -205,6 +205,25 @@  test_expect_success POSIXPERM,SYMLINKS 'diff --no-index normalizes: mode not lik
 	test_cmp expected actual
 '
 
+test_expect_success "diff --no-index treats '-' as stdin" '
+	cat >expect <<-EOF &&
+	diff --git a/- b/a/1
+	index $ZERO_OID..$(git hash-object --stdin <a/1) 100644
+	--- a/-
+	+++ b/a/1
+	@@ -1 +1 @@
+	-x
+	+1
+	EOF
+
+	test_write_lines x | test_expect_code 1 \
+		git -c core.abbrev=no diff --no-index -- - a/1 >actual &&
+	test_cmp expect actual &&
+
+	test_write_lines 1 | git diff --no-index -- a/1 - >actual &&
+	test_must_be_empty actual
+'
+
 test_expect_success 'diff --no-index refuses to diff stdin and a directory' '
 	test_must_fail git diff --no-index -- - a </dev/null 2>err &&
 	grep "fatal: cannot compare stdin to a directory" err