Skip to content

Commit accdfbb

Browse files
committed
Tools: Make ngr invoke Java projects
1 parent ede2444 commit accdfbb

File tree

1 file changed

+53
-1
lines changed

1 file changed

+53
-1
lines changed

testing/ngr.py

Lines changed: 53 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,7 @@
2929

3030
class ItemType(Enum):
3131
DOTNET = "dotnet"
32+
JAVA = "java"
3233
PHP = "php"
3334
PYTHON = "python"
3435
RUBY = "ruby"
@@ -47,6 +48,7 @@ def __init__(self, thing: t.Any, options: t.Dict) -> None:
4748
self.type: ItemType = None
4849
self.runners = {
4950
ItemType.DOTNET: DotNetRunner,
51+
ItemType.JAVA: JavaRunner,
5052
ItemType.PHP: PhpRunner,
5153
ItemType.PYTHON: PythonRunner,
5254
ItemType.RUBY: RubyRunner,
@@ -99,6 +101,7 @@ def __init__(self, path: Path, options: t.Dict) -> None:
99101
self.type: ItemType = None
100102
if hasattr(self, "__post_init__"):
101103
self.__post_init__()
104+
self.has_makefile = mp(self.path, "Makefile")
102105
self.peek()
103106

104107
def run(self) -> None:
@@ -162,7 +165,7 @@ def info(self) -> None:
162165

163166
def install(self) -> None:
164167
"""
165-
Install dependencies of from `.csproj` file.
168+
Install dependencies from `.csproj` file.
166169
"""
167170
self.adjust_npgql_version()
168171
run_command("dotnet restore")
@@ -187,6 +190,55 @@ def test(self) -> None:
187190
run_command(f'dotnet test --framework={self.framework} --collect:"XPlat Code Coverage"')
188191

189192

193+
class JavaRunner(RunnerBase):
194+
"""
195+
Java test suite runner.
196+
197+
- Knows how to invoke either Gradle or Maven.
198+
"""
199+
200+
def __post_init__(self) -> None:
201+
self.has_pom_xml = None
202+
self.has_gradle_files = None
203+
204+
def peek(self) -> None:
205+
self.has_pom_xml = mp(self.path, "pom.xml")
206+
self.has_gradle_files = mp(self.path, "*.gradle")
207+
208+
if self.has_pom_xml or self.has_gradle_files:
209+
self.type = ItemType.JAVA
210+
211+
def info(self) -> None:
212+
"""
213+
Display environment information.
214+
"""
215+
run_command("java -version")
216+
217+
def install(self) -> None:
218+
"""
219+
Install dependencies.
220+
"""
221+
if self.has_pom_xml:
222+
run_command("mvn install")
223+
elif self.has_gradle_files:
224+
run_command("./gradlew install")
225+
else:
226+
raise NotImplementedError("Unable to invoke target: install")
227+
228+
def test(self) -> None:
229+
"""
230+
Invoke software tests.
231+
"""
232+
if self.has_makefile:
233+
run_command("make test")
234+
elif self.has_pom_xml:
235+
run_command(f'mvn test')
236+
elif self.has_gradle_files:
237+
run_command("./gradlew check")
238+
else:
239+
raise NotImplementedError("Unable to invoke target: test")
240+
241+
190242
class PhpRunner(RunnerBase):
191243
"""
192244
Basic PHP runner.

0 commit comments

Comments
 (0)