From fc822ee3590345422b9abb28e439c2a5c3d4aa9d Mon Sep 17 00:00:00 2001 From: PJ Date: Sat, 6 Jun 2026 11:01:02 +0530 Subject: [PATCH] test(sidecar): cover service shutdown paths --- .../sanderling/sidecar/DriverServiceTest.kt | 39 +++++++++++++++++++ 1 file changed, 39 insertions(+) diff --git a/sidecar/src/test/kotlin/dev/sanderling/sidecar/DriverServiceTest.kt b/sidecar/src/test/kotlin/dev/sanderling/sidecar/DriverServiceTest.kt index 9379b78..710908f 100644 --- a/sidecar/src/test/kotlin/dev/sanderling/sidecar/DriverServiceTest.kt +++ b/sidecar/src/test/kotlin/dev/sanderling/sidecar/DriverServiceTest.kt @@ -54,6 +54,45 @@ class DriverServiceTest { assertEquals(null, backend.lastBundleId) } + @Test fun shutdownTerminatesLaunchedAppAndClosesBackend() { + var terminated: String? = null + var closed = false + val backend = object : DriverBackend by StubDriverBackend("android") { + override fun terminate(bundleId: String) { terminated = bundleId } + override fun close() { closed = true } + } + val serverName = InProcessServerBuilder.generateName() + val service = DriverService(platform = "android", backend = backend) + grpcCleanup.register( + InProcessServerBuilder.forName(serverName).directExecutor().addService(service).build().start() + ) + val channel: ManagedChannel = grpcCleanup.register( + InProcessChannelBuilder.forName(serverName).directExecutor().build() + ) + val client = DriverGrpc.newBlockingStub(channel) + + client.launch(LaunchRequest.newBuilder().setBundleId("com.example").build()) + service.shutdown() + + assertEquals("com.example", terminated) + assertTrue(closed) + } + + @Test fun shutdownWithoutLaunchedAppStillClosesBackend() { + var terminated: String? = null + var closed = false + val backend = object : DriverBackend by StubDriverBackend("android") { + override fun terminate(bundleId: String) { terminated = bundleId } + override fun close() { closed = true } + } + val service = DriverService(platform = "android", backend = backend) + + service.shutdown() + + assertEquals(null, terminated) + assertTrue(closed) + } + @Test fun tapForwardsCoordinates() { val backend = StubDriverBackend("android") val client = newClient(backend)