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

[PATCHv2 04/21] completion tests: consolidate getting path of current working directory

From
SZEDER Gábor <szeder.dev@gmail.com>
Date
Feb 3, 2017, 02:48 UTC
Message-ID
<20170203024829.8071-5-szeder.dev@gmail.com>
In-Reply-To
<20170203024829.8071-1-szeder.dev@gmail.com>

Some tests of the __gitdir() helper function use the $TRASH_DIRECTORY variable in direct path comparisons. In general this should be avoided, because it might contain symbolic links. There happens to be no issues with this here, however, because those tests use $TRASH_DIRECTORY both for specifying the expected result and for specifying input which in turn is just 'echo'ed verbatim.

Other __gitdir() tests ask for the path of the trash directory by running $(pwd -P) in each test, sometimes even twice in a single test.

Run $(pwd) only once at the beginning of the test script to store the path of the trash directory in a variable, and use that variable in all __gitdir() tests.

Signed-off-by: SZEDER Gábor <szeder.dev@gmail.com>
---
 t/t9902-completion.sh | 44 +++++++++++++++++++++-----------------------
 1 file changed, 21 insertions(+), 23 deletions(-)
diff --git a/t/t9902-completion.sh b/t/t9902-completion.sh
index 294a08cfe..030a16e77 100755
--- a/t/t9902-completion.sh
+++ b/t/t9902-completion.sh
@@ -124,15 +124,22 @@ invalid_variable_name='${foo.bar}'
 
 actual="$TRASH_DIRECTORY/actual"
 
+if test_have_prereq MINGW
+then
+	ROOT="$(pwd -W)"
+else
+	ROOT="$(pwd)"
+fi
+
 test_expect_success 'setup for __gitdir tests' '
 	mkdir -p subdir/subsubdir &&
 	git init otherrepo
 '
 
 test_expect_success '__gitdir - from command line (through $__git_dir)' '
-	echo "$TRASH_DIRECTORY/otherrepo/.git" >expected &&
+	echo "$ROOT/otherrepo/.git" >expected &&
 	(
-		__git_dir="$TRASH_DIRECTORY/otherrepo/.git" &&
+		__git_dir="$ROOT/otherrepo/.git" &&
 		__gitdir >"$actual"
 	) &&
 	test_cmp expected "$actual"
@@ -157,7 +164,7 @@ test_expect_success '__gitdir - .git directory in cwd' '
 '
 
 test_expect_success '__gitdir - .git directory in parent' '
-	echo "$(pwd -P)/.git" >expected &&
+	echo "$ROOT/.git" >expected &&
 	(
 		cd subdir/subsubdir &&
 		__gitdir >"$actual"
@@ -175,7 +182,7 @@ test_expect_success '__gitdir - cwd is a .git directory' '
 '
 
 test_expect_success '__gitdir - parent is a .git directory' '
-	echo "$(pwd -P)/.git" >expected &&
+	echo "$ROOT/.git" >expected &&
 	(
 		cd .git/refs/heads &&
 		__gitdir >"$actual"
@@ -184,9 +191,9 @@ test_expect_success '__gitdir - parent is a .git directory' '
 '
 
 test_expect_success '__gitdir - $GIT_DIR set while .git directory in cwd' '
-	echo "$TRASH_DIRECTORY/otherrepo/.git" >expected &&
+	echo "$ROOT/otherrepo/.git" >expected &&
 	(
-		GIT_DIR="$TRASH_DIRECTORY/otherrepo/.git" &&
+		GIT_DIR="$ROOT/otherrepo/.git" &&
 		export GIT_DIR &&
 		__gitdir >"$actual"
 	) &&
@@ -194,9 +201,9 @@ test_expect_success '__gitdir - $GIT_DIR set while .git directory in cwd' '
 '
 
 test_expect_success '__gitdir - $GIT_DIR set while .git directory in parent' '
-	echo "$TRASH_DIRECTORY/otherrepo/.git" >expected &&
+	echo "$ROOT/otherrepo/.git" >expected &&
 	(
-		GIT_DIR="$TRASH_DIRECTORY/otherrepo/.git" &&
+		GIT_DIR="$ROOT/otherrepo/.git" &&
 		export GIT_DIR &&
 		cd subdir &&
 		__gitdir >"$actual"
@@ -206,24 +213,15 @@ test_expect_success '__gitdir - $GIT_DIR set while .git directory in parent' '
 
 test_expect_success '__gitdir - non-existing $GIT_DIR' '
 	(
-		GIT_DIR="$TRASH_DIRECTORY/non-existing" &&
+		GIT_DIR="$ROOT/non-existing" &&
 		export GIT_DIR &&
 		test_must_fail __gitdir
 	)
 '
 
-function pwd_P_W () {
-	if test_have_prereq MINGW
-	then
-		pwd -W
-	else
-		pwd -P
-	fi
-}
-
 test_expect_success '__gitdir - gitfile in cwd' '
-	echo "$(pwd_P_W)/otherrepo/.git" >expected &&
-	echo "gitdir: $(pwd_P_W)/otherrepo/.git" >subdir/.git &&
+	echo "$ROOT/otherrepo/.git" >expected &&
+	echo "gitdir: $ROOT/otherrepo/.git" >subdir/.git &&
 	test_when_finished "rm -f subdir/.git" &&
 	(
 		cd subdir &&
@@ -233,8 +231,8 @@ test_expect_success '__gitdir - gitfile in cwd' '
 '
 
 test_expect_success '__gitdir - gitfile in parent' '
-	echo "$(pwd_P_W)/otherrepo/.git" >expected &&
-	echo "gitdir: $(pwd_P_W)/otherrepo/.git" >subdir/.git &&
+	echo "$ROOT/otherrepo/.git" >expected &&
+	echo "gitdir: $ROOT/otherrepo/.git" >subdir/.git &&
 	test_when_finished "rm -f subdir/.git" &&
 	(
 		cd subdir/subsubdir &&
@@ -244,7 +242,7 @@ test_expect_success '__gitdir - gitfile in parent' '
 '
 
 test_expect_success SYMLINKS '__gitdir - resulting path avoids symlinks' '
-	echo "$(pwd -P)/otherrepo/.git" >expected &&
+	echo "$ROOT/otherrepo/.git" >expected &&
 	mkdir otherrepo/dir &&
 	test_when_finished "rm -rf otherrepo/dir" &&
 	ln -s otherrepo/dir link &&
-- 
2.11.0.555.g967c1bcb3
Previous: SZEDER GáborNext: SZEDER Gábor
Message 3 of 28 in “[PATCHv2 00/21] completion: various __gitdir()-related improvements”
  1. SZEDER GáborFeb 3, 2017
  2. 02/21 completion tests: don't add test cruft to the test repositorySZEDER Gábor, Feb 3, 2017
  3. 04/21 completion tests: consolidate getting path of current working directorySZEDER Gábor, Feb 3, 2017
  4. 05/21 completion tests: check __gitdir()'s output in the error casesSZEDER Gábor, Feb 3, 2017
  5. 03/21 completion tests: make the $cur variable local to the test helper functionsSZEDER Gábor, Feb 3, 2017
  6. 11/21 completion: don't list 'HEAD' when trying refs completion outside of a repoSZEDER Gábor, Feb 3, 2017
  7. 12/21 completion: list short refs from a remote given as a URLSZEDER Gábor, Feb 3, 2017
  8. 07/21 completion: ensure that the repository path given on the command line existsSZEDER Gábor, Feb 3, 2017
  9. 16/21 completion: respect 'git -C <path>'SZEDER Gábor, Feb 3, 2017
  10. 08/21 completion: fix most spots not respecting 'git --git-dir=<path>'SZEDER Gábor, Feb 3, 2017
  11. 15/21 rev-parse: add '--absolute-git-dir' optionSZEDER Gábor, Feb 3, 2017
  12. 18/21 completion: consolidate silencing errors from git commandsSZEDER Gábor, Feb 3, 2017
  13. 19/21 completion: don't guard git executions with __gitdir()SZEDER Gábor, Feb 3, 2017
  14. 10/21 completion: list refs from remote when remote's name matches a directorySZEDER Gábor, Feb 3, 2017
  15. 17/21 completion: don't use __gitdir() for git commandsSZEDER Gábor, Feb 3, 2017
  16. completion: restore removed line continuating backslashSZEDER Gábor, Feb 13, 2017
  17. Junio C HamanoFeb 13, 2017
  18. SZEDER GáborFeb 15, 2017
  19. Junio C HamanoFeb 15, 2017
  20. SZEDER GáborFeb 15, 2017
  21. 13/21 completion: don't offer commands when 'git --opt' needs an argumentSZEDER Gábor, Feb 3, 2017
  22. 20/21 completion: extract repository discovery from __gitdir()SZEDER Gábor, Feb 3, 2017
  23. 21/21 completion: cache the path to the repositorySZEDER Gábor, Feb 3, 2017
  24. 09/21 completion: respect 'git --git-dir=<path>' when listing remote refsSZEDER Gábor, Feb 3, 2017
  25. 14/21 completion: fix completion after 'git -C <path>'SZEDER Gábor, Feb 3, 2017
  26. 06/21 completion tests: add tests for the __git_refs() helper functionSZEDER Gábor, Feb 3, 2017
  27. 01/21 completion: improve __git_refs()'s in-code documentationSZEDER Gábor, Feb 3, 2017
  28. Junio C HamanoFeb 6, 2017

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.