@@ -10,8 +10,10 @@ import org.junit.experimental.runners.Enclosed
1010import org.junit.runner.RunWith
1111import org.junit.runners.Suite.SuiteClasses
1212import java.io.ByteArrayOutputStream
13+ import java.io.File
1314import java.io.OutputStream
1415import java.io.PrintStream
16+ import java.nio.file.Files
1517
1618@RunWith(Enclosed ::class )
1719@SuiteClasses(
@@ -38,14 +40,18 @@ class MainTest {
3840 System .setOut(originalOutput)
3941 }
4042
41- protected fun runMainInSeparateProcess (arguments : Array <String >): Int {
43+ protected fun runMainInSeparateProcess (
44+ arguments : Array <String >,
45+ workingDirectory : File = Files .createTempDirectory("cag-cli-test").toFile()
46+ ): Int {
4247 val processBuilder =
4348 ProcessBuilder (
4449 System .getProperty(" java.home" ) + " /bin/java" ,
4550 " -classpath" ,
4651 System .getProperty(" java.class.path" ),
4752 " com.mitteloupe.cag.cli.MainKt"
4853 )
54+ processBuilder.directory(workingDirectory)
4955 processBuilder.command().addAll(arguments.toList())
5056 return processBuilder.start().waitFor()
5157 }
@@ -167,8 +173,17 @@ Options:
167173 class GenerationException : BaseMainTest () {
168174 @Test
169175 fun `Given generation exception when main then process exits with code 1` () {
176+ // Given
177+ val temporaryDirectory = Files .createTempDirectory(" cag-cli-test-" ).toFile()
178+ val existingProjectDirectory = File (temporaryDirectory, " TestProject" )
179+ existingProjectDirectory.mkdirs()
180+
170181 // When
171- val exitCode = runMainInSeparateProcess(arrayOf(" --new-project" , " --name=TestProject" , " --package=com.test" ))
182+ val exitCode =
183+ runMainInSeparateProcess(
184+ arrayOf(" --new-project" , " --name=TestProject" , " --package=com.test" ),
185+ temporaryDirectory
186+ )
172187
173188 // Then
174189 assertEquals(1 , exitCode)
0 commit comments