summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author最萌小汐 <sumneko@hotmail.com>2018-12-24 11:16:27 +0800
committer最萌小汐 <sumneko@hotmail.com>2018-12-24 11:16:27 +0800
commit40a7b97a74bb8fde75ebf5ab5924bc2c80411182 (patch)
tree9d45a9eea81c6b3d54f441761874a7f238e315f0
parentbc40e38ee557b338bad56e4c09489ba031fc8787 (diff)
downloadlua-language-server-40a7b97a74bb8fde75ebf5ab5924bc2c80411182.zip
加一些测试
-rw-r--r--server/test/crossfile/definition.lua134
-rw-r--r--server/test/crossfile/init.lua70
2 files changed, 135 insertions, 69 deletions
diff --git a/server/test/crossfile/definition.lua b/server/test/crossfile/definition.lua
new file mode 100644
index 00000000..43261771
--- /dev/null
+++ b/server/test/crossfile/definition.lua
@@ -0,0 +1,134 @@
+local service = require 'service'
+local workspace = require 'workspace'
+local fs = require 'bee.filesystem'
+local matcher = require 'matcher'
+
+rawset(_G, 'TEST', true)
+
+local function catch_target(script, sep)
+ local list = {}
+ local cur = 1
+ local cut = 0
+ while true do
+ local start, finish = script:find(('<%%%s.-%%%s>'):format(sep, sep), cur)
+ if not start then
+ break
+ end
+ list[#list+1] = { start - cut, finish - 4 - cut }
+ cur = finish + 1
+ cut = cut + 4
+ end
+ local new_script = script:gsub(('<%%%s(.-)%%%s>'):format(sep, sep), '%1')
+ return new_script, list
+end
+
+function TEST(data)
+ local lsp = service()
+ local ws = workspace(lsp, 'test')
+ lsp.workspace = ws
+
+ local targetScript, targetList = catch_target(data[1].content, '!')
+ local targetUri = ws:uriEncode(fs.path(data[1].path))
+ if data[1].target then
+ targetList = data[1].target
+ else
+ targetList = targetList[1]
+ end
+
+ local sourceScript, sourceList = catch_target(data[2].content, '?')
+ local sourceUri = ws:uriEncode(fs.path(data[2].path))
+
+ lsp:saveText(targetUri, 1, targetScript)
+ lsp:saveText(sourceUri, 1, sourceScript)
+ ws:addFile(targetUri)
+ ws:addFile(sourceUri)
+ lsp:compileVM(targetUri)
+ lsp:compileVM(sourceUri)
+
+ local sourceVM = lsp:loadVM(sourceUri)
+ assert(sourceVM)
+ local sourcePos = (sourceList[1][1] + sourceList[1][2]) // 2
+ local positions = matcher.definition(sourceVM, sourcePos)
+ assert(positions and positions[1])
+ local start, finish, valueUri = positions[1][1], positions[1][2], positions[1][3]
+ assert(valueUri == targetUri)
+ assert(start == targetList[1])
+ assert(finish == targetList[2])
+end
+
+TEST {
+ {
+ path = 'a.lua',
+ content = '',
+ target = {0, 0},
+ },
+ {
+ path = 'b.lua',
+ content = 'require <?"a"?>',
+ },
+}
+
+TEST {
+ {
+ path = 'a.lua',
+ content = 'local <!t!> = 1; return t',
+ },
+ {
+ path = 'b.lua',
+ content = 'local <?t?> = require "a"',
+ },
+}
+
+TEST {
+ {
+ path = 'a.lua',
+ content = [[
+ local t = {
+ <!x!> = 1,
+ }
+ return t
+ ]],
+ },
+ {
+ path = 'b.lua',
+ content = [[
+ local t = require "a"
+ t.<?x?>()
+ ]],
+ },
+}
+
+TEST {
+ {
+ path = 'a.lua',
+ content = [[
+ return {
+ <!x!> = 1,
+ }
+ ]],
+ },
+ {
+ path = 'b.lua',
+ content = [[
+ local t = require "a"
+ t.<?x?>()
+ ]],
+ },
+}
+
+TEST {
+ {
+ path = 'a.lua',
+ content = [[
+ return <!function ()
+ end!>
+ ]],
+ },
+ {
+ path = 'b.lua',
+ content = [[
+ local f = require "a"
+ <?f?>()
+ ]],
+ },
+}
diff --git a/server/test/crossfile/init.lua b/server/test/crossfile/init.lua
index e550f8d8..81243416 100644
--- a/server/test/crossfile/init.lua
+++ b/server/test/crossfile/init.lua
@@ -1,69 +1 @@
-local service = require 'service'
-local workspace = require 'workspace'
-local fs = require 'bee.filesystem'
-local matcher = require 'matcher'
-
-rawset(_G, 'TEST', true)
-
-local function catch_target(script, sep)
- local list = {}
- local cur = 1
- local cut = 0
- while true do
- local start, finish = script:find(('<%%%s.-%%%s>'):format(sep, sep), cur)
- if not start then
- break
- end
- list[#list+1] = { start - cut, finish - 4 - cut }
- cur = finish + 1
- cut = cut + 4
- end
- local new_script = script:gsub(('<%%%s(.-)%%%s>'):format(sep, sep), '%1')
- return new_script, list
-end
-
-function TEST(data)
- local lsp = service()
- local ws = workspace(lsp, 'test')
- lsp.workspace = ws
-
- local targetScript, targetList = catch_target(data[1].content, '!')
- local targetUri = ws:uriEncode(fs.path(data[1].path))
- if data[1].target then
- targetList = data[1].target
- else
- targetList = targetList[1]
- end
-
- local sourceScript, sourceList = catch_target(data[2].content, '?')
- local sourceUri = ws:uriEncode(fs.path(data[2].path))
-
- lsp:saveText(targetUri, 1, targetScript)
- lsp:saveText(sourceUri, 1, sourceScript)
- ws:addFile(targetUri)
- ws:addFile(sourceUri)
- lsp:compileVM(targetUri)
- lsp:compileVM(sourceUri)
-
- local sourceVM = lsp:loadVM(sourceUri)
- assert(sourceVM)
- local sourcePos = (sourceList[1][1] + sourceList[1][2]) // 2
- local positions = matcher.definition(sourceVM, sourcePos)
- assert(positions)
- local start, finish, valueUri = positions[1][1], positions[1][2], positions[1][3]
- assert(valueUri == targetUri)
- assert(start == targetList[1])
- assert(finish == targetList[2])
-end
-
-TEST {
- {
- path = 'a.lua',
- content = '',
- target = {0, 0},
- },
- {
- path = 'b.lua',
- content = 'require <?"a"?>',
- },
-}
+require 'crossfile.definition'