1
0
forked from aniani/vim

patch 9.1.0666: assert_equal() doesn't show multibyte string correctly

Problem:  assert_equal() doesn't show multibyte string correctly
Solution: Properly advance over a multibyte char.
          (zeertzjq)

closes: #15456

Signed-off-by: zeertzjq <zeertzjq@outlook.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
This commit is contained in:
zeertzjq
2024-08-09 19:52:10 +02:00
committed by Christian Brabandt
parent 0cc5dce578
commit 9c4b2462bb
3 changed files with 16 additions and 2 deletions

View File

@@ -48,10 +48,19 @@ func Test_assert_equal()
call assert_match("Expected 'bar' but got 'foo'", v:errors[0]) call assert_match("Expected 'bar' but got 'foo'", v:errors[0])
call remove(v:errors, 0) call remove(v:errors, 0)
let s = 'αβγ'
call assert_equal(1, assert_equal('δεζ', s))
call assert_match("Expected 'δεζ' but got 'αβγ'", v:errors[0])
call remove(v:errors, 0)
call assert_equal('XxxxxxxxxxxxxxxxxxxxxxX', 'XyyyyyyyyyyyyyyyyyyyyyyyyyX') call assert_equal('XxxxxxxxxxxxxxxxxxxxxxX', 'XyyyyyyyyyyyyyyyyyyyyyyyyyX')
call assert_match("Expected 'X\\\\\\[x occurs 21 times]X' but got 'X\\\\\\[y occurs 25 times]X'", v:errors[0]) call assert_match("Expected 'X\\\\\\[x occurs 21 times]X' but got 'X\\\\\\[y occurs 25 times]X'", v:errors[0])
call remove(v:errors, 0) call remove(v:errors, 0)
call assert_equal('ΩωωωωωωωωωωωωωωωωωωωωωΩ', 'ΩψψψψψψψψψψψψψψψψψψψψψψψψψΩ')
call assert_match("Expected 'Ω\\\\\\[ω occurs 21 times]Ω' but got 'Ω\\\\\\[ψ occurs 25 times]Ω'", v:errors[0])
call remove(v:errors, 0)
" special characters are escaped " special characters are escaped
call assert_equal("\b\e\f\n\t\r\\\x01\x7f", 'x') call assert_equal("\b\e\f\n\t\r\\\x01\x7f", 'x')
call assert_match('Expected ''\\b\\e\\f\\n\\t\\r\\\\\\x01\\x7f'' but got ''x''', v:errors[0]) call assert_match('Expected ''\\b\\e\\f\\n\\t\\r\\\\\\x01\\x7f'' but got ''x''', v:errors[0])

View File

@@ -99,7 +99,7 @@ ga_concat_shorten_esc(garray_T *gap, char_u *str)
return; return;
} }
for (p = str; *p != NUL; ++p) for (p = str; *p != NUL; )
{ {
same_len = 1; same_len = 1;
s = p; s = p;
@@ -118,10 +118,13 @@ ga_concat_shorten_esc(garray_T *gap, char_u *str)
vim_snprintf((char *)buf, NUMBUFLEN, "%d", same_len); vim_snprintf((char *)buf, NUMBUFLEN, "%d", same_len);
ga_concat(gap, buf); ga_concat(gap, buf);
ga_concat(gap, (char_u *)" times]"); ga_concat(gap, (char_u *)" times]");
p = s - 1; p = s;
} }
else else
{
ga_concat_esc(gap, p, clen); ga_concat_esc(gap, p, clen);
p += clen;
}
} }
} }

View File

@@ -704,6 +704,8 @@ static char *(features[]) =
static int included_patches[] = static int included_patches[] =
{ /* Add new patch number below this line */ { /* Add new patch number below this line */
/**/
666,
/**/ /**/
665, 665,
/**/ /**/