git@vger.kernel.org list mirror (unofficial, one of many)
 help / color / mirror / code / Atom feed
* [PATCH 0/3] tests: fix tests broken if a " " is in the checkout dir's path
@ 2022-06-21 22:21 Ævar Arnfjörð Bjarmason
  2022-06-21 22:21 ` [PATCH 1/3] tests: add missing double quotes to included library paths Ævar Arnfjörð Bjarmason
                   ` (2 more replies)
  0 siblings, 3 replies; 7+ messages in thread
From: Ævar Arnfjörð Bjarmason @ 2022-06-21 22:21 UTC (permalink / raw)
  To: git
  Cc: Junio C Hamano, Derrick Stolee, rsbecker, SZEDER Gábor,
	Johannes Sixt, Jeff King, Ævar Arnfjörð Bjarmason

The 1/3 here fixes regressions in v2.37.0-rc0, and with 2-3/3 the test
suite passes with the "git" directory named e.g. "git ~ @ checkout"
when running:

	make NO_PERL=Y test

The "NO_PERL=Y" being because several git-svn tests still fail, for
reasons I haven't looked into.

Ævar Arnfjörð Bjarmason (3):
  tests: add missing double quotes to included library paths
  test-lib.sh: fix prepend_var() quoting issue
  config tests: fix harmless but broken "rm -r" cleanup

 t/t1300-config.sh         | 2 +-
 t/t3700-add.sh            | 2 +-
 t/t3903-stash.sh          | 2 +-
 t/t7609-mergetool--lib.sh | 2 +-
 t/test-lib.sh             | 4 ++--
 5 files changed, 6 insertions(+), 6 deletions(-)

-- 
2.36.1.1239.gfba91521d90


^ permalink raw reply	[flat|nested] 7+ messages in thread

* [PATCH 1/3] tests: add missing double quotes to included library paths
  2022-06-21 22:21 [PATCH 0/3] tests: fix tests broken if a " " is in the checkout dir's path Ævar Arnfjörð Bjarmason
@ 2022-06-21 22:21 ` Ævar Arnfjörð Bjarmason
  2022-06-21 22:42   ` Junio C Hamano
  2022-06-21 22:21 ` [PATCH 2/3] test-lib.sh: fix prepend_var() quoting issue Ævar Arnfjörð Bjarmason
  2022-06-21 22:21 ` [PATCH 3/3] config tests: fix harmless but broken "rm -r" cleanup Ævar Arnfjörð Bjarmason
  2 siblings, 1 reply; 7+ messages in thread
From: Ævar Arnfjörð Bjarmason @ 2022-06-21 22:21 UTC (permalink / raw)
  To: git
  Cc: Junio C Hamano, Derrick Stolee, rsbecker, SZEDER Gábor,
	Johannes Sixt, Jeff King, Ævar Arnfjörð Bjarmason

Fix two inclusions added in d42bab442d7 (core.fsyncmethod: tests for
batch mode, 2022-04-04) that needed to be quoted, and the same sort of
issue in a242c150ebb (vimdiff: integrate layout tests in the unit
tests framework ('t' folder), 2022-03-30). Both were first released
with v2.37.0-rc0.

Signed-off-by: Ævar Arnfjörð Bjarmason <avarab@gmail.com>
---
 t/t3700-add.sh            | 2 +-
 t/t3903-stash.sh          | 2 +-
 t/t7609-mergetool--lib.sh | 2 +-
 3 files changed, 3 insertions(+), 3 deletions(-)

diff --git a/t/t3700-add.sh b/t/t3700-add.sh
index 8979c8a5f03..8689b48589c 100755
--- a/t/t3700-add.sh
+++ b/t/t3700-add.sh
@@ -8,7 +8,7 @@ test_description='Test of git add, including the -- option.'
 TEST_PASSES_SANITIZE_LEAK=true
 . ./test-lib.sh
 
