From 6cbc089f83eec21a33c792943e323a0f50a56e0a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9C=80=E8=90=8C=E5=B0=8F=E6=B1=90?= <sumneko@hotmail.com> Date: Tue, 24 Aug 2021 21:23:09 +0800 Subject: [PATCH] command test --- script/core/command/autoRequire.lua | 2 +- script/utility.lua | 14 +++++++++++ script/vm/eachDef.lua | 3 +-- script/vm/eachRef.lua | 3 +-- script/vm/getDocs.lua | 3 +-- script/vm/getGlobals.lua | 3 +-- script/vm/getLibrary.lua | 1 - script/vm/getLinks.lua | 3 +-- script/vm/vm.lua | 4 ++-- test.lua | 1 + test/command/auto-require.lua | 36 +++++++++++++++++++++++++++++ test/command/init.lua | 1 + 12 files changed, 60 insertions(+), 14 deletions(-) create mode 100644 test/command/auto-require.lua create mode 100644 test/command/init.lua diff --git a/script/core/command/autoRequire.lua b/script/core/command/autoRequire.lua index 63ff784e5..2cb6a8f88 100644 --- a/script/core/command/autoRequire.lua +++ b/script/core/command/autoRequire.lua @@ -107,7 +107,6 @@ return function (data) return end - local offset, fmt = findInsertOffset(uri) local path = furi.decode(target) local visiblePaths = rpath.getVisiblePath(path, config.get 'Lua.runtime.path') if not visiblePaths or #visiblePaths == 0 then @@ -122,5 +121,6 @@ return function (data) return end + local offset, fmt = findInsertOffset(uri) applyAutoRequire(uri, offset, name, result, fmt) end diff --git a/script/utility.lua b/script/utility.lua index f62c7af3c..8d377708c 100644 --- a/script/utility.lua +++ b/script/utility.lua @@ -17,6 +17,7 @@ local mathRandom = math.random local ioOpen = io.open local utf8Len = utf8.len local getenv = os.getenv +local getupvalue = debug.getupvalue local mathHuge = math.huge local inf = 1 / 0 local nan = 0 / 0 @@ -684,4 +685,17 @@ function m.switch() return obj end +function m.getUpvalue(f, name) + for i = 1, 999 do + local uname, value = getupvalue(f, i) + if not uname then + break + end + if name == uname then + return value, true + end + end + return nil, false +end + return m diff --git a/script/vm/eachDef.lua b/script/vm/eachDef.lua index 65cae73e9..2bfad4bf3 100644 --- a/script/vm/eachDef.lua +++ b/script/vm/eachDef.lua @@ -1,5 +1,4 @@ ----@diagnostic disable-next-line ----@class vm +---@type vm local vm = require 'vm.vm' local searcher = require 'core.searcher' diff --git a/script/vm/eachRef.lua b/script/vm/eachRef.lua index 6e008e2a0..354258185 100644 --- a/script/vm/eachRef.lua +++ b/script/vm/eachRef.lua @@ -1,5 +1,4 @@ ----@diagnostic disable-next-line ----@class vm +---@type vm local vm = require 'vm.vm' local searcher = require 'core.searcher' diff --git a/script/vm/getDocs.lua b/script/vm/getDocs.lua index 8ee942d1b..c02056542 100644 --- a/script/vm/getDocs.lua +++ b/script/vm/getDocs.lua @@ -1,7 +1,6 @@ local files = require 'files' local guide = require 'parser.guide' ----@diagnostic disable-next-line ----@class vm +---@type vm local vm = require 'vm.vm' local config = require 'config' local collector = require 'core.collector' diff --git a/script/vm/getGlobals.lua b/script/vm/getGlobals.lua index d794a394f..6dacda43a 100644 --- a/script/vm/getGlobals.lua +++ b/script/vm/getGlobals.lua @@ -1,7 +1,6 @@ local collector = require 'core.collector' local guide = require 'parser.guide' ----@diagnostic disable-next-line ----@class vm +---@type vm local vm = require 'vm.vm' local noder = require 'core.noder' diff --git a/script/vm/getLibrary.lua b/script/vm/getLibrary.lua index 1002babba..1a8d8ffde 100644 --- a/script/vm/getLibrary.lua +++ b/script/vm/getLibrary.lua @@ -1,4 +1,3 @@ ----@diagnostic disable-next-line ---@class vm local vm = require 'vm.vm' diff --git a/script/vm/getLinks.lua b/script/vm/getLinks.lua index 8df79dcae..161396f6a 100644 --- a/script/vm/getLinks.lua +++ b/script/vm/getLinks.lua @@ -1,6 +1,5 @@ local guide = require 'parser.guide' ----@diagnostic disable-next-line ----@class vm +---@type vm local vm = require 'vm.vm' local files = require 'files' diff --git a/script/vm/vm.lua b/script/vm/vm.lua index f51def71c..6abaaa0e7 100644 --- a/script/vm/vm.lua +++ b/script/vm/vm.lua @@ -13,8 +13,8 @@ local mathHuge = math.huge local weakMT = { __mode = 'kv' } _ENV = nil ----@diagnostic disable-next-line ----@class vm + +---@type vm local m = {} function m.getArgInfo(source) diff --git a/test.lua b/test.lua index 70993a702..d2e2c38a3 100644 --- a/test.lua +++ b/test.lua @@ -74,6 +74,7 @@ local function testAll() test 'highlight' test 'rename' test 'signature' + test 'command' test 'document_symbol' test 'code_action' test 'type_formatting' diff --git a/test/command/auto-require.lua b/test/command/auto-require.lua new file mode 100644 index 000000000..94bb50693 --- /dev/null +++ b/test/command/auto-require.lua @@ -0,0 +1,36 @@ +local util = require 'utility' +local files = require 'files' +local autoRequire = require 'core.command.autoRequire' +local client = require 'client' + +local findInsertOffset = util.getUpvalue(autoRequire, 'findInsertOffset') +local applyAutoRequire = util.getUpvalue(autoRequire, 'applyAutoRequire') + +local originEditText = client.editText +local EditResult + +client.editText = function (uri, edits) + EditResult = edits[1] +end + +function TEST(text) + return function (name) + return function (expect) + files.removeAll() + files.setText('', text) + EditResult = nil + local offset, fmt = findInsertOffset('') + applyAutoRequire('', offset, name, name, fmt) + assert(util.equal(EditResult, expect)) + end + end +end + +-- TODO change to position +TEST '' 'test' { + start = 0, + finish = -1, + text = '\nlocal test = require "test"\n' +} + +client.editText = originEditText diff --git a/test/command/init.lua b/test/command/init.lua new file mode 100644 index 000000000..85d7f0d89 --- /dev/null +++ b/test/command/init.lua @@ -0,0 +1 @@ +require 'command.auto-require' -- GitLab