|  |  | @ -6,32 +6,29 @@ import alfred.web.core.build.Workspaces | 
			
		
	
		
		
			
				
					
					|  |  |  | import alfred.web.core.event.BuildFinished |  |  |  | import alfred.web.core.event.BuildFinished | 
			
		
	
		
		
			
				
					
					|  |  |  | import alfred.web.core.eventPublisher |  |  |  | import alfred.web.core.eventPublisher | 
			
		
	
		
		
			
				
					
					|  |  |  | import alfred.web.core.process.Script |  |  |  | import alfred.web.core.process.Script | 
			
		
	
		
		
			
				
					
					|  |  |  | import io.mockk.every |  |  |  | import io.mockk.* | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  |  | import io.mockk.mockk |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | import io.mockk.slot |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | import io.mockk.spyk |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | import io.mockk.verify |  |  |  |  | 
			
		
	
		
		
	
		
		
			
				
					
					|  |  |  | import org.junit.jupiter.api.Test |  |  |  | import org.junit.jupiter.api.Test | 
			
		
	
		
		
			
				
					
					|  |  |  | import org.junit.jupiter.api.io.TempDir |  |  |  | import org.junit.jupiter.api.io.TempDir | 
			
		
	
		
		
			
				
					
					|  |  |  | import java.nio.file.Path |  |  |  | import java.nio.file.Path | 
			
		
	
		
		
			
				
					
					|  |  |  | import java.nio.file.Paths |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  | class ScriptRunnerTest { |  |  |  | class ScriptRunnerTest { | 
			
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  |     @Test |  |  |  |     @Test | 
			
		
	
		
		
			
				
					
					|  |  |  |     fun runs(@TempDir logDir: Path) { |  |  |  |     fun runs(@TempDir homeDir: Path) { | 
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					|  |  |  |         // Given |  |  |  |         // Given | 
			
		
	
		
		
			
				
					
					|  |  |  |         val home = spyk( |  |  |  |         val home = mockk<AlfredHome>() | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  |  |             AlfredHome( |  |  |  |         every { home.buildConfig(any()) } returns homeDir.resolve("simple-script.properties") | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  |  |                 Paths.get("").toAbsolutePath().resolve("src/test/resources/home-1").toString() |  |  |  |         every { home.logsDir() } returns homeDir.resolve("logs") | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  |  |             ) |  |  |  |         every { home.homePath } returns homeDir | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  |  |         ) |  |  |  |         homeDir | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  |  |         every { home.logsDir() } returns logDir |  |  |  |             .resolve("simple-script.properties") | 
			
				
				
			
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |             .toFile() | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |             .writeText(buildProperties()) | 
			
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  |         val eventPublisher = eventPublisher(BuildFinished::class) |  |  |  |         val eventPublisher = eventPublisher(BuildFinished::class) | 
			
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  |         val script = mockk<Script>() |  |  |  |         val script = mockk<Script>(relaxed = true) | 
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					|  |  |  |         every { script.execute(any(), any(), any()) } returns mockk<Process>(relaxed = true) |  |  |  |         every { script.execute(any(), any(), any()) } returns mockk<Process>(relaxed = true) | 
			
		
	
		
		
			
				
					
					|  |  |  |         val onExit = slot<() -> Unit>() |  |  |  |         val onExit = slot<() -> Unit>() | 
			
		
	
		
		
			
				
					
					|  |  |  |         every { script.onExit(any(), capture(onExit)) } answers { onExit.captured() } |  |  |  |         every { script.onExit(any(), capture(onExit)) } answers { onExit.captured() } | 
			
		
	
	
		
		
			
				
					|  |  | @ -52,7 +49,7 @@ class ScriptRunnerTest { | 
			
		
	
		
		
			
				
					
					|  |  |  |         ) |  |  |  |         ) | 
			
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  |         // Then |  |  |  |         // Then | 
			
		
	
		
		
			
				
					
					|  |  |  |         verify(timeout = 1_000, exactly = 1) { |  |  |  |         verifyOrder { | 
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					|  |  |  |             script.execute(any(), any(), match { it.name == "some-script" }) |  |  |  |             script.execute(any(), any(), match { it.name == "some-script" }) | 
			
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  |             workspaces.cleanUp(any()) |  |  |  |             workspaces.cleanUp(any()) | 
			
		
	
	
		
		
			
				
					|  |  | @ -61,4 +58,13 @@ class ScriptRunnerTest { | 
			
		
	
		
		
			
				
					
					|  |  |  |         } |  |  |  |         } | 
			
		
	
		
		
			
				
					
					|  |  |  |     } |  |  |  |     } | 
			
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |     fun buildProperties() = | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |         """ | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |             user=alfred | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |             workspace=/tmp | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |             apikey=Mellon | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |             script=some-script | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |         """.trimIndent() | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  | } |  |  |  | } | 
			
		
	
	
		
		
			
				
					|  |  | 
 |