-. $TEST_DIRECTORY/lib-unique-files.sh
+. "$TEST_DIRECTORY"/lib-unique-files.sh
 
 # Test the file mode "$1" of the file "$2" in the index.
 test_mode_in_index () {
diff --git a/t/t3903-stash.sh b/t/t3903-stash.sh
index 20e94881964..2a4c3fd61c0 100755
--- a/t/t3903-stash.sh
+++ b/t/t3903-stash.sh
@@ -9,7 +9,7 @@ GIT_TEST_DEFAULT_INITIAL_BRANCH_NAME=main
 export GIT_TEST_DEFAULT_INITIAL_BRANCH_NAME
 
 . ./test-lib.sh
-. $TEST_DIRECTORY/lib-unique-files.sh
+. "$TEST_DIRECTORY"/lib-unique-files.sh
 
 test_expect_success 'usage on cmd and subcommand invalid option' '
 	test_expect_code 129 git stash --invalid-option 2>usage &&
diff --git a/t/t7609-mergetool--lib.sh b/t/t7609-mergetool--lib.sh
index d848fe6442b..330d6d603d7 100755
--- a/t/t7609-mergetool--lib.sh
+++ b/t/t7609-mergetool--lib.sh
@@ -7,7 +7,7 @@ Testing basic merge tools options'
 . ./test-lib.sh
 
 test_expect_success 'mergetool --tool=vimdiff creates the expected layout' '
-	. $GIT_BUILD_DIR/mergetools/vimdiff &&
+	. "$GIT_BUILD_DIR"/mergetools/vimdiff &&
 	run_unit_tests
 '
 
-- 
2.36.1.1239.gfba91521d90


^ permalink raw reply	[flat|nested] 7+ messages in thread

* [PATCH 2/3] test-lib.sh: fix prepend_var() quoting issue
  2022-06-21 22:21 [PATCH 0/3] tests: fix tests broken if a " " is in the checkout dir's path Ævar Arnfjörð Bjarmason
  2022-06-21 22:21 ` [PATCH 1/3] tests: add missing double quotes to included library paths Ævar Arnfjörð Bjarmason
@ 2022-06-21 22:21 ` Ævar Arnfjörð Bjarmason
  2022-06-21 22:21 ` [PATCH 3/3] config tests: fix harmless but broken "rm -r" cleanup Ævar Arnfjörð Bjarmason
  2 siblings, 0 replies; 7+ messages in thread
From: Ævar Arnfjörð Bjarmason @ 2022-06-21 22:21 UTC (permalink / raw)
  To: git
  Cc: Junio C Hamano, Derrick Stolee, rsbecker, SZEDER Gábor,
	Johannes Sixt, Jeff King, Ævar Arnfjörð Bjarmason

Fix a quoting issue in the function introduced in
b9638d7286f (test-lib: make $GIT_BUILD_DIR an absolute path,
2022-02-27), running the test suite where the git checkout was on a
path with e.g. a space in it would fail.

Signed-off-by: Ævar Arnfjörð Bjarmason <avarab@gmail.com>
---
 t/test-lib.sh | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/t/test-lib.sh b/t/test-lib.sh
index 55857af601b..8cabb4d10f9 100644
--- a/t/test-lib.sh
+++ b/t/test-lib.sh
@@ -57,14 +57,14 @@ fi
 #
 #	prepend_var VAR : VALUE
 prepend_var () {
-	eval "$1=$3\${$1:+${3:+$2}\$$1}"
+	eval "$1=\"$3\${$1:+${3:+$2}\$$1}\""
 }
 
 # If [AL]SAN is in effect we want to abort so that we notice
 # problems. The GIT_SAN_OPTIONS variable can be used to set common
 # defaults shared between [AL]SAN_OPTIONS.
 prepend_var GIT_SAN_OPTIONS : abort_on_error=1
-prepend_var GIT_SAN_OPTIONS : strip_path_prefix=\"$GIT_BUILD_DIR/\"
+prepend_var GIT_SAN_OPTIONS : strip_path_prefix="$GIT_BUILD_DIR/"
 
 # If we were built with ASAN, it may complain about leaks
 # of program-lifetime variables. Disable it by default to lower
-- 
2.36.1.1239.gfba91521d90


^ permalink raw reply	[flat|nested] 7+ messages in thread

* [PATCH 3/3] config tests: fix harmless but broken "rm -r" cleanup
  2022-06-21 22:21 [PATCH 0/3] tests: fix tests broken if a " " is in the checkout dir's path Ævar Arnfjörð Bjarmason
  2022-06-21 22:21 ` [PATCH 1/3] tests: add missing double quotes to included library paths Ævar Arnfjörð Bjarmason
  2022-06-21 22:21 ` [PATCH 2/3] test-lib.sh: fix prepend_var() quoting issue Ævar Arnfjörð Bjarmason
@ 2022-06-21 22:21 ` Ævar Arnfjörð Bjarmason
  2022-06-21 22:34   ` Junio C Hamano
  2 siblings, 1 reply; 7+ messages in thread
From: Ævar Arnfjörð Bjarmason @ 2022-06-21 22:21 UTC (permalink / raw)
  To: git
  Cc: Junio C Hamano, Derrick Stolee, rsbecker, SZEDER Gábor,
	Johannes Sixt, Jeff King, Ævar Arnfjörð Bjarmason

The "test_when_finished" cleanup phase added in 4179b4897f2 (config:
allow overriding of global and system configuration, 2021-04-19) has
never worked as intended, firstly the ".config/git" is a directory, so
we'd need the "-r" flag, but more importantly the $HOME variable
wasn't properly quoted.

We'd thus end up trying to remove the "trash" part of "trash
directory", which wouldn't fail with "-f", since "rm -f" won't fail on
non-existing files.

It's possible that this would have caused an actual failure if someone
had a $HOME with a space character in it, such that our "rm -f" would
fail to remove an existing directory, but in practice that probably
never happened.

Signed-off-by: Ævar Arnfjörð Bjarmason <avarab@gmail.com>
---
 t/t1300-config.sh | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/t/t1300-config.sh b/t/t1300-config.sh
index d3d9adbb3db..da4d03813f1 100755
--- a/t/t1300-config.sh
+++ b/t/t1300-config.sh
@@ -2083,7 +2083,7 @@ test_expect_success '--show-scope with --show-origin' '
 '
 
 test_expect_success 'override global and system config' '
-	test_when_finished rm -f "$HOME"/.config/git &&
+	test_when_finished "rm -rf \"$HOME\"/.config/git" &&
 
 	cat >"$HOME"/.gitconfig <<-EOF &&
 	[home]
-- 
2.36.1.1239.gfba91521d90


^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: [PATCH 3/3] config tests: fix harmless but broken "rm -r" cleanup
  2022-06-21 22:21 ` [PATCH 3/3] config tests: fix harmless but broken "rm -r" cleanup Ævar Arnfjörð Bjarmason
@ 2022-06-21 22:34   ` Junio C Hamano
  2022-06-22  5:37     ` Junio C Hamano
  0 siblings, 1 reply; 7+ messages in thread
From: Junio C Hamano @ 2022-06-21 22:34 UTC (permalink / raw)
  To: Ævar Arnfjörð Bjarmason
  Cc: git, Derrick Stolee, rsbecker, SZEDER Gábor, Johannes Sixt,
	Jeff King

Ævar Arnfjörð Bjarmason  <avarab@gmail.com> writes:

>  test_expect_success 'override global and system config' '
> -	test_when_finished rm -f "$HOME"/.config/git &&
> +	test_when_finished "rm -rf \"$HOME\"/.config/git" &&

As this string is evaled, isn't it safer to defer dereferencing the
environment variable at the runtime by quoting the dollar-sign, too?

I.e.

	test_when_finished rm -rf \"\$HOME\"/.config/git &&

or something?

^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: [PATCH 1/3] tests: add missing double quotes to included library paths
  2022-06-21 22:21 ` [PATCH 1/3] tests: add missing double quotes to included library paths Ævar Arnfjörð Bjarmason
@ 2022-06-21 22:42   ` Junio C Hamano
  0 siblings, 0 replies; 7+ messages in thread
From: Junio C Hamano @ 2022-06-21 22:42 UTC (permalink / raw)
  To: Ævar Arnfjörð Bjarmason
  Cc: git, Derrick Stolee, rsbecker, SZEDER Gábor, Johannes Sixt,
	Jeff King

Ævar Arnfjörð Bjarmason  <avarab@gmail.com> writes:

> Fix two inclusions added in d42bab442d7 (core.fsyncmethod: tests for
> batch mode, 2022-04-04) that needed to be quoted, and the same sort of
> issue in a242c150ebb (vimdiff: integrate layout tests in the unit
> tests framework ('t' folder), 2022-03-30). Both were first released
> with v2.37.0-rc0.

Describe what symptom you may see if it is left unfixed.  IOW, if we
consider that having a whitespace in the path to the build directory
is just as crazy as having a single-quote, it would make this patch
unnecessary,  Make it easier for readers to decide, by saying
something like

	As TEST_DIRECTORY is (typically) path to t/ in the extracted
	source tree, it can have funny characters like $IFS whitespace
	in it.

at least.

Thanks.

> Signed-off-by: Ævar Arnfjörð Bjarmason <avarab@gmail.com>
> ---
>  t/t3700-add.sh            | 2 +-
>  t/t3903-stash.sh          | 2 +-
>  t/t7609-mergetool--lib.sh | 2 +-
>  3 files changed, 3 insertions(+), 3 deletions(-)
>
> diff --git a/t/t3700-add.sh b/t/t3700-add.sh
> index 8979c8a5f03..8689b48589c 100755
> --- a/t/t3700-add.sh
> +++ b/t/t3700-add.sh
> @@ -8,7 +8,7 @@ test_description='Test of git add, including the -- option.'
>  TEST_PASSES_SANITIZE_LEAK=true
>  . ./test-lib.sh
>  
> -. $TEST_DIRECTORY/lib-unique-files.sh
> +. "$TEST_DIRECTORY"/lib-unique-files.sh
>  
>  # Test the file mode "$1" of the file "$2" in the index.
>  test_mode_in_index () {
> diff --git a/t/t3903-stash.sh b/t/t3903-stash.sh
> index 20e94881964..2a4c3fd61c0 100755
> --- a/t/t3903-stash.sh
> +++ b/t/t3903-stash.sh
> @@ -9,7 +9,7 @@ GIT_TEST_DEFAULT_INITIAL_BRANCH_NAME=main
>  export GIT_TEST_DEFAULT_INITIAL_BRANCH_NAME
>  
>  . ./test-lib.sh
> -. $TEST_DIRECTORY/lib-unique-files.sh
> +. "$TEST_DIRECTORY"/lib-unique-files.sh
>  
>  test_expect_success 'usage on cmd and subcommand invalid option' '
>  	test_expect_code 129 git stash --invalid-option 2>usage &&
> diff --git a/t/t7609-mergetool--lib.sh b/t/t7609-mergetool--lib.sh
> index d848fe6442b..330d6d603d7 100755
> --- a/t/t7609-mergetool--lib.sh
> +++ b/t/t7609-mergetool--lib.sh
> @@ -7,7 +7,7 @@ Testing basic merge tools options'
>  . ./test-lib.sh
>  
>  test_expect_success 'mergetool --tool=vimdiff creates the expected layout' '
> -	. $GIT_BUILD_DIR/mergetools/vimdiff &&
> +	. "$GIT_BUILD_DIR"/mergetools/vimdiff &&
>  	run_unit_tests
>  '

^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: [PATCH 3/3] config tests: fix harmless but broken "rm -r" cleanup
  2022-06-21 22:34   ` Junio C Hamano
@ 2022-06-22  5:37     ` Junio C Hamano
  0 siblings, 0 replies; 7+ messages in thread
From: Junio C Hamano @ 2022-06-22  5:37 UTC (permalink / raw)
  To: Ævar Arnfjörð Bjarmason
  Cc: git, Derrick Stolee, rsbecker, SZEDER Gábor, Johannes Sixt,
	Jeff King

Junio C Hamano <gitster@pobox.com> writes:

> Ævar Arnfjörð Bjarmason  <avarab@gmail.com> writes:
>
>>  test_expect_success 'override global and system config' '
>> -	test_when_finished rm -f "$HOME"/.config/git &&
>> +	test_when_finished "rm -rf \"$HOME\"/.config/git" &&
>
> As this string is evaled, isn't it safer to defer dereferencing the
> environment variable at the runtime by quoting the dollar-sign, too?
>
> I.e.
>
> 	test_when_finished rm -rf \"\$HOME\"/.config/git &&
>
> or something?

It probably would matter if $HOME had a double-quote in it, I think

^ permalink raw reply	[flat|nested] 7+ messages in thread

end of thread, other threads:[~2022-06-22  5:37 UTC | newest]

Thread overview: 7+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2022-06-21 22:21 [PATCH 0/3] tests: fix tests broken if a " " is in the checkout dir's path Ævar Arnfjörð Bjarmason
2022-06-21 22:21 ` [PATCH 1/3] tests: add missing double quotes to included library paths Ævar Arnfjörð Bjarmason
2022-06-21 22:42   ` Junio C Hamano
2022-06-21 22:21 ` [PATCH 2/3] test-lib.sh: fix prepend_var() quoting issue Ævar Arnfjörð Bjarmason
2022-06-21 22:21 ` [PATCH 3/3] config tests: fix harmless but broken "rm -r" cleanup Ævar Arnfjörð Bjarmason
2022-06-21 22:34   ` Junio C Hamano
2022-06-22  5:37     ` Junio C Hamano

Code repositories for project(s) associated with this inbox:

	https://80x24.org/mirrors/git.git

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).