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

jn/apply-filename-with-sp (Re: What's cooking in git.git (Aug 2010, #02; Wed, 11))

From
Jonathan Nieder <jrnieder@gmail.com>
Date
Aug 12, 2010, 22:40 UTC
Message-ID
<20100812224044.GK2029@burratino>
In-Reply-To
<4C63BD9B.6000608@viscovery.net>
Johannes Sixt wrote:
> Am 8/12/2010 1:35, schrieb Junio C Hamano:
Show 10 quoted lines
>> * jn/apply-filename-with-sp (2010-07-23) 4 commits
>>  - apply: Handle traditional patches with space in filename
>>  - t4135 (apply): use expand instead of pr for portability
>>  - tests: Test how well "git apply" copes with weird filenames
>>  - apply: Split quoted filename handling into new function
>> 
>> Looked Ok.  Will merge to 'next'.
>
> The test cases that work with files with tabs must have a prerequisite;
> see t3600-rm.sh.
Would this work?
-- 8< --
Subject: t4135 (apply): filenames with tabs are not usable on NTFS

Move the code setting up the FUNNYNAMES prerequisite from v1.3.0-rc1~67 (workaround fat/ntfs deficiences for t3600-rm.sh, 2006-03-03) to test-lib and use it.

Reported-by: Johannes Sixt <j6t@kdbg.org>
Signed-off-by: Jonathan Nieder <jrnieder@gmail.com>
---
 t/t3600-rm.sh                    |   11 +++--------
 t/t4135-apply-weird-filenames.sh |   17 +++++++++--------
 t/test-lib.sh                    |   11 +++++++++++
 3 files changed, 23 insertions(+), 16 deletions(-)
diff --git a/t/t3600-rm.sh b/t/t3600-rm.sh
index b26cabd..a60b7c9 100755
--- a/t/t3600-rm.sh
+++ b/t/t3600-rm.sh
@@ -14,15 +14,10 @@ test_expect_success \
      git add -- foo bar baz 'space embedded' -q &&
      git commit -m 'add normal files'"
 
-if touch -- 'tab	embedded' 'newline
-embedded' 2>/dev/null
-then
-	test_set_prereq FUNNYNAMES
-else
-	say 'Your filesystem does not allow tabs in filenames.'
-fi
-
 test_expect_success FUNNYNAMES 'add files with funny names' "
+     >'newline
+embedded' &&
+     >'tab	embedded' &&
      git add -- 'tab	embedded' 'newline
 embedded' &&
      git commit -m 'add files with tabs and newlines'
diff --git a/t/t4135-apply-weird-filenames.sh b/t/t4135-apply-weird-filenames.sh
index f4c7e15..5c7165e 100755
--- a/t/t4135-apply-weird-filenames.sh
+++ b/t/t4135-apply-weird-filenames.sh
@@ -40,11 +40,12 @@ test_expect_success 'setup: test prerequisites' '
 try_filename() {
 	desc=$1
 	postimage=$2
-	exp1=${3:-success}
-	exp2=${4:-success}
-	exp3=${5:-success}
+	prereq=${3:-}
+	exp1=${4:-success}
+	exp2=${5:-success}
+	exp3=${6:-success}
 
-	test_expect_$exp1 "$desc, git-style file creation patch" "
+	test_expect_$exp1 $prereq "$desc, git-style file creation patch" "
 		reset_preimage &&
 		echo postimage >'$postimage' &&
 		git add -N '$postimage' &&
@@ -57,7 +58,7 @@ try_filename() {
 		test_cmp postimage.saved '$postimage'
 	"
 
-	test_expect_$exp2 UNIDIFF "$desc, traditional patch" "
+	test_expect_$exp2 ${prereq:+$prereq,}UNIDIFF "$desc, traditional patch" "
 		reset_preimage &&
 		echo preimage >'$postimage.orig' &&
 		echo postimage >'$postimage' &&
@@ -70,7 +71,7 @@ try_filename() {
 		test_cmp postimage.saved '$postimage'
 	"
 
-	test_expect_$exp3 FULLDIFF "$desc, traditional file creation patch" "
+	test_expect_$exp3 ${prereq:+$prereq,}FULLDIFF "$desc, traditional file creation patch" "
 		reset_preimage &&
 		reset_subdirs &&
 		echo postimage >b/'$postimage' &&
@@ -86,9 +87,9 @@ try_filename() {
 
 try_filename 'plain'            'postimage.txt'
 try_filename 'with spaces'      'post image.txt'
-try_filename 'with tab'         'post	image.txt'
+try_filename 'with tab'         'post	image.txt' FUNNYNAMES
 try_filename 'with backslash'   'post\image.txt'
-try_filename 'with quote'       '"postimage".txt' success failure success
+try_filename 'with quote'       '"postimage".txt' '' success failure success
 
 test_expect_success FULLDIFF 'whitespace-damaged traditional patch' '
 	reset_preimage &&
diff --git a/t/test-lib.sh b/t/test-lib.sh
index 938fb24..5ba8723 100644
--- a/t/test-lib.sh
+++ b/t/test-lib.sh
@@ -907,6 +907,17 @@ esac
 test -z "$NO_PERL" && test_set_prereq PERL
 test -z "$NO_PYTHON" && test_set_prereq PYTHON
 
+# test whether the filesystem supports unusual filenames
+f1='newline
+embedded'
+if
+	>"$f1" 2>/dev/null &&
+	>'tab	embedded' 2>/dev/null
+then
+	test_set_prereq FUNNYNAMES
+fi
+rm -f "$f1" 'tab	embedded'
+
 # test whether the filesystem supports symbolic links
 ln -s x y 2>/dev/null && test -h y 2>/dev/null && test_set_prereq SYMLINKS
 rm -f y
-- 
1.7.2.1.544.ga752d.dirty
Previous: Junio C HamanoNext: Ævar Arnfjörð Bjarmason
Message 34 of 56 in “What's cooking in git.git (Aug 2010, #02; Wed, 11)”
  1. Junio C HamanoAug 11, 2010
  2. Jonathan NiederAug 12, 2010
  3. Ævar Arnfjörð BjarmasonAug 12, 2010
  4. jn/commit-no-change-wo-status (Re: What's cooking in git.git (Aug 2010, #02; Wed, 11))Jonathan Nieder, Aug 12, 2010
  5. Elijah NewrenAug 12, 2010
  6. Junio C HamanoAug 12, 2010
  7. Elijah NewrenAug 12, 2010
  8. Johannes SixtAug 12, 2010
  9. Greg BrockmanAug 12, 2010
  10. Ævar Arnfjörð BjarmasonAug 12, 2010
  11. Junio C HamanoAug 12, 2010
  12. Greg BrockmanAug 12, 2010
  13. Junio C HamanoAug 12, 2010
  14. Ævar Arnfjörð BjarmasonAug 12, 2010
  15. Erik Faye-LundAug 12, 2010
  16. Ævar Arnfjörð BjarmasonAug 12, 2010
  17. Chris PackhamAug 12, 2010
  18. Ævar Arnfjörð BjarmasonAug 12, 2010
  19. windows smoke tester (was Re: What's cooking in git.git (Aug 2010, #02; Wed, 11))Chris Packham, Aug 12, 2010
  20. Ævar Arnfjörð BjarmasonAug 12, 2010
  21. Chris PackhamAug 12, 2010
  22. Ævar Arnfjörð BjarmasonAug 13, 2010
  23. Chris PackhamAug 14, 2010
  24. Ævar Arnfjörð BjarmasonAug 14, 2010
  25. Tay Ray ChuanAug 15, 2010
  26. Ævar Arnfjörð BjarmasonAug 15, 2010
  27. Tay Ray ChuanAug 15, 2010
  28. Ilari LiusvaaraAug 12, 2010
  29. Johannes SixtAug 12, 2010
  30. Ilari LiusvaaraAug 12, 2010
  31. Elijah NewrenAug 12, 2010
  32. Junio C HamanoAug 12, 2010
  33. Junio C HamanoAug 12, 2010
  34. jn/apply-filename-with-sp (Re: What's cooking in git.git (Aug 2010, #02; Wed, 11))Jonathan Nieder, Aug 12, 2010
  35. Ævar Arnfjörð BjarmasonAug 12, 2010
  36. Junio C HamanoAug 12, 2010
  37. Ævar Arnfjörð BjarmasonAug 13, 2010
  38. Johannes SixtAug 13, 2010
  39. Jonathan NiederAug 14, 2010
  40. Johannes SixtAug 14, 2010
  41. Jonathan NiederAug 15, 2010
  42. 0/3 apply: handle traditional patches with space in filenameJonathan Nieder, Aug 19, 2010
  43. 1/3 apply: split quoted filename handling into new functionJonathan Nieder, Aug 19, 2010
  44. 2/3 tests: exercise "git apply" with weird filenamesJonathan Nieder, Aug 19, 2010
  45. 3/3 apply: handle traditional patches with space in filenameJonathan Nieder, Aug 19, 2010
  46. Johannes SixtAug 19, 2010
  47. Jonathan NiederAug 20, 2010
  48. jn/svn-feJonathan Nieder, Aug 13, 2010
  49. Jakub NarebskiAug 13, 2010
  50. Johannes SixtAug 13, 2010
  51. 0/5 vcs-svn: Port to WindowsJonathan Nieder, Aug 13, 2010
  52. 1/5 compat: add strtok_r()Jonathan Nieder, Aug 13, 2010
  53. 2/5 vcs-svn: Rename dirent pool to build on WindowsJonathan Nieder, Aug 14, 2010
  54. 3/5 vcs-svn: Avoid %z in format stringJonathan Nieder, Aug 14, 2010
  55. 4/5 t9010 (svn-fe): use Unix-style path in URIJonathan Nieder, Aug 14, 2010
  56. 5/5 t9010 (svn-fe): avoid symlinks in testJonathan Nieder, Aug 14, 2010

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.