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

[PATCH v2 1/2] git-p4: add test case for "Translation of file content failed" error

From
larsxschneider@gmail.com <larsxschneider@gmail.com>
Date
Sep 14, 2015, 16:55 UTC
Message-ID
<1442249728-89494-2-git-send-email-larsxschneider@gmail.com>
In-Reply-To
<1442249728-89494-1-git-send-email-larsxschneider@gmail.com>
From: Lars Schneider <larsxschneider@gmail.com>

A P4 repository can get into a state where it contains a file with type UTF-16 that does not contain a valid UTF-16 BOM. If git-p4 attempts to retrieve the file then the process crashes with a "Translation of file content failed" error.

Signed-off-by: Lars Schneider <larsxschneider@gmail.com>
---
 t/t9824-git-p4-handle-utf16-without-bom.sh | 47 ++++++++++++++++++++++++++++++
 1 file changed, 47 insertions(+)
 create mode 100755 t/t9824-git-p4-handle-utf16-without-bom.sh
diff --git a/t/t9824-git-p4-handle-utf16-without-bom.sh b/t/t9824-git-p4-handle-utf16-without-bom.sh
new file mode 100755
index 0000000..fa8043b
--- /dev/null
+++ b/t/t9824-git-p4-handle-utf16-without-bom.sh
@@ -0,0 +1,47 @@
+#!/bin/sh
+
+test_description='git p4 handle UTF-16 without BOM'
+
+. ./lib-git-p4.sh
+
+UTF16="\\x97\\x0\\x97\\x0"
+
+test_expect_success 'start p4d' '
+	start_p4d
+'
+
+test_expect_success 'init depot with UTF-16 encoded file and artificially remove BOM' '
+	(
+		cd "$cli" &&
+		echo "file1 -text" > .gitattributes &&
+		perl -e "printf \"$UTF16\"" >file1 &&
+		p4 add -t utf16 file1 &&
+
+		p4 add .gitattributes &&
+		p4 submit -d "file1"
+	) &&
+
+	(
+		cd "db" &&
+		p4d -jc &&
+		# P4D automatically adds a BOM. Remove it here to make the file invalid.
+		perl -i -ne "print unless eof" depot/file1,v &&
+		perl -e "printf \"@$UTF16@\"" >> depot/file1,v &&
+		p4d -jrF checkpoint.1
+	)
+'
+
+test_expect_success 'clone depot with invalid UTF-16 file' '
+	git p4 clone --dest="$git" --verbose //depot &&
+	(
+		cd "$git" &&
+		perl -e "printf \"$UTF16\"" > expect &&
+		test_cmp_bin expect file1
+	)
+'
+
+test_expect_success 'kill p4d' '
+	kill_p4d
+'
+
+test_done
-- 
2.5.1
Previous: larsxschneider@gmail.comNext: Torsten Bögershausen
Message 2 of 9 in “git-p4: handle "Translation of file content failed"”
  1. 0/2 git-p4: handle "Translation of file content failed"larsxschneider@gmail.com, Sep 14, 2015
  2. 1/2 git-p4: add test case for "Translation of file content failed" errorlarsxschneider@gmail.com, Sep 14, 2015
  3. Torsten BögershausenSep 15, 2015
  4. Lars SchneiderSep 15, 2015
  5. 2/2 git-p4: handle "Translation of file content failed"larsxschneider@gmail.com, Sep 14, 2015
  6. Luke DiamandSep 15, 2015
  7. Lars SchneiderSep 15, 2015
  8. Luke DiamandSep 15, 2015
  9. Lars SchneiderSep 16, 2015

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.