Skip to content

Commit 81cef7b

Browse files
rcasiaasmodeus812
authored andcommitted
refactor: improve api for compiler
1 parent cdd78a4 commit 81cef7b

File tree

3 files changed

+43
-34
lines changed

3 files changed

+43
-34
lines changed
Lines changed: 17 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,21 @@
1+
local jdtls_compiler = require("neotest-java.core.spec_builder.compiler.jdtls")
2+
3+
---@class NeotestJavaCompiler.Opts
4+
---@field cwd string
5+
---@field classpath_file_dir string
6+
---@field compile_mode string
7+
8+
--- Interface for Java compilers
9+
---@class NeotestJavaCompiler
10+
local NeotestJavaCompiler = {}
11+
12+
---@param opts NeotestJavaCompiler.Opts
13+
---@return string classpath_file_arg
14+
function NeotestJavaCompiler.compile(opts) end
15+
16+
---@type table<string, NeotestJavaCompiler>
117
local compilers = {
2-
jdtls = require("neotest-java.core.spec_builder.compiler.jdtls"),
18+
jdtls = jdtls_compiler,
319
}
420

521
return compilers

lua/neotest-java/core/spec_builder/compiler/jdtls.lua

Lines changed: 23 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -3,35 +3,31 @@ local nio = require("nio")
33
local _jdtls = require("neotest-java.command.jdtls")
44
local scan = require("plenary.scandir")
55

6-
---@class NeotestJava.compilerOpts
7-
---@field cwd string
8-
---@field classpath_file_dir string
9-
---@field compile_mode string
6+
---@type NeotestJavaCompiler
7+
local jdtls_compiler = {
8+
compile = function(args)
9+
-- check that required dependencies are present
10+
local ok_jdtls, jdtls = pcall(require, "jdtls")
11+
assert(ok_jdtls, "neotest-java requires nvim-jdtls to tests")
1012

11-
---@param args NeotestJava.compilerOpts
12-
---@return string classpath_file_arg
13-
local function compile(args)
14-
-- check that required dependencies are present
15-
local ok_jdtls, jdtls = pcall(require, "jdtls")
16-
assert(ok_jdtls, "neotest-java requires nvim-jdtls to tests")
13+
-- check there is an active java client
14+
local has_jdtls_client = #nio.lsp.get_clients({ name = "jdtls" }) ~= 0
15+
assert(has_jdtls_client, "there is no jdtls client attached.")
1716

18-
-- check there is an active java client
19-
local has_jdtls_client = #nio.lsp.get_clients({ name = "jdtls" }) ~= 0
20-
assert(has_jdtls_client, "there is no jdtls client attached.")
17+
logger.debug(("compilation in %s mode"):format(args.compile_mode))
18+
nio.run(function(_)
19+
nio.scheduler()
20+
jdtls.compile(args.compile_mode)
21+
end):wait()
22+
logger.debug("compilation complete!")
2123

22-
logger.debug(("compilation in %s mode"):format(args.compile_mode))
23-
nio.run(function(_)
24-
nio.scheduler()
25-
jdtls.compile(args.compile_mode)
26-
end):wait()
27-
logger.debug("compilation complete!")
24+
local resources = scan.scan_dir(args.cwd, {
25+
only_dirs = true,
26+
search_pattern = "test/resources$",
27+
})
2828

29-
local resources = scan.scan_dir(args.cwd, {
30-
only_dirs = true,
31-
search_pattern = "test/resources$",
32-
})
29+
return _jdtls.get_classpath_file_argument(args.classpath_file_dir, resources)
30+
end,
31+
}
3332

34-
return _jdtls.get_classpath_file_argument(args.classpath_file_dir, resources)
35-
end
36-
37-
return compile
33+
return jdtls_compiler

lua/neotest-java/core/spec_builder/init.lua

Lines changed: 3 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@ local compatible_path = require("neotest-java.util.compatible_path")
1616
local Project = require("neotest-java.types.project")
1717
local ch = require("neotest-java.context_holder")
1818
local find_module_by_filepath = require("neotest-java.util.find_module_by_filepath")
19-
local compiler = require("neotest-java.core.spec_builder.compiler")
19+
local compilers = require("neotest-java.core.spec_builder.compiler")
2020

2121
local SpecBuilder = {}
2222

@@ -98,11 +98,8 @@ function SpecBuilder.build_spec(args, project_type, config)
9898
end
9999
logger.debug("building complete!")
100100

101-
local resources = scan.scan_dir(base_dir, {
102-
only_dirs = true,
103-
search_pattern = "test/resources$",
104-
})
105-
local classpath_file_arg = _jdtls.get_classpath_file_argument(reports_dir, resources)
101+
local classpath_file_arg =
102+
compilers.jdtls.compile({ cwd = base_dir, classpath_file_dir = output_dir, compile_mode = build_mode })
106103
-- local classpath_file_arg = compile(compile_mode)
107104
command:classpath_file_arg(classpath_file_arg)
108105

0 commit comments

Comments
 (0)