Skip to content

Commit a1c750e

Browse files
authored
feat: add get_test_methods API to get a list of methods in curren class (#25)
1 parent fbedce3 commit a1c750e

File tree

5 files changed

+46
-27
lines changed

5 files changed

+46
-27
lines changed

lua/java-core/adapters/init.lua

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,5 @@
1+
local jdtls_types = require('java-core.ls.servers.jdtls.jdtls-types')
2+
13
local List = require('java-core.utils.list')
24
local Set = require('java-core.utils.set')
35
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)
3638
end
3739

3840
---Ruterns the launch argument parameters for given test or tests
39-
---@param tests JavaCoreTestDetails | JavaCoreTestDetails[]
41+
---@param tests java_core.TestDetails | java_core.TestDetails[]
4042
---@return JavaCoreTestResolveJUnitLaunchArgumentsParams # junit launch arguments
4143
function M.get_junit_launch_argument_params(tests)
4244
if not vim.tbl_islist(tests) then
@@ -59,7 +61,7 @@ function M.get_junit_launch_argument_params(tests)
5961
end
6062

6163
---Returns a list of test names to be passed to test launch arguments resolver
62-
---@param tests JavaCoreTestDetails[]
64+
---@param tests java_core.TestDetails[]
6365
---@return List
6466
function M.get_test_names(tests)
6567
return List:new(tests):map(function(test)

lua/java-core/api/test.lua

Lines changed: 22 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -7,9 +7,9 @@ local JavaDebug = require('java-core.ls.clients.java-debug-client')
77
local JavaTest = require('java-core.ls.clients.java-test-client')
88

99
---@class JavaCoreTestApi
10-
---@field private client JavaCoreJdtlsClient
10+
---@field private client java_core.JdtlsClient
1111
---@field private debug_client JavaCoreDebugClient
12-
---@field private test_client JavaCoreTestClient
12+
---@field private test_client java_core.TestClient
1313
---@field private runner JavaCoreDapRunner
1414
local M = {}
1515

@@ -39,6 +39,24 @@ function M:new(args)
3939
return o
4040
end
4141

42+
---Returns a list of test methods
43+
---@param file_uri string uri of the class
44+
---@return java_core.TestDetailsWithRange[] # list of test methods
45+
function M:get_test_methods(file_uri)
46+
local classes = self.test_client:find_test_types_and_methods(file_uri)
47+
local methods = {}
48+
49+
for _, class in ipairs(classes) do
50+
for _, method in ipairs(class.children) do
51+
---@diagnostic disable-next-line: inject-field
52+
method.class = class
53+
table.insert(methods, method)
54+
end
55+
end
56+
57+
return methods
58+
end
59+
4260
---Runs the test class in the given buffer
4361
---@param buffer integer
4462
---@param config JavaCoreDapLauncherConfigOverridable
@@ -50,7 +68,7 @@ end
5068
---Returns test classes in the given buffer
5169
---@priate
5270
---@param buffer integer
53-
---@return JavaCoreTestDetailsWithChildrenAndRange # get test class details
71+
---@return java_core.TestDetailsWithChildrenAndRange # get test class details
5472
function M:get_test_class_by_buffer(buffer)
5573
log.debug('finding test class by buffer')
5674

@@ -59,8 +77,7 @@ function M:get_test_class_by_buffer(buffer)
5977
end
6078

6179
---Run the given test
62-
---@private
63-
---@param tests JavaCoreTestDetails[]
80+
---@param tests java_core.TestDetails[]
6481
---@param config? JavaCoreDapLauncherConfigOverridable config to override the default values in test launcher config
6582
function M:run_test(tests, config)
6683
---@type JavaCoreTestJunitLaunchArguments

lua/java-core/ls/clients/java-debug-client.lua

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
local JdtlsClient = require('java-core.ls.clients.jdtls-client')
22

3-
---@class JavaCoreDebugClient: JavaCoreJdtlsClient
3+
---@class JavaCoreDebugClient: java_core.JdtlsClient
44
local M = JdtlsClient:new()
55

66
---@class JavaDebugResolveMainClassRecord

lua/java-core/ls/clients/java-test-client.lua

Lines changed: 17 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
local log = require('java-core.utils.log')
22
local JdtlsClient = require('java-core.ls.clients.jdtls-client')
33

4-
---@class JavaCoreTestDetails: Configuration
4+
---@class java_core.TestDetails: Configuration
55
---@field fullName string
66
---@field id string
77
---@field jdtHandler string
@@ -11,29 +11,29 @@ local JdtlsClient = require('java-core.ls.clients.jdtls-client')
1111
---@field testLevel integer
1212
---@field uri string
1313

14-
---@class JavaCoreTestDetailsWithRange: JavaCoreTestDetails
15-
---@field range Range
14+
---@class java_core.TestDetailsWithRange: java_core.TestDetails
15+
---@field range java_core.TestRange
1616

17-
---@class JavaCoreTestDetailsWithChildren: JavaCoreTestDetails
18-
---@field children JavaCoreTestDetailsWithRange[]
17+
---@class java_core.TestDetailsWithChildren: java_core.TestDetails
18+
---@field children java_core.TestDetailsWithRange[]
1919

20-
---@class JavaCoreTestDetailsWithChildrenAndRange: JavaCoreTestDetails
21-
---@field range Range
22-
---@field children JavaCoreTestDetailsWithRange[]
20+
---@class java_core.TestDetailsWithChildrenAndRange: java_core.TestDetails
21+
---@field range java_core.TestRange
22+
---@field children java_core.TestDetailsWithRange[]
2323

24-
---@class Range
24+
---@class java_core.TestRange
2525
---@field start CursorPoint
2626
---@field end CursorPoint
2727

2828
---@class CursorPoint
2929
---@field line integer
3030
---@field character integer
3131

32-
---@class JavaCoreTestClient: JavaCoreJdtlsClient
32+
---@class java_core.TestClient: java_core.JdtlsClient
3333
local M = JdtlsClient:new()
3434

3535
---Returns a list of project details in the current root
36-
---@return JavaCoreTestDetails[] # test details of the projects
36+
---@return java_core.TestDetails[] # test details of the projects
3737
function M:find_java_projects()
3838
return self:execute_command(
3939
'vscode.java.test.findJavaProjects',
@@ -44,7 +44,7 @@ end
4444
---Returns a list of test package details
4545
---@param handler string
4646
---@param token? string
47-
---@return JavaCoreTestDetailsWithChildren[] # test package details
47+
---@return java_core.TestDetailsWithChildren[] # test package details
4848
function M:find_test_packages_and_types(handler, token)
4949
return self:execute_command(
5050
'vscode.java.test.findTestPackagesAndTypes',
@@ -55,7 +55,7 @@ end
5555
---Returns test informations in a given file
5656
---@param file_uri string
5757
---@param token? string
58-
---@return JavaCoreTestDetailsWithChildrenAndRange[] # test details
58+
---@return java_core.TestDetailsWithChildrenAndRange[] # test details
5959
function M:find_test_types_and_methods(file_uri, token)
6060
return self:execute_command(
6161
'vscode.java.test.findTestTypesAndMethods',
@@ -75,8 +75,8 @@ end
7575
---@class JavaCoreTestResolveJUnitLaunchArgumentsParams
7676
---@field project_name string
7777
---@field test_names string[]
78-
---@field test_level JavaCoreTestLevel
79-
---@field test_kind JavaCoreTestKind
78+
---@field test_level java_core.TestLevel
79+
---@field test_kind java_core.TestKind
8080

8181
---Returns junit launch arguments
8282
---@param args JavaCoreTestResolveJUnitLaunchArgumentsParams
@@ -97,15 +97,15 @@ function M:resolve_junit_launch_arguments(args)
9797
return launch_args.body
9898
end
9999

100-
---@enum JavaCoreTestKind
100+
---@enum java_core.TestKind
101101
M.TestKind = {
102102
JUnit5 = 0,
103103
JUnit = 1,
104104
TestNG = 2,
105105
None = 100,
106106
}
107107

108-
---@enum JavaCoreTestLevel
108+
---@enum java_core.TestLevel
109109
M.TestLevel = {
110110
Root = 0,
111111
Workspace = 1,

lua/java-core/ls/clients/jdtls-client.lua

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,12 +2,12 @@ local log = require('java-core.utils.log')
22
local async = require('java-core.utils.async')
33
local await = async.wait_handle_error
44

5-
---@class JavaCoreJdtlsClient
5+
---@class java_core.JdtlsClient
66
---@field client LspClient
77
local M = {}
88

99
---@param args? { client: LspClient }
10-
---@return JavaCoreJdtlsClient
10+
---@return java_core.JdtlsClient
1111
function M:new(args)
1212
local o = {
1313
client = (args or {}).client,

0 commit comments

Comments
 (0)