On Mon, Nov 05, 2018 at 07:10:14PM +0100, Torsten Bögershausen wrote:
> On Mon, Nov 05, 2018 at 05:24:39AM +0100, Adrián Gimeno Balaguer wrote:
> 
> []
> 
> > https://github.com/git/git/pull/550
>  
> []
>  
> > This is covered in the mentioned PR above. Thanks for feedback.
> 
> Thanks for the code,
> I will have a look (the next days)
> 
> > 
> > -- 
> > Adrián

Hej Adrián,

I still didn't manage to fully understand your problem.
I tried to convert your test into my understanding,
It can be fetched here (or copied from this message, see below)

https://github.com/tboegi/git/tree/tb.181106_UTF16LE_commit

The commit of an empty file seems to work for me, in the initial
report a "rebase" was mentioned, which is not in the TC ?

Is the following what you intended to test ?

#!/bin/sh
test_description='UTF-16 LE/BE file encoding using working-tree-encoding'


. ./test-lib.sh

# We specify the UTF-16LE BOM manually, to not depend on programs such as iconv.
utf16leBOM=$(printf '\377\376')

test_expect_success 'Stage empty UTF-16LE file as binary' '
        >empty_0.txt &&
        echo "empty_0.txt binary" >>.gitattributes &&
        git add empty_0.txt
'


test_expect_success 'Stage empty file with enc=UTF.16BL' '
        >utf16le_0.txt &&
        echo "utf16le_0.txt text working-tree-encoding=UTF-16BE" 
>>.gitattributes &&
        git add utf16le_0.txt
'


test_expect_success 'Create and stage UTF-16LE file with only BOM' '
        printf "$utf16leBOM" >utf16le_1.txt &&
        echo "utf16le_1.txt text working-tree-encoding=UTF-16" >>.gitattributes 
&&
        git add utf16le_1.txt
'

test_expect_success 'Dont stage UTF-16LE file with only BOM with enc=UTF.16BE' '
        printf "$utf16leBOM" >utf16le_2.txt &&
        echo "utf16le_2.txt text working-tree-encoding=UTF-16BE" 
>>.gitattributes &&
        test_must_fail git add utf16le_2.txt
'

test_expect_success 'commit all files' '
        test_tick &&
        git commit -m "Commit all 3 files"
'

test_expect_success 'All commited files have the same sha' '
        git ls-files -s --eol >tmp1 &&
        sed -e "s!      i/none.*!!" <tmp1 | uniq -u >actual &&
        >expect &&
        test_cmp expect actual
'

test_done

Reply via email to