t7002: test for not using external grep on skip-worktree paths

Signed-off-by: Nguyễn Thái Ngọc Duy <pclouds@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
diff --git a/builtin-grep.c b/builtin-grep.c
index 25ee75d..04ac60a 100644
--- a/builtin-grep.c
+++ b/builtin-grep.c
@@ -232,6 +232,7 @@
 	int status;
 
 	argv[argc] = NULL;
+	trace_argv_printf(argv, "trace: grep:");
 	pid = fork();
 	if (pid < 0)
 		return pid;
diff --git a/t/t7002-grep.sh b/t/t7002-grep.sh
index 23eeb76..99142fd 100755
--- a/t/t7002-grep.sh
+++ b/t/t7002-grep.sh
@@ -340,4 +340,16 @@
 	test_cmp expected actual
 '
 
+test_expect_success EXTGREP 'external grep is called' '
+	GIT_TRACE=2 git grep foo >/dev/null 2>actual &&
+	grep "trace: grep:.*foo" actual >/dev/null
+'
+
+test_expect_success EXTGREP 'no external grep when skip-worktree entries exist' '
+	git update-index --skip-worktree file &&
+	GIT_TRACE=2 git grep foo >/dev/null 2>actual &&
+	! grep "trace: grep:" actual >/dev/null &&
+	git update-index --no-skip-worktree file
+'
+
 test_done