Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 4 additions & 2 deletions lua/java-core/adapters/init.lua
Original file line number Diff line number Diff line change
@@ -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')
Expand Down Expand Up @@ -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
Expand All @@ -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)
Expand Down
27 changes: 22 additions & 5 deletions lua/java-core/api/test.lua
Original file line number Diff line number Diff line change
Expand Up @@ -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 = {}

Expand Down Expand Up @@ -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
Expand All @@ -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')

Expand All @@ -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
Expand Down
2 changes: 1 addition & 1 deletion lua/java-core/ls/clients/java-debug-client.lua
Original file line number Diff line number Diff line change
@@ -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
Expand Down
34 changes: 17 additions & 17 deletions lua/java-core/ls/clients/java-test-client.lua
Original file line number Diff line number Diff line change
@@ -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
Expand All @@ -11,29 +11,29 @@ 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

---@class CursorPoint
---@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',
Expand All @@ -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',
Expand All @@ -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',
Expand All @@ -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
Expand All @@ -97,15 +97,15 @@ function M:resolve_junit_launch_arguments(args)
return launch_args.body
end

---@enum JavaCoreTestKind
---@enum java_core.TestKind
M.TestKind = {
JUnit5 = 0,
JUnit = 1,
TestNG = 2,
None = 100,
}

---@enum JavaCoreTestLevel
---@enum java_core.TestLevel
M.TestLevel = {
Root = 0,
Workspace = 1,
Expand Down
4 changes: 2 additions & 2 deletions lua/java-core/ls/clients/jdtls-client.lua
Original file line number Diff line number Diff line change
Expand Up @@ -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,
Expand Down