-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Merge branch 'ls/p4-translation-failure'
Work around "git p4" failing when the P4 depot records the contents in UTF-16 without UTF-16 BOM. * ls/p4-translation-failure: git-p4: handle "Translation of file content failed" git-p4: add test case for "Translation of file content failed" error
- Loading branch information
Showing
2 changed files
with
66 additions
and
11 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,50 @@ | ||
#!/bin/sh | ||
|
||
test_description='git p4 handling of UTF-16 files without BOM' | ||
|
||
. ./lib-git-p4.sh | ||
|
||
UTF16="\227\000\227\000" | ||
|
||
test_expect_success 'start p4d' ' | ||
start_p4d | ||
' | ||
|
||
test_expect_success 'init depot with UTF-16 encoded file and artificially remove BOM' ' | ||
( | ||
cd "$cli" && | ||
printf "$UTF16" >file1 && | ||
p4 add -t utf16 file1 && | ||
p4 submit -d "file1" | ||
) && | ||
( | ||
cd db && | ||
p4d -jc && | ||
# P4D automatically adds a BOM. Remove it here to make the file invalid. | ||
sed -e "\$d" depot/file1,v >depot/file1,v.new && | ||
mv depot/file1,v.new depot/file1,v && | ||
printf "@$UTF16@" >>depot/file1,v && | ||
p4d -jrF checkpoint.1 | ||
) | ||
' | ||
|
||
test_expect_success 'clone depot with invalid UTF-16 file in verbose mode' ' | ||
git p4 clone --dest="$git" --verbose //depot && | ||
test_when_finished cleanup_git && | ||
( | ||
cd "$git" && | ||
printf "$UTF16" >expect && | ||
test_cmp_bin expect file1 | ||
) | ||
' | ||
|
||
test_expect_failure 'clone depot with invalid UTF-16 file in non-verbose mode' ' | ||
git p4 clone --dest="$git" //depot | ||
' | ||
|
||
test_expect_success 'kill p4d' ' | ||
kill_p4d | ||
' | ||
|
||
test_done |