Diff options
authorBryce Kwon <bryce@brycekwon.com>
committerBryce Kwon <bryce@brycekwon.com>
commit
parent
tree
download
Keep a readme whole past a NUL byte
cgit takes filter output through a C string sink that stops at the first NUL, so a readme holding one lost everything after it. Each NUL now shows as U+FFFD, as a browser would show it.
Diffstat (limited to 'tests/extensions/test-about-render.lua')
-rw-r--r--tests/extensions/test-about-render.lua11
1 file changed, 5 insertions, 6 deletions
diff --git a/tests/extensions/test-about-render.lua b/tests/extensions/test-about-render.lua
index e0fde6f..a493720 100644
--- a/tests/extensions/test-about-render.lua
+++ b/tests/extensions/test-about-render.lua
@@ -48,12 +48,11 @@ out = render(nil, "no name at all")
h.contains("a missing filename renders as plain text", out,
"<pre class='plaintext'>no name at all</pre>")
--- cgit's C sink stops at the first NUL byte, which the script documents, so
--- the text past one is lost while the wrapper written separately survives.
-out = render("README", "before\0after")
-h.contains("text before a nul byte survives", out, "before")
-h.excludes("text after a nul byte is dropped", out, "after")
-h.contains("the wrapper written after the text survives", out, "</pre>")
+-- cgit's C sink stops at the first NUL byte, so the script replaces each one
+-- before anything is written, and the text past it survives.
+out = render("README", "before\0after\0")
+h.contains("a nul byte shows as a replacement character", out,
+ "<pre class='plaintext'>before\239\191\189after\239\191\189</pre>")
out = h.run({ "README" }, { "two ", "writes" })
h.contains("writes are joined before rendering", out, "two writes")