Skip to content

Commit 55c9cd5

Browse files
loganrosenCopilot
andauthored
Fix Ktlint exemption for flavor tests (#7345)
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
1 parent 6a34035 commit 55c9cd5

2 files changed

Lines changed: 99 additions & 105 deletions

File tree

.editorconfig

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,5 +26,5 @@ ij_kotlin_allow_trailing_comma = true
2626
ktlint_standard_function-expression-body = disabled
2727
max_line_length = 120
2828

29-
[**/test/**.kt]
29+
[**/src/test*/**.kt]
3030
max_line_length = off

app/src/testFull/kotlin/io/homeassistant/companion/android/thread/ThreadManagerImplTest.kt

Lines changed: 98 additions & 104 deletions
Original file line numberDiff line numberDiff line change
@@ -256,39 +256,37 @@ class ThreadManagerImplTest {
256256
}
257257

258258
@Test
259-
fun `Given only the server has a dataset and import succeeds when sync then returns OnlyOnServer imported`() =
260-
runTest {
261-
stubServerSupport(coreSupports = true)
262-
mockOrphanCleanup()
263-
mockPreferredCredentials(intentSender = null)
264-
coEvery { webSocketRepository.getThreadDatasets() } returns
265-
listOf(dataset(datasetId = "server", preferred = true))
266-
// No TLV on the server, so the import is a no-op that completes successfully
267-
coEvery { webSocketRepository.getThreadDatasetTlv(any()) } returns null
268-
269-
val result = assertInstanceOf(
270-
ThreadManager.SyncResult.OnlyOnServer::class.java,
271-
createManager().syncPreferredDataset(serverId = 1, scope = this),
272-
)
273-
assertTrue(result.imported)
274-
}
259+
fun `Given only the server has a dataset and import succeeds when sync then returns OnlyOnServer imported`() = runTest {
260+
stubServerSupport(coreSupports = true)
261+
mockOrphanCleanup()
262+
mockPreferredCredentials(intentSender = null)
263+
coEvery { webSocketRepository.getThreadDatasets() } returns
264+
listOf(dataset(datasetId = "server", preferred = true))
265+
// No TLV on the server, so the import is a no-op that completes successfully
266+
coEvery { webSocketRepository.getThreadDatasetTlv(any()) } returns null
267+
268+
val result = assertInstanceOf(
269+
ThreadManager.SyncResult.OnlyOnServer::class.java,
270+
createManager().syncPreferredDataset(serverId = 1, scope = this),
271+
)
272+
assertTrue(result.imported)
273+
}
275274

276275
@Test
277-
fun `Given only the server has a dataset and import fails when sync then returns OnlyOnServer not imported`() =
278-
runTest {
279-
stubServerSupport(coreSupports = true)
280-
mockOrphanCleanup()
281-
mockPreferredCredentials(intentSender = null)
282-
coEvery { webSocketRepository.getThreadDatasets() } returns
283-
listOf(dataset(datasetId = "server", preferred = true))
284-
coEvery { webSocketRepository.getThreadDatasetTlv(any()) } throws RuntimeException("import boom")
285-
286-
val result = assertInstanceOf(
287-
ThreadManager.SyncResult.OnlyOnServer::class.java,
288-
createManager().syncPreferredDataset(serverId = 1, scope = this),
289-
)
290-
assertFalse(result.imported)
291-
}
276+
fun `Given only the server has a dataset and import fails when sync then returns OnlyOnServer not imported`() = runTest {
277+
stubServerSupport(coreSupports = true)
278+
mockOrphanCleanup()
279+
mockPreferredCredentials(intentSender = null)
280+
coEvery { webSocketRepository.getThreadDatasets() } returns
281+
listOf(dataset(datasetId = "server", preferred = true))
282+
coEvery { webSocketRepository.getThreadDatasetTlv(any()) } throws RuntimeException("import boom")
283+
284+
val result = assertInstanceOf(
285+
ThreadManager.SyncResult.OnlyOnServer::class.java,
286+
createManager().syncPreferredDataset(serverId = 1, scope = this),
287+
)
288+
assertFalse(result.imported)
289+
}
292290

293291
@Test
294292
fun `Given only the device has a dataset when sync then returns OnlyOnDevice with intent`() = runTest {
@@ -328,24 +326,23 @@ class ThreadManagerImplTest {
328326
}
329327

330328
@Test
331-
fun `Given both have datasets and the comparison fails when sync then returns AllHaveCredentials with nulls`() =
332-
runTest {
333-
stubServerSupport(coreSupports = true)
334-
mockOrphanCleanup()
335-
mockPreferredCredentials(intentSender = mockk())
336-
coEvery { webSocketRepository.getThreadDatasets() } returns
337-
listOf(dataset(datasetId = "server", preferred = true))
338-
coEvery { webSocketRepository.getThreadDatasetTlv(any()) } throws RuntimeException("compare boom")
339-
340-
val result = assertInstanceOf(
341-
ThreadManager.SyncResult.AllHaveCredentials::class.java,
342-
createManager().syncPreferredDataset(serverId = 1, scope = this),
343-
)
344-
assertNull(result.matches)
345-
assertNull(result.fromApp)
346-
assertNull(result.updated)
347-
assertNull(result.exportIntent)
348-
}
329+
fun `Given both have datasets and the comparison fails when sync then returns AllHaveCredentials with nulls`() = runTest {
330+
stubServerSupport(coreSupports = true)
331+
mockOrphanCleanup()
332+
mockPreferredCredentials(intentSender = mockk())
333+
coEvery { webSocketRepository.getThreadDatasets() } returns
334+
listOf(dataset(datasetId = "server", preferred = true))
335+
coEvery { webSocketRepository.getThreadDatasetTlv(any()) } throws RuntimeException("compare boom")
336+
337+
val result = assertInstanceOf(
338+
ThreadManager.SyncResult.AllHaveCredentials::class.java,
339+
createManager().syncPreferredDataset(serverId = 1, scope = this),
340+
)
341+
assertNull(result.matches)
342+
assertNull(result.fromApp)
343+
assertNull(result.updated)
344+
assertNull(result.exportIntent)
345+
}
349346

350347
@Test
351348
fun `Given the device already prefers the server dataset when sync then matches without exporting`() = runTest {
@@ -375,65 +372,62 @@ class ThreadManagerImplTest {
375372
}
376373

377374
@Test
378-
fun `Given the device prefers an app-added dataset when sync then updates the device to the server dataset`() =
379-
runTest {
380-
stubServerSupport(coreSupports = true)
381-
mockOrphanCleanup()
382-
mockPreferredCredentials(intentSender = mockk())
383-
coEvery { webSocketRepository.getThreadDatasets() } returns
384-
listOf(dataset(datasetId = "server", preferred = true))
385-
// No TLV, so the device does not prefer the server dataset directly...
386-
coEvery { webSocketRepository.getThreadDatasetTlv(any()) } returns null
387-
// ...but it does prefer a credential this app added previously
388-
mockDeviceCredentialPrefersApp()
389-
390-
val result = assertInstanceOf(
391-
ThreadManager.SyncResult.AllHaveCredentials::class.java,
392-
createManager().syncPreferredDataset(serverId = 1, scope = this),
393-
)
394-
assertEquals(false, result.matches)
395-
assertEquals(true, result.fromApp)
396-
assertEquals(true, result.updated)
397-
assertNull(result.exportIntent)
398-
}
375+
fun `Given the device prefers an app-added dataset when sync then updates the device to the server dataset`() = runTest {
376+
stubServerSupport(coreSupports = true)
377+
mockOrphanCleanup()
378+
mockPreferredCredentials(intentSender = mockk())
379+
coEvery { webSocketRepository.getThreadDatasets() } returns
380+
listOf(dataset(datasetId = "server", preferred = true))
381+
// No TLV, so the device does not prefer the server dataset directly...
382+
coEvery { webSocketRepository.getThreadDatasetTlv(any()) } returns null
383+
// ...but it does prefer a credential this app added previously
384+
mockDeviceCredentialPrefersApp()
385+
386+
val result = assertInstanceOf(
387+
ThreadManager.SyncResult.AllHaveCredentials::class.java,
388+
createManager().syncPreferredDataset(serverId = 1, scope = this),
389+
)
390+
assertEquals(false, result.matches)
391+
assertEquals(true, result.fromApp)
392+
assertEquals(true, result.updated)
393+
assertNull(result.exportIntent)
394+
}
399395

400396
@Test
401-
fun `Given a foreign-sourced server dataset preferred via an app credential when sync then removes it`() =
402-
runTest {
403-
stubServerSupport(coreSupports = true)
404-
mockOrphanCleanup()
405-
mockPreferredCredentials(intentSender = mockk())
406-
// The server's preferred dataset reports it originated from another app (not HA), so HA
407-
// should stop managing it: remove its own contributed credential without re-importing.
408-
coEvery { webSocketRepository.getThreadDatasets() } returns
409-
listOf(dataset(datasetId = "server", preferred = true, source = "Google"))
410-
// No TLV, so the device does not prefer the server dataset directly...
411-
coEvery { webSocketRepository.getThreadDatasetTlv(any()) } returns null
412-
// ...but it does prefer a credential this app added previously, which is what lets HA
413-
// remove it. A credential added by another app could not be removed here (see the
414-
// "neither is device-preferred" test, which exports instead of removing).
415-
mockDeviceCredentialPrefersApp()
416-
417-
val result = assertInstanceOf(
418-
ThreadManager.SyncResult.AllHaveCredentials::class.java,
419-
createManager().syncPreferredDataset(serverId = 1, scope = this),
420-
)
421-
assertEquals(false, result.matches)
422-
assertEquals(true, result.fromApp)
423-
assertEquals(false, result.updated)
424-
assertNull(result.exportIntent)
425-
}
397+
fun `Given a foreign-sourced server dataset preferred via an app credential when sync then removes it`() = runTest {
398+
stubServerSupport(coreSupports = true)
399+
mockOrphanCleanup()
400+
mockPreferredCredentials(intentSender = mockk())
401+
// The server's preferred dataset reports it originated from another app (not HA), so HA
402+
// should stop managing it: remove its own contributed credential without re-importing.
403+
coEvery { webSocketRepository.getThreadDatasets() } returns
404+
listOf(dataset(datasetId = "server", preferred = true, source = "Google"))
405+
// No TLV, so the device does not prefer the server dataset directly...
406+
coEvery { webSocketRepository.getThreadDatasetTlv(any()) } returns null
407+
// ...but it does prefer a credential this app added previously, which is what lets HA
408+
// remove it. A credential added by another app could not be removed here (see the
409+
// "neither is device-preferred" test, which exports instead of removing).
410+
mockDeviceCredentialPrefersApp()
411+
412+
val result = assertInstanceOf(
413+
ThreadManager.SyncResult.AllHaveCredentials::class.java,
414+
createManager().syncPreferredDataset(serverId = 1, scope = this),
415+
)
416+
assertEquals(false, result.matches)
417+
assertEquals(true, result.fromApp)
418+
assertEquals(false, result.updated)
419+
assertNull(result.exportIntent)
420+
}
426421
}
427422

428-
private fun dataset(datasetId: String, preferred: Boolean, source: String = "HomeAssistant") =
429-
ThreadDatasetResponse(
430-
datasetId = datasetId,
431-
extendedPanId = "extended-pan-id",
432-
networkName = "network-$datasetId",
433-
panId = "pan-id",
434-
preferred = preferred,
435-
source = source,
436-
)
423+
private fun dataset(datasetId: String, preferred: Boolean, source: String = "HomeAssistant") = ThreadDatasetResponse(
424+
datasetId = datasetId,
425+
extendedPanId = "extended-pan-id",
426+
networkName = "network-$datasetId",
427+
panId = "pan-id",
428+
preferred = preferred,
429+
source = source,
430+
)
437431

438432
private fun stubServerSupport(coreSupports: Boolean) {
439433
coEvery { serverManager.isRegistered() } returns true

0 commit comments

Comments
 (0)