Skip to content

Commit 09a0cdd

Browse files
committed
Add CLITest for testing CLI commands in Processing IDE
Introduces a new Kotlin test class, CLITest, to facilitate running and testing CLI commands of the Processing IDE directly from the IDE. This allows for easier and faster development and debugging of CLI features without manual command line invocation.
1 parent 9de5e36 commit 09a0cdd

File tree

1 file changed

+50
-0
lines changed

1 file changed

+50
-0
lines changed

app/test/processing/app/CLITest.kt

Lines changed: 50 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,50 @@
1+
package processing.app
2+
3+
import java.io.File
4+
import kotlin.test.Test
5+
6+
/*
7+
This class is used to test the CLI commands of the Processing IDE.
8+
It mostly exists to quickly run CLI commands without having to specify run configurations
9+
or to manually run it on the command line.
10+
11+
In IntelliJ IDEA, it should display runnable arrows next to each test method.
12+
Use this to quickly test the CLI commands.
13+
The output will be displayed in the console after `Running CLI with arguments: ...`.
14+
When developing on the CLI commands, feel free to add more test methods here.
15+
*/
16+
class CLITest {
17+
18+
@Test
19+
fun testLSP(){
20+
runCLIWithArguments("lsp")
21+
}
22+
23+
@Test
24+
fun testLegacyCLI(){
25+
runCLIWithArguments("cli --help")
26+
}
27+
28+
/*
29+
This function runs the CLI with the given arguments.
30+
*/
31+
fun runCLIWithArguments(args: String) {
32+
// TODO: Once Processing PDE correctly builds in IntelliJ IDEA switch over to using the code directly
33+
// To see if the PDE builds correctly can be tested by running the Processing.kt main function directly in IntelliJ IDEA
34+
// Set the JAVA_HOME environment variable to the JDK used by the IDE
35+
println("Running CLI with arguments: $args")
36+
val process = ProcessBuilder("./gradlew", "run", "--args=$args", "--quiet")
37+
.directory(File(System.getProperty("user.dir")).resolve("../../../"))
38+
.inheritIO()
39+
40+
process.environment().apply {
41+
put("JAVA_HOME", System.getProperty("java.home"))
42+
}
43+
44+
val result = process
45+
.start()
46+
.waitFor()
47+
println("Done running CLI with arguments: $args (Result: $result)")
48+
49+
}
50+
}

0 commit comments

Comments
 (0)