From e4873a1a97f501e04cd665ccefa3a8014bda554c Mon Sep 17 00:00:00 2001 From: s1n7ax Date: Sun, 26 Nov 2023 23:54:47 +0530 Subject: [PATCH] feat: add get_test_methods API to get a list of methods in curren class --- lua/java-core/adapters/init.lua | 6 ++-- lua/java-core/api/test.lua | 27 ++++++++++++--- .../ls/clients/java-debug-client.lua | 2 +- lua/java-core/ls/clients/java-test-client.lua | 34 +++++++++---------- lua/java-core/ls/clients/jdtls-client.lua | 4 +-- 5 files changed, 46 insertions(+), 27 deletions(-) diff --git a/lua/java-core/adapters/init.lua b/lua/java-core/adapters/init.lua index 279ce87..6c93a37 100644 --- a/lua/java-core/adapters/init.lua +++ b/lua/java-core/adapters/init.lua @@ -1,3 +1,5 @@ +local jdtls_types = require('java-core.ls.servers.jdtls.jdtls-types') + local List = require('java-core.utils.list') local Set = require('java-core.utils.set') local JavaTestClient = require('java-core.ls.clients.java-test-client') @@ -36,7 +38,7 @@ function M.get_dap_launcher_config(launch_args, java_exec, config) end ---Ruterns the launch argument parameters for given test or tests ----@param tests JavaCoreTestDetails | JavaCoreTestDetails[] +---@param tests java_core.TestDetails | java_core.TestDetails[] ---@return JavaCoreTestResolveJUnitLaunchArgumentsParams # junit launch arguments function M.get_junit_launch_argument_params(tests) if not vim.tbl_islist(tests) then @@ -59,7 +61,7 @@ function M.get_junit_launch_argument_params(tests) end ---Returns a list of test names to be passed to test launch arguments resolver ----@param tests JavaCoreTestDetails[] +---@param tests java_core.TestDetails[] ---@return List function M.get_test_names(tests) return List:new(tests):map(function(test) diff --git a/lua/java-core/api/test.lua b/lua/java-core/api/test.lua index b5c19cd..b3f67e4 100644 --- a/lua/java-core/api/test.lua +++ b/lua/java-core/api/test.lua @@ -7,9 +7,9 @@ local JavaDebug = require('java-core.ls.clients.java-debug-client') local JavaTest = require('java-core.ls.clients.java-test-client') ---@class JavaCoreTestApi ----@field private client JavaCoreJdtlsClient +---@field private client java_core.JdtlsClient ---@field private debug_client JavaCoreDebugClient ----@field private test_client JavaCoreTestClient +---@field private test_client java_core.TestClient ---@field private runner JavaCoreDapRunner local M = {} @@ -39,6 +39,24 @@ function M:new(args) return o end +---Returns a list of test methods +---@param file_uri string uri of the class +---@return java_core.TestDetailsWithRange[] # list of test methods +function M:get_test_methods(file_uri) + local classes = self.test_client:find_test_types_and_methods(file_uri) + local methods = {} + + for _, class in ipairs(classes) do + for _, method in ipairs(class.children) do + ---@diagnostic disable-next-line: inject-field + method.class = class + table.insert(methods, method) + end + end + + return methods +end + ---Runs the test class in the given buffer ---@param buffer integer ---@param config JavaCoreDapLauncherConfigOverridable @@ -50,7 +68,7 @@ end ---Returns test classes in the given buffer ---@priate ---@param buffer integer ----@return JavaCoreTestDetailsWithChildrenAndRange # get test class details +---@return java_core.TestDetailsWithChildrenAndRange # get test class details function M:get_test_class_by_buffer(buffer) log.debug('finding test class by buffer') @@ -59,8 +77,7 @@ function M:get_test_class_by_buffer(buffer) end ---Run the given test ----@private ----@param tests JavaCoreTestDetails[] +---@param tests java_core.TestDetails[] ---@param config? JavaCoreDapLauncherConfigOverridable config to override the default values in test launcher config function M:run_test(tests, config) ---@type JavaCoreTestJunitLaunchArguments diff --git a/lua/java-core/ls/clients/java-debug-client.lua b/lua/java-core/ls/clients/java-debug-client.lua index ab94dbe..807c872 100644 --- a/lua/java-core/ls/clients/java-debug-client.lua +++ b/lua/java-core/ls/clients/java-debug-client.lua @@ -1,6 +1,6 @@ local JdtlsClient = require('java-core.ls.clients.jdtls-client') ----@class JavaCoreDebugClient: JavaCoreJdtlsClient +---@class JavaCoreDebugClient: java_core.JdtlsClient local M = JdtlsClient:new() ---@class JavaDebugResolveMainClassRecord diff --git a/lua/java-core/ls/clients/java-test-client.lua b/lua/java-core/ls/clients/java-test-client.lua index 785fdf1..7b09228 100644 --- a/lua/java-core/ls/clients/java-test-client.lua +++ b/lua/java-core/ls/clients/java-test-client.lua @@ -1,7 +1,7 @@ local log = require('java-core.utils.log') local JdtlsClient = require('java-core.ls.clients.jdtls-client') ----@class JavaCoreTestDetails: Configuration +---@class java_core.TestDetails: Configuration ---@field fullName string ---@field id string ---@field jdtHandler string @@ -11,17 +11,17 @@ local JdtlsClient = require('java-core.ls.clients.jdtls-client') ---@field testLevel integer ---@field uri string ----@class JavaCoreTestDetailsWithRange: JavaCoreTestDetails ----@field range Range +---@class java_core.TestDetailsWithRange: java_core.TestDetails +---@field range java_core.TestRange ----@class JavaCoreTestDetailsWithChildren: JavaCoreTestDetails ----@field children JavaCoreTestDetailsWithRange[] +---@class java_core.TestDetailsWithChildren: java_core.TestDetails +---@field children java_core.TestDetailsWithRange[] ----@class JavaCoreTestDetailsWithChildrenAndRange: JavaCoreTestDetails ----@field range Range ----@field children JavaCoreTestDetailsWithRange[] +---@class java_core.TestDetailsWithChildrenAndRange: java_core.TestDetails +---@field range java_core.TestRange +---@field children java_core.TestDetailsWithRange[] ----@class Range +---@class java_core.TestRange ---@field start CursorPoint ---@field end CursorPoint @@ -29,11 +29,11 @@ local JdtlsClient = require('java-core.ls.clients.jdtls-client') ---@field line integer ---@field character integer ----@class JavaCoreTestClient: JavaCoreJdtlsClient +---@class java_core.TestClient: java_core.JdtlsClient local M = JdtlsClient:new() ---Returns a list of project details in the current root ----@return JavaCoreTestDetails[] # test details of the projects +---@return java_core.TestDetails[] # test details of the projects function M:find_java_projects() return self:execute_command( 'vscode.java.test.findJavaProjects', @@ -44,7 +44,7 @@ end ---Returns a list of test package details ---@param handler string ---@param token? string ----@return JavaCoreTestDetailsWithChildren[] # test package details +---@return java_core.TestDetailsWithChildren[] # test package details function M:find_test_packages_and_types(handler, token) return self:execute_command( 'vscode.java.test.findTestPackagesAndTypes', @@ -55,7 +55,7 @@ end ---Returns test informations in a given file ---@param file_uri string ---@param token? string ----@return JavaCoreTestDetailsWithChildrenAndRange[] # test details +---@return java_core.TestDetailsWithChildrenAndRange[] # test details function M:find_test_types_and_methods(file_uri, token) return self:execute_command( 'vscode.java.test.findTestTypesAndMethods', @@ -75,8 +75,8 @@ end ---@class JavaCoreTestResolveJUnitLaunchArgumentsParams ---@field project_name string ---@field test_names string[] ----@field test_level JavaCoreTestLevel ----@field test_kind JavaCoreTestKind +---@field test_level java_core.TestLevel +---@field test_kind java_core.TestKind ---Returns junit launch arguments ---@param args JavaCoreTestResolveJUnitLaunchArgumentsParams @@ -97,7 +97,7 @@ function M:resolve_junit_launch_arguments(args) return launch_args.body end ----@enum JavaCoreTestKind +---@enum java_core.TestKind M.TestKind = { JUnit5 = 0, JUnit = 1, @@ -105,7 +105,7 @@ M.TestKind = { None = 100, } ----@enum JavaCoreTestLevel +---@enum java_core.TestLevel M.TestLevel = { Root = 0, Workspace = 1, diff --git a/lua/java-core/ls/clients/jdtls-client.lua b/lua/java-core/ls/clients/jdtls-client.lua index 7701035..738d0cf 100644 --- a/lua/java-core/ls/clients/jdtls-client.lua +++ b/lua/java-core/ls/clients/jdtls-client.lua @@ -2,12 +2,12 @@ local log = require('java-core.utils.log') local async = require('java-core.utils.async') local await = async.wait_handle_error ----@class JavaCoreJdtlsClient +---@class java_core.JdtlsClient ---@field client LspClient local M = {} ---@param args? { client: LspClient } ----@return JavaCoreJdtlsClient +---@return java_core.JdtlsClient function M:new(args) local o = { client = (args or {}).client,