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

Re: [PATCH] t1507: change quoting in test_did_you_mean to a more general one

From
Junio C Hamano <gitster@pobox.com>
Date
May 9, 2011, 04:40 UTC
Message-ID
<7voc3cqyfp.fsf@alter.siamese.dyndns.org>
In-Reply-To
<4DC3CBEF.6080303@viscovery.net>
Johannes Sixt <j.sixt@viscovery.net> writes:
> - The behavior of quoting at the right of :- when the ${...:-...} exansion
> appears in double-quotes was debated recently at length at the Austin
> group (which revises the POSIX standard). You better move the expansions
> to assignments of temporary variables,...

What alternative semantics do Austin folks have in mind, by the way? Just declare this undefined?

Anyway, let's do this as a future-proofing.  How does this look?
-- >8 --
Subject: t1507: avoid "${parameter<op>'word'}" inside double-quotes

Kacper Kornet noticed that a $variable in "word" in the above construct is not substituted by his pdksh. Modern POSIX compliant shells (e.g. dash, ksh, bash) all seem to interpret POSIX "2.6.2 Parameter Expansion" that says "word shall be subjected to tilde expansion, parameter expansion, command substitution, and arithmetic expansion" in ${parameter<op>word}, to mean that the word is expanded as if it appeared in dq pairs, so if the word were "'$variable'" (sans dq) it would expand to a single quote, the value of the $variable and then a single quote.

Johannes Sixt reports that the behavior of quoting at the right of :- when the ${...:-...} expansion appears in double-quotes was debated recently at length at the Austin group. We can avoid this issue and future-proof the test by a slight rewrite.

Signed-off-by: Junio C Hamano <gitster@pobox.com>
---
 t/t1506-rev-parse-diagnosis.sh |    7 +++++--
 1 files changed, 5 insertions(+), 2 deletions(-)
diff --git a/t/t1506-rev-parse-diagnosis.sh b/t/t1506-rev-parse-diagnosis.sh
index 58575d6..a1081a8 100755
--- a/t/t1506-rev-parse-diagnosis.sh
+++ b/t/t1506-rev-parse-diagnosis.sh
@@ -8,8 +8,11 @@ exec </dev/null
 
 test_did_you_mean ()
 {
-	printf "fatal: Path '$2$3' $4, but not ${5:-'$3'}.\n" >expected &&
-	printf "Did you mean '$1:$2$3'${2:+ aka '$1:./$3'}?\n" >>expected &&
+	sq="'"
+	cat >expected <<-EOF &&
+	fatal: Path '$2$3' $4, but not ${5:-$sq$3$sq}.
+	Did you mean '$1:$2$3'${2:+ aka $sq$1:./$3$sq}?
+	EOF
 	test_cmp expected error
 }
 
Previous: Junio C HamanoNext: Johannes Sixt
Message 9 of 12 in “t1507: change quoting in test_did_you_mean to a more general one”
  1. t1507: change quoting in test_did_you_mean to a more general oneKacper Kornet, May 5, 2011
  2. Junio C HamanoMay 5, 2011
  3. Michael J GruberMay 6, 2011
  4. Kacper KornetMay 6, 2011
  5. Michael J GruberMay 6, 2011
  6. Johannes SixtMay 6, 2011
  7. Michael J GruberMay 6, 2011
  8. Junio C HamanoMay 6, 2011
  9. Junio C HamanoMay 9, 2011
  10. Johannes SixtMay 9, 2011
  11. Junio C HamanoMay 9, 2011
  12. Kacper KornetMay 6, 2011

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.