mirror of
git://git.sv.gnu.org/emacs.git
synced 2025-12-15 10:30:25 -08:00
Add font-lock tests for lua-ts-mode (bug#67605)
* test/lisp/progmodes/lua-ts-mode-tests.el (lua-ts-test-font-lock): Add ert-font-lock tests. (lua-ts-mode-test-indentation): (lua-ts-test-indentation): (lua-ts-mode-test-movement): (lua-ts-test-movement): Rename for consistency. * test/lisp/progmodes/lua-ts-mode-resources/font-lock.lua: New file.
This commit is contained in:
parent
dc7cf87bc0
commit
7b3711a6d9
2 changed files with 347 additions and 2 deletions
339
test/lisp/progmodes/lua-ts-mode-resources/font-lock.lua
Normal file
339
test/lisp/progmodes/lua-ts-mode-resources/font-lock.lua
Normal file
|
|
@ -0,0 +1,339 @@
|
|||
#!/usr/bin/env lua
|
||||
-- ^ font-lock-comment-face
|
||||
-- Comment
|
||||
-- <- font-lock-comment-delimiter-face
|
||||
-- ^ font-lock-comment-face
|
||||
--[[
|
||||
-- ^ font-lock-comment-face
|
||||
Multi-line comment
|
||||
-- ^ font-lock-comment-face
|
||||
]]
|
||||
-- <- font-lock-comment-face
|
||||
local line_comment = "comment" -- comment
|
||||
-- ^ font-lock-comment-face
|
||||
|
||||
-- Definition
|
||||
local function f1() end
|
||||
-- ^ font-lock-function-name-face
|
||||
local f2 = function() end
|
||||
-- ^ font-lock-function-name-face
|
||||
local tb = { f1 = function() end }
|
||||
-- ^ font-lock-function-name-face
|
||||
function tb.f2() end
|
||||
-- ^ font-lock-function-name-face
|
||||
function tb:f3() end
|
||||
-- ^ font-lock-function-name-face
|
||||
tbl.f4 = function() end
|
||||
-- ^ font-lock-function-name-face
|
||||
function x.y:z() end
|
||||
-- ^ font-lock-function-name-face
|
||||
|
||||
-- Keyword
|
||||
if true then
|
||||
-- <- font-lock-keyword-face
|
||||
-- ^ font-lock-keyword-face
|
||||
elseif true then
|
||||
-- <- font-lock-keyword-face
|
||||
else end
|
||||
-- <- font-lock-keyword-face
|
||||
-- ^ font-lock-keyword-face
|
||||
local p = {}
|
||||
-- ^ font-lock-keyword-face
|
||||
for k,v in pairs({}) do end
|
||||
-- <- font-lock-keyword-face
|
||||
-- ^ font-lock-keyword-face
|
||||
repeat if true then break end until false
|
||||
-- <- font-lock-keyword-face
|
||||
-- ^ font-lock-keyword-face
|
||||
-- ^ font-lock-keyword-face
|
||||
while true do end
|
||||
-- <- font-lock-keyword-face
|
||||
-- ^ font-lock-keyword-face
|
||||
function fn() return true end
|
||||
-- <- font-lock-keyword-face
|
||||
-- ^ font-lock-keyword-face
|
||||
goto label1
|
||||
-- ^ font-lock-keyword-face
|
||||
::label1::
|
||||
if true and not false or nil then
|
||||
-- ^ font-lock-keyword-face
|
||||
-- ^ font-lock-keyword-face
|
||||
-- ^ font-lock-keyword-face
|
||||
end
|
||||
|
||||
-- String
|
||||
local _
|
||||
_ = "x"
|
||||
-- ^ font-lock-string-face
|
||||
_ = 'x'
|
||||
-- ^ font-lock-string-face
|
||||
_ = "x\ty"
|
||||
-- ^ font-lock-string-face
|
||||
-- ^ font-lock-string-face
|
||||
_ = "x\"y"
|
||||
-- ^ font-lock-string-face
|
||||
-- ^ font-lock-string-face
|
||||
_ = 'x\'y'
|
||||
-- ^ font-lock-string-face
|
||||
-- ^ font-lock-string-face
|
||||
_ = "x\z
|
||||
y"
|
||||
-- ^ font-lock-string-face
|
||||
_ = "x\0900y"
|
||||
-- ^ font-lock-string-face
|
||||
_ = "x\09y"
|
||||
-- ^ font-lock-string-face
|
||||
_ = "x\0y"
|
||||
-- ^ font-lock-string-face
|
||||
_ = "x\u{1f602}y"
|
||||
-- ^ font-lock-string-face
|
||||
_ = [[x]]
|
||||
-- ^ font-lock-string-face
|
||||
_ = [=[x]=]
|
||||
-- ^ font-lock-string-face
|
||||
|
||||
-- Assignment
|
||||
local n = 0
|
||||
-- ^ font-lock-variable-name-face
|
||||
o, p, q = 1, 2, 3
|
||||
-- <- font-lock-variable-name-face
|
||||
-- ^ font-lock-variable-name-face
|
||||
-- ^ font-lock-variable-name-face
|
||||
tbl[k] = "A"
|
||||
-- ^ font-lock-variable-name-face
|
||||
tbl.x = 1
|
||||
-- ^ font-lock-variable-name-face
|
||||
for i=0,9 do end
|
||||
-- ^ font-lock-variable-name-face
|
||||
|
||||
-- Constant
|
||||
local x <const> = 1
|
||||
-- ^ font-lock-constant-face
|
||||
local f <close> = io.open('/file')
|
||||
-- ^ font-lock-constant-face
|
||||
local a, b, c = true, false, nil
|
||||
-- ^ font-lock-constant-face
|
||||
-- ^ font-lock-constant-face
|
||||
-- ^ font-lock-constant-face
|
||||
::label2::
|
||||
-- ^ font-lock-constant-face
|
||||
goto label2
|
||||
-- ^ font-lock-constant-face
|
||||
|
||||
-- Number
|
||||
n = 123
|
||||
-- ^ font-lock-number-face
|
||||
print(99)
|
||||
-- ^ font-lock-number-face
|
||||
print(tbl[1])
|
||||
-- ^ font-lock-number-face
|
||||
|
||||
-- Bracket
|
||||
local t = {}
|
||||
-- ^ font-lock-bracket-face
|
||||
-- ^ font-lock-bracket-face
|
||||
print(t[1])
|
||||
-- ^ font-lock-bracket-face
|
||||
-- ^ font-lock-bracket-face
|
||||
-- ^ font-lock-bracket-face
|
||||
-- ^ font-lock-bracket-face
|
||||
|
||||
-- Builtin
|
||||
assert()
|
||||
-- <- font-lock-builtin-face
|
||||
bit32()
|
||||
-- <- font-lock-builtin-face
|
||||
collectgarbage()
|
||||
-- <- font-lock-builtin-face
|
||||
coroutine()
|
||||
-- <- font-lock-builtin-face
|
||||
debug()
|
||||
-- <- font-lock-builtin-face
|
||||
dofile()
|
||||
-- <- font-lock-builtin-face
|
||||
error()
|
||||
-- <- font-lock-builtin-face
|
||||
getmetatable()
|
||||
-- <- font-lock-builtin-face
|
||||
io()
|
||||
-- <- font-lock-builtin-face
|
||||
ipairs()
|
||||
-- <- font-lock-builtin-face
|
||||
load()
|
||||
-- <- font-lock-builtin-face
|
||||
loadfile()
|
||||
-- <- font-lock-builtin-face
|
||||
math()
|
||||
-- <- font-lock-builtin-face
|
||||
next()
|
||||
-- <- font-lock-builtin-face
|
||||
os()
|
||||
-- <- font-lock-builtin-face
|
||||
package()
|
||||
-- <- font-lock-builtin-face
|
||||
pairs()
|
||||
-- <- font-lock-builtin-face
|
||||
pcall()
|
||||
-- <- font-lock-builtin-face
|
||||
print()
|
||||
-- <- font-lock-builtin-face
|
||||
rawequal()
|
||||
-- <- font-lock-builtin-face
|
||||
rawget()
|
||||
-- <- font-lock-builtin-face
|
||||
rawlen()
|
||||
-- <- font-lock-builtin-face
|
||||
rawset()
|
||||
-- <- font-lock-builtin-face
|
||||
require()
|
||||
-- <- font-lock-builtin-face
|
||||
select()
|
||||
-- <- font-lock-builtin-face
|
||||
setmetatable()
|
||||
-- <- font-lock-builtin-face
|
||||
string()
|
||||
-- <- font-lock-builtin-face
|
||||
table()
|
||||
-- <- font-lock-builtin-face
|
||||
tonumber()
|
||||
-- <- font-lock-builtin-face
|
||||
tostring()
|
||||
-- <- font-lock-builtin-face
|
||||
type()
|
||||
-- <- font-lock-builtin-face
|
||||
utf8()
|
||||
-- <- font-lock-builtin-face
|
||||
warn()
|
||||
-- <- font-lock-builtin-face
|
||||
xpcall()
|
||||
-- <- font-lock-builtin-face
|
||||
print(_G)
|
||||
-- ^ font-lock-builtin-face
|
||||
print(_VERSION)
|
||||
-- ^ font-lock-builtin-face
|
||||
f.close()
|
||||
-- ^ font-lock-builtin-face
|
||||
f.flush()
|
||||
-- ^ font-lock-builtin-face
|
||||
f.lines()
|
||||
-- ^ font-lock-builtin-face
|
||||
f.read()
|
||||
-- ^ font-lock-builtin-face
|
||||
f.seek()
|
||||
-- ^ font-lock-builtin-face
|
||||
f.setvbuf()
|
||||
-- ^ font-lock-builtin-face
|
||||
f.write()
|
||||
-- ^ font-lock-builtin-face
|
||||
|
||||
-- Delimiter
|
||||
t = { 1, 2 };
|
||||
-- ^ font-lock-delimiter-face
|
||||
-- ^ font-lock-delimiter-face
|
||||
|
||||
-- Escape
|
||||
_ = "x\ty"
|
||||
-- ^ font-lock-escape-face
|
||||
-- ^ font-lock-escape-face
|
||||
_ = "x\"y"
|
||||
-- ^ font-lock-escape-face
|
||||
-- ^ font-lock-escape-face
|
||||
_ = 'x\'y'
|
||||
-- ^ font-lock-escape-face
|
||||
-- ^ font-lock-escape-face
|
||||
_ = "x\z
|
||||
y"
|
||||
-- <- font-lock-escape-face
|
||||
_ = "x\x5Ay"
|
||||
-- ^ font-lock-escape-face
|
||||
-- ^ font-lock-escape-face
|
||||
_ = "x\0900y"
|
||||
-- ^ font-lock-escape-face
|
||||
_ = "x\09y"
|
||||
-- ^ font-lock-escape-face
|
||||
_ = "x\0y"
|
||||
-- ^ font-lock-escape-face
|
||||
_ = "x\u{1f602}y"
|
||||
-- ^ font-lock-escape-face
|
||||
-- ^ font-lock-escape-face
|
||||
|
||||
-- Function
|
||||
func_one()
|
||||
-- ^ font-lock-function-call-face
|
||||
tbl.func_two()
|
||||
-- ^ font-lock-function-call-face
|
||||
tbl:func_three()
|
||||
-- ^ font-lock-function-call-face
|
||||
tbl.f = f4()
|
||||
-- ^ font-lock-function-call-face
|
||||
|
||||
-- Operator
|
||||
local a, b = 1, 2
|
||||
-- ^ font-lock-operator-face
|
||||
print(a & b)
|
||||
-- ^ font-lock-operator-face
|
||||
print(a | b)
|
||||
-- ^ font-lock-operator-face
|
||||
print(a ~ b)
|
||||
-- ^ font-lock-operator-face
|
||||
print(a << 1)
|
||||
-- ^ font-lock-operator-face
|
||||
-- ^ font-lock-operator-face
|
||||
print(a >> 1)
|
||||
-- ^ font-lock-operator-face
|
||||
-- ^ font-lock-operator-face
|
||||
print(a+b-a*b/a%b^a//b)
|
||||
-- ^ font-lock-operator-face
|
||||
-- ^ font-lock-operator-face
|
||||
-- ^ font-lock-operator-face
|
||||
-- ^ font-lock-operator-face
|
||||
-- ^ font-lock-operator-face
|
||||
-- ^ font-lock-operator-face
|
||||
-- ^ font-lock-operator-face
|
||||
print(#t)
|
||||
-- ^ font-lock-operator-face
|
||||
print("h".."at")
|
||||
-- ^ font-lock-operator-face
|
||||
print(a==b)
|
||||
-- ^ font-lock-operator-face
|
||||
print(a~=b)
|
||||
-- ^ font-lock-operator-face
|
||||
print(a<=b)
|
||||
-- ^ font-lock-operator-face
|
||||
print(a>=b)
|
||||
-- ^ font-lock-operator-face
|
||||
print(a<b)
|
||||
-- ^ font-lock-operator-face
|
||||
print(a>b)
|
||||
-- ^ font-lock-operator-face
|
||||
function ff(...) end
|
||||
-- ^ font-lock-operator-face
|
||||
|
||||
-- Property
|
||||
t = { a=1 }
|
||||
-- ^ font-lock-property-name-face
|
||||
print(t.a)
|
||||
-- ^ font-lock-property-use-face
|
||||
|
||||
-- Punctuation
|
||||
tbl.f2()
|
||||
-- ^ font-lock-punctuation-face
|
||||
tbl:f3()
|
||||
-- ^ font-lock-punctuation-face
|
||||
|
||||
-- Variable
|
||||
function fn(x, y) end
|
||||
-- ^ font-lock-variable-name-face
|
||||
-- ^ font-lock-variable-name-face
|
||||
fn(a, b)
|
||||
-- ^ font-lock-variable-use-face
|
||||
-- ^ font-lock-variable-use-face
|
||||
print(a + b)
|
||||
-- ^ font-lock-variable-use-face
|
||||
-- ^ font-lock-variable-use-face
|
||||
print(t[a])
|
||||
-- ^ font-lock-variable-use-face
|
||||
tbl.f1(p)
|
||||
-- ^ font-lock-variable-use-face
|
||||
tbl:f2(q)
|
||||
-- ^ font-lock-variable-use-face
|
||||
|
|
@ -20,17 +20,23 @@
|
|||
;;; Code:
|
||||
|
||||
(require 'ert)
|
||||
(require 'ert-font-lock)
|
||||
(require 'ert-x)
|
||||
(require 'treesit)
|
||||
|
||||
(ert-deftest lua-ts-mode-test-indentation ()
|
||||
(ert-deftest lua-ts-test-indentation ()
|
||||
(skip-unless (treesit-ready-p 'lua))
|
||||
(ert-test-erts-file (ert-resource-file "indent.erts")))
|
||||
|
||||
(ert-deftest lua-ts-mode-test-movement ()
|
||||
(ert-deftest lua-ts-test-movement ()
|
||||
(skip-unless (treesit-ready-p 'lua))
|
||||
(ert-test-erts-file (ert-resource-file "movement.erts")))
|
||||
|
||||
(ert-deftest lua-ts-test-font-lock ()
|
||||
(skip-unless (treesit-ready-p 'lua))
|
||||
(let ((treesit-font-lock-level 4))
|
||||
(ert-font-lock-test-file (ert-resource-file "font-lock.lua") 'lua-ts-mode)))
|
||||
|
||||
(provide 'lua-ts-mode-tests)
|
||||
|
||||
;;; lua-ts-mode-tests.el ends here
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue