git/list[1] front-page[2] threads[3] people[4] search[5] about
 

[PATCH v2] t1517: more coverage for commands that work without repository

From
Junio C Hamano <gitster@pobox.com>
Date
May 31, 2024, 08:43 UTC
Message-ID
<xmqqwmnajrrk.fsf@gitster.g>
In-Reply-To
<xmqqbk4np77d.fsf@gitster.g>

While most of the commands in Git suite are designed to do useful things in Git repositories, some commands are also usable outside any repository. Building on top of an earlier work abece6e9 (t1517: test commands that are designed to be run outside repository, 2024-05-20) that adds tests for such commands, let's give coverage to some more commands.

This patch covers commands whose code has hits for
    $ git grep setup_git_directory_gently

and passes a pointer to nongit_ok variable it uses to allow it to run outside a Git repository, but mostly they are tested only to see that they start up (as opposed to dying with "not in a git repository" complaint). We may want to update them to actually do something useful later, but this would at least help us catch regressions by mistake.

Signed-off-by: Junio C Hamano <gitster@pobox.com>
---
 * The previous iteration was buggy when the repository was using
   sha256, as the nongit invocation of "git diff" will use sha1.
 t/t1517-outside-repo.sh | 52 +++++++++++++++++++++++++++++++++++++++++
 1 file changed, 52 insertions(+)
diff --git a/t/t1517-outside-repo.sh b/t/t1517-outside-repo.sh
index 557808ffa7..990a036582 100755
--- a/t/t1517-outside-repo.sh
+++ b/t/t1517-outside-repo.sh
@@ -56,4 +56,56 @@ test_expect_success 'grep outside repository' '
 	test_cmp expect actual
 '
 
+test_expect_success 'imap-send outside repository' '
+	test_config_global imap.host imaps://localhost &&
+	test_config_global imap.folder Drafts &&
+
+	echo nothing to send >expect &&
+	test_must_fail git imap-send -v </dev/null 2>actual &&
+	test_cmp expect actual &&
+
+	(
+		cd non-repo &&
+		test_must_fail git imap-send -v </dev/null 2>../actual
+	) &&
+	test_cmp expect actual
+'
+
+test_expect_success 'check-ref-format outside repository' '
+	git check-ref-format --branch refs/heads/xyzzy >expect &&
+	nongit git check-ref-format --branch refs/heads/xyzzy >actual &&
+	test_cmp expect actual
+'
+
+test_expect_success 'diff outside repository' '
+	echo one >one &&
+	echo two >two &&
+	test_must_fail git diff --no-index one two >expect.raw &&
+	(
+		cd non-repo &&
+		cp ../one . &&
+		cp ../two . &&
+		test_must_fail git diff one two >../actual.raw
+	) &&
+	# outside repository diff falls back to SHA-1 but
+	# GIT_DEFAULT_HASH may be set to sha256 on the in-repo side.
+	sed -e "/^index /d" expect.raw >expect &&
+	sed -e "/^index /d" actual.raw >actual &&
+	test_cmp expect actual
+'
+
+test_expect_success 'stripspace outside repository' '
+	nongit git stripspace -s </dev/null
+'
+
+test_expect_success 'remote-http outside repository' '
+	test_must_fail git remote-http 2>actual &&
+	test_grep "^error: remote-curl" actual &&
+	(
+		cd non-repo &&
+		test_must_fail git remote-http 2>../actual
+	) &&
+	test_grep "^error: remote-curl" actual
+'
+
 test_done

Interdiff against v1:
  diff --git a/t/t1517-outside-repo.sh b/t/t1517-outside-repo.sh
  index b77017ac5f..990a036582 100755
  --- a/t/t1517-outside-repo.sh
  +++ b/t/t1517-outside-repo.sh
  @@ -80,13 +80,17 @@ test_expect_success 'check-ref-format outside repository' '
   test_expect_success 'diff outside repository' '
   	echo one >one &&
   	echo two >two &&
  -	test_must_fail git diff --no-index one two >expect &&
  +	test_must_fail git diff --no-index one two >expect.raw &&
   	(
   		cd non-repo &&
   		cp ../one . &&
   		cp ../two . &&
  -		test_must_fail git diff one two >../actual
  +		test_must_fail git diff one two >../actual.raw
   	) &&
  +	# outside repository diff falls back to SHA-1 but
  +	# GIT_DEFAULT_HASH may be set to sha256 on the in-repo side.
  +	sed -e "/^index /d" expect.raw >expect &&
  +	sed -e "/^index /d" actual.raw >actual &&
   	test_cmp expect actual
   '
   
-- 
2.45.2-584-g20241e85ff
Previous: Junio C HamanoNext: Patrick Steinhardt
Message 2 of 4 in “t1517: more coverage for commands that work without repository”
  1. t1517: more coverage for commands that work without repositoryJunio C Hamano, May 30, 2024
  2. t1517: more coverage for commands that work without repositoryJunio C Hamano, May 31, 2024
  3. Patrick SteinhardtMay 31, 2024
  4. Junio C HamanoMay 31, 2024

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.