mirror of
https://github.com/SpaceVim/SpaceVim.git
synced 2025-02-03 09:50:04 +08:00
71 lines
3.4 KiB
Lua
71 lines
3.4 KiB
Lua
local json = require "plenary.json"
|
|
local eq = assert.are.same
|
|
|
|
describe("json", function()
|
|
it("replace comments with whitespace", function()
|
|
eq(json.json_strip_comments '//comment\n{"a":"b"}', ' \n{"a":"b"}')
|
|
eq(json.json_strip_comments '/*//comment*/{"a":"b"}', ' {"a":"b"}')
|
|
eq(json.json_strip_comments '{"a":"b"//comment\n}', '{"a":"b" \n}')
|
|
eq(json.json_strip_comments '{"a":"b"/*comment*/}', '{"a":"b" }')
|
|
eq(json.json_strip_comments '{"a"/*\n\n\ncomment\r\n*/:"b"}', '{"a" \n\n\n \r\n :"b"}')
|
|
eq(json.json_strip_comments '/*!\n * comment\n */\n{"a":"b"}', ' \n \n \n{"a":"b"}')
|
|
eq(json.json_strip_comments '{/*comment*/"a":"b"}', '{ "a":"b"}')
|
|
end)
|
|
|
|
it("remove comments", function()
|
|
local options = { whitespace = false }
|
|
eq(json.json_strip_comments('//comment\n{"a":"b"}', options), '\n{"a":"b"}')
|
|
eq(json.json_strip_comments('/*//comment*/{"a":"b"}', options), '{"a":"b"}')
|
|
eq(json.json_strip_comments('{"a":"b"//comment\n}', options), '{"a":"b"\n}')
|
|
eq(json.json_strip_comments('{"a":"b"/*comment*/}', options), '{"a":"b"}')
|
|
eq(json.json_strip_comments('{"a"/*\n\n\ncomment\r\n*/:"b"}', options), '{"a":"b"}')
|
|
eq(json.json_strip_comments('/*!\n * comment\n */\n{"a":"b"}', options), '\n{"a":"b"}')
|
|
eq(json.json_strip_comments('{/*comment*/"a":"b"}', options), '{"a":"b"}')
|
|
end)
|
|
|
|
it("doesn't strip comments inside strings", function()
|
|
eq(json.json_strip_comments '{"a":"b//c"}', '{"a":"b//c"}')
|
|
eq(json.json_strip_comments '{"a":"b/*c*/"}', '{"a":"b/*c*/"}')
|
|
eq(json.json_strip_comments '{"/*a":"b"}', '{"/*a":"b"}')
|
|
eq(json.json_strip_comments '{"\\"/*a":"b"}', '{"\\"/*a":"b"}')
|
|
end)
|
|
|
|
it("consider escaped slashes when checking for escaped string quote", function()
|
|
eq(json.json_strip_comments '{"\\\\":"https://foobar.com"}', '{"\\\\":"https://foobar.com"}')
|
|
eq(json.json_strip_comments '{"foo\\"":"https://foobar.com"}', '{"foo\\"":"https://foobar.com"}')
|
|
end)
|
|
|
|
it("line endings - no comments", function()
|
|
eq(json.json_strip_comments '{"a":"b"\n}', '{"a":"b"\n}')
|
|
eq(json.json_strip_comments '{"a":"b"\r\n}', '{"a":"b"\r\n}')
|
|
end)
|
|
|
|
it("line endings - single line comment", function()
|
|
eq(json.json_strip_comments '{"a":"b"//c\n}', '{"a":"b" \n}')
|
|
eq(json.json_strip_comments '{"a":"b"//c\r\n}', '{"a":"b" \r\n}')
|
|
end)
|
|
|
|
it("line endings - single line block comment", function()
|
|
eq(json.json_strip_comments '{"a":"b"/*c*/\n}', '{"a":"b" \n}')
|
|
eq(json.json_strip_comments '{"a":"b"/*c*/\r\n}', '{"a":"b" \r\n}')
|
|
end)
|
|
|
|
it("line endings - multi line block comment", function()
|
|
eq(json.json_strip_comments '{"a":"b",/*c\nc2*/"x":"y"\n}', '{"a":"b", \n "x":"y"\n}')
|
|
eq(json.json_strip_comments '{"a":"b",/*c\r\nc2*/"x":"y"\r\n}', '{"a":"b", \r\n "x":"y"\r\n}')
|
|
end)
|
|
|
|
it("line endings - works at EOF", function()
|
|
local options = { whitespace = false }
|
|
eq(json.json_strip_comments '{\r\n\t"a":"b"\r\n} //EOF', '{\r\n\t"a":"b"\r\n} ')
|
|
eq(json.json_strip_comments('{\r\n\t"a":"b"\r\n} //EOF', options), '{\r\n\t"a":"b"\r\n} ')
|
|
end)
|
|
|
|
it("handles weird escaping", function()
|
|
eq(
|
|
json.json_strip_comments [[{"x":"x \"sed -e \\\"s/^.\\\\{46\\\\}T//\\\" -e \\\"s/#033/\\\\x1b/g\\\"\""}]],
|
|
[[{"x":"x \"sed -e \\\"s/^.\\\\{46\\\\}T//\\\" -e \\\"s/#033/\\\\x1b/g\\\"\""}]]
|
|
)
|
|
end)
|
|
end)
|