aboutsummaryrefslogtreecommitdiff
path: root/test/functional/lua/text_spec.lua
diff options
context:
space:
mode:
authorGregory Anders <8965202+gpanders@users.noreply.github.com>2024-08-17 22:28:03 -0500
committerGitHub <noreply@github.com>2024-08-17 22:28:03 -0500
commit33464189bc02b2555e26dc4e9f7b3fbbcdd02490 (patch)
treedc02581e731cf032650d2d856b72b0bfe61aeb75 /test/functional/lua/text_spec.lua
parentd1bdeacb00186ba72fa61f3c7f2951fd018ae21d (diff)
downloadrneovim-33464189bc02b2555e26dc4e9f7b3fbbcdd02490.tar.gz
rneovim-33464189bc02b2555e26dc4e9f7b3fbbcdd02490.tar.bz2
rneovim-33464189bc02b2555e26dc4e9f7b3fbbcdd02490.zip
fix(vim.text): handle very long strings (#30075)
Lua's string.byte has a maximum (undocumented) allowable length, so vim.text.hencode fails on large strings with the error "string slice too long". Instead of converting the string to an array of bytes up front, convert each character to a byte one at a time.
Diffstat (limited to 'test/functional/lua/text_spec.lua')
-rw-r--r--test/functional/lua/text_spec.lua6
1 files changed, 6 insertions, 0 deletions
diff --git a/test/functional/lua/text_spec.lua b/test/functional/lua/text_spec.lua
index 9e77953c8c..be471bfd62 100644
--- a/test/functional/lua/text_spec.lua
+++ b/test/functional/lua/text_spec.lua
@@ -20,5 +20,11 @@ describe('vim.text', function()
eq(input, vim.text.hexdecode(output))
end
end)
+
+ it('works with very large strings', function()
+ local input, output = string.rep('😂', 2 ^ 16), string.rep('F09F9882', 2 ^ 16)
+ eq(output, vim.text.hexencode(input))
+ eq(input, vim.text.hexdecode(output))
+ end)
end)
end)