Skip to content

Commit 3a5f275

Browse files
committed
Refactor
1 parent cf9683d commit 3a5f275

File tree

5 files changed

+161
-101
lines changed

5 files changed

+161
-101
lines changed

bsp-testkit/client/ProtocolSuite.kt

Lines changed: 29 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -55,7 +55,7 @@ class ProtocolSuite(private val workspacePath: Path) {
5555
}
5656

5757
private suspend fun testCompileRequest(
58-
session: Session<MockServer>,
58+
session: Session<MockServer, MockClient>,
5959
capabilities: BuildServerCapabilities,
6060
testType: ExecutionTestType,
6161
) {
@@ -74,7 +74,7 @@ class ProtocolSuite(private val workspacePath: Path) {
7474
}
7575

7676
private suspend fun testRunRequest(
77-
session: Session<MockServer>,
77+
session: Session<MockServer, MockClient>,
7878
capabilities: BuildServerCapabilities,
7979
testType: ExecutionTestType,
8080
) {
@@ -93,7 +93,7 @@ class ProtocolSuite(private val workspacePath: Path) {
9393
}
9494

9595
private suspend fun testTestRequest(
96-
session: Session<MockServer>,
96+
session: Session<MockServer, MockClient>,
9797
capabilities: BuildServerCapabilities,
9898
testType: ExecutionTestType,
9999
) {
@@ -112,7 +112,7 @@ class ProtocolSuite(private val workspacePath: Path) {
112112
}
113113

114114
private fun checkExecutionAssertions(
115-
session: Session<MockServer>,
115+
session: Session<MockServer, MockClient>,
116116
resultOriginId: String,
117117
testType: ExecutionTestType,
118118
) {
@@ -155,7 +155,7 @@ class ProtocolSuite(private val workspacePath: Path) {
155155
@DisplayName("Initialization succeeds")
156156
fun initializationSucceeds() = runTest(timeout = 20.seconds) {
157157
println("Initialization succeeds")
158-
withSession(workspacePath, serverClass = MockServer::class.java) { session ->
158+
withSession(workspacePath, client = MockClient(), serverClass = MockServer::class.java) { session ->
159159
val initializationResult = session.server.buildInitialize(initializeParamsNoCapabilities).await()
160160
session.server.onBuildInitialized()
161161
session.server.buildShutdown().await()
@@ -168,7 +168,7 @@ class ProtocolSuite(private val workspacePath: Path) {
168168
@DisplayName("Server exits with 0 after a shutdown request")
169169
fun exitAfterShutdown() = runTest(timeout = 20.seconds) {
170170
println("Server exits with 0 after a shutdown request")
171-
withSession(workspacePath, true, serverClass = MockServer::class.java) { session ->
171+
withSession(workspacePath, true, client = MockClient(), serverClass = MockServer::class.java) { session ->
172172
session.server.buildInitialize(initializeParamsNoCapabilities).await()
173173
session.server.onBuildInitialized()
174174
session.server.buildShutdown().await()
@@ -182,7 +182,7 @@ class ProtocolSuite(private val workspacePath: Path) {
182182
@DisplayName("Server exits with 1 without a shutdown request")
183183
fun exitNoShutdown() = runTest(timeout = 20.seconds) {
184184
println("Server exits with 1 without a shutdown request")
185-
withSession(workspacePath, true, serverClass = MockServer::class.java) { session ->
185+
withSession(workspacePath, true, client = MockClient(), serverClass = MockServer::class.java) { session ->
186186
session.server.buildInitialize(initializeParamsNoCapabilities).await()
187187
session.server.onBuildInitialized()
188188
session.server.onBuildExit()
@@ -195,7 +195,7 @@ class ProtocolSuite(private val workspacePath: Path) {
195195
@DisplayName("Server exits with 0 without initialization")
196196
fun exitNoInitialization() = runTest(timeout = 20.seconds) {
197197
println("Server exits with 0 without initialization")
198-
withSession(workspacePath, true, serverClass = MockServer::class.java) { session ->
198+
withSession(workspacePath, true, client = MockClient(), serverClass = MockServer::class.java) { session ->
199199
session.server.onBuildExit()
200200
val sessionResult = session.serverClosed.await()
201201
assertEquals(0, sessionResult.exitCode)
@@ -206,7 +206,7 @@ class ProtocolSuite(private val workspacePath: Path) {
206206
@DisplayName("No build targets are returned if the client has no capabilities")
207207
fun buildTargets() = runTest(timeout = 20.seconds) {
208208
println("No build targets are returned if the client has no capabilities")
209-
withSession(workspacePath, serverClass = MockServer::class.java) { session ->
209+
withSession(workspacePath, client = MockClient(), serverClass = MockServer::class.java) { session ->
210210
withLifetime(initializeParamsNoCapabilities, session) {
211211
val result = session.server.workspaceBuildTargets().await()
212212
assertTrue(result.targets.all { it.languageIds.isEmpty() })
@@ -218,7 +218,7 @@ class ProtocolSuite(private val workspacePath: Path) {
218218
@DisplayName("Reload request works if is supported")
219219
fun reload() = runTest(timeout = 20.seconds) {
220220
println("Reload request works if is supported")
221-
withSession(workspacePath, serverClass = MockServer::class.java) { session ->
221+
withSession(workspacePath, client = MockClient(), serverClass = MockServer::class.java) { session ->
222222
withLifetime(initializeParamsFullCapabilities, session) { capabilities ->
223223
if (capabilities.canReload == true) {
224224
session.server.workspaceReload()
@@ -231,7 +231,7 @@ class ProtocolSuite(private val workspacePath: Path) {
231231
@DisplayName("Target sources list is empty if given no targets")
232232
fun sources() = runTest(timeout = 20.seconds) {
233233
println("Target sources list is empty if given no targets")
234-
withSession(workspacePath, serverClass = MockServer::class.java) { session ->
234+
withSession(workspacePath, client = MockClient(), serverClass = MockServer::class.java) { session ->
235235
withLifetime(initializeParamsFullCapabilities, session) {
236236
val result = session.server.buildTargetSources(SourcesParams(ArrayList())).await()
237237
assertTrue(result.items.isEmpty())
@@ -243,7 +243,7 @@ class ProtocolSuite(private val workspacePath: Path) {
243243
@DisplayName("Dependency sources list is empty if given no targets (if supported)")
244244
fun dependencySources() = runTest(timeout = 20.seconds) {
245245
println("Dependency sources list is empty if given no targets (if supported)")
246-
withSession(workspacePath, serverClass = MockServer::class.java) { session ->
246+
withSession(workspacePath, client = MockClient(), serverClass = MockServer::class.java) { session ->
247247
withLifetime(initializeParamsFullCapabilities, session) { capabilities ->
248248
if (capabilities.dependencySourcesProvider == true) {
249249
val result = session.server.buildTargetDependencySources(DependencySourcesParams(ArrayList())).await()
@@ -257,7 +257,7 @@ class ProtocolSuite(private val workspacePath: Path) {
257257
@DisplayName("Dependency modules list is empty if given no targets (if supported)")
258258
fun dependencyModules() = runTest(timeout = 20.seconds) {
259259
println("Dependency modules list is empty if given no targets (if supported)")
260-
withSession(workspacePath, serverClass = MockServer::class.java) { session ->
260+
withSession(workspacePath, client = MockClient(), serverClass = MockServer::class.java) { session ->
261261
withLifetime(initializeParamsFullCapabilities, session) { capabilities ->
262262
if (capabilities.dependencyModulesProvider == true) {
263263
val result = session.server.buildTargetDependencyModules(DependencyModulesParams(ArrayList())).await()
@@ -271,7 +271,7 @@ class ProtocolSuite(private val workspacePath: Path) {
271271
@DisplayName("Resources list is empty if given no targets (if supported)")
272272
fun resources() = runTest(timeout = 20.seconds) {
273273
println("Resources list is empty if given no targets (if supported)")
274-
withSession(workspacePath, serverClass = MockServer::class.java) { session ->
274+
withSession(workspacePath, client = MockClient(), serverClass = MockServer::class.java) { session ->
275275
withLifetime(initializeParamsFullCapabilities, session) { capabilities ->
276276
if (capabilities.resourcesProvider == true) {
277277
val result = session.server.buildTargetResources(ResourcesParams(ArrayList())).await()
@@ -285,7 +285,7 @@ class ProtocolSuite(private val workspacePath: Path) {
285285
@DisplayName("Output paths list is empty if given no targets (if supported)")
286286
fun outputPaths() = runTest(timeout = 20.seconds) {
287287
println("Output paths list is empty if given no targets (if supported)")
288-
withSession(workspacePath, serverClass = MockServer::class.java) { session ->
288+
withSession(workspacePath, client = MockClient(), serverClass = MockServer::class.java) { session ->
289289
withLifetime(initializeParamsFullCapabilities, session) { capabilities ->
290290
if (capabilities.outputPathsProvider == true) {
291291
val result = session.server.buildTargetOutputPaths(OutputPathsParams(ArrayList())).await()
@@ -299,7 +299,7 @@ class ProtocolSuite(private val workspacePath: Path) {
299299
@DisplayName("Clean cache method works")
300300
fun cleanCache() = runTest(timeout = 20.seconds) {
301301
println("Clean cache method works")
302-
withSession(workspacePath, serverClass = MockServer::class.java) { session ->
302+
withSession(workspacePath, client = MockClient(), serverClass = MockServer::class.java) { session ->
303303
withLifetime(initializeParamsFullCapabilities, session) {
304304
session.server.buildTargetCleanCache(CleanCacheParams(ArrayList())).await()
305305
}
@@ -310,7 +310,7 @@ class ProtocolSuite(private val workspacePath: Path) {
310310
@DisplayName("OriginId should match in CompileParams and CompileResult")
311311
fun compileMatchingOriginId() = runTest(timeout = 40.seconds) {
312312
println("OriginId should match in CompileParams and CompileResult")
313-
withSession(workspacePath, serverClass = MockServer::class.java) { session ->
313+
withSession(workspacePath, client = MockClient(), serverClass = MockServer::class.java) { session ->
314314
withLifetime(initializeParamsFullCapabilities, session) { capabilities ->
315315
testCompileRequest(session, capabilities, ExecutionTestType.ORIGIN_ID_MATCH)
316316
}
@@ -321,7 +321,7 @@ class ProtocolSuite(private val workspacePath: Path) {
321321
@DisplayName("OriginId should match in RunParams and RunResult")
322322
fun runMatchingOriginId() = runTest(timeout = 40.seconds) {
323323
println("OriginId should match in RunParams and RunResult")
324-
withSession(workspacePath, serverClass = MockServer::class.java) { session ->
324+
withSession(workspacePath, client = MockClient(), serverClass = MockServer::class.java) { session ->
325325
withLifetime(initializeParamsFullCapabilities, session) { capabilities ->
326326
testRunRequest(session, capabilities, ExecutionTestType.ORIGIN_ID_MATCH)
327327
}
@@ -332,7 +332,7 @@ class ProtocolSuite(private val workspacePath: Path) {
332332
@DisplayName("OriginId should match in TestParams and TesteResult")
333333
fun testMatchingOriginId() = runTest(timeout = 40.seconds) {
334334
println("OriginId should match in TestParams and TestResult")
335-
withSession(workspacePath, serverClass = MockServer::class.java) { session ->
335+
withSession(workspacePath, client = MockClient(), serverClass = MockServer::class.java) { session ->
336336
withLifetime(initializeParamsFullCapabilities, session) { capabilities ->
337337
testTestRequest(session, capabilities, ExecutionTestType.ORIGIN_ID_MATCH)
338338
}
@@ -343,7 +343,7 @@ class ProtocolSuite(private val workspacePath: Path) {
343343
@DisplayName("For each TaskStart there should be TaskFinish for compile request")
344344
fun compileTaskMatching() = runTest(timeout = 40.seconds) {
345345
println("For each TaskStart there should be TaskFinish for compile request")
346-
withSession(workspacePath, serverClass = MockServer::class.java) { session ->
346+
withSession(workspacePath, client = MockClient(), serverClass = MockServer::class.java) { session ->
347347
withLifetime(initializeParamsFullCapabilities, session) { capabilities ->
348348
testCompileRequest(session, capabilities, ExecutionTestType.TASK_MATCH)
349349
}
@@ -354,7 +354,7 @@ class ProtocolSuite(private val workspacePath: Path) {
354354
@DisplayName("For each TaskStart there should be TaskFinish for run request")
355355
fun runTaskMatching() = runTest(timeout = 40.seconds) {
356356
println("For each TaskStart there should be TaskFinish for run request")
357-
withSession(workspacePath, serverClass = MockServer::class.java) { session ->
357+
withSession(workspacePath, client = MockClient(), serverClass = MockServer::class.java) { session ->
358358
withLifetime(initializeParamsFullCapabilities, session) { capabilities ->
359359
testRunRequest(session, capabilities, ExecutionTestType.TASK_MATCH)
360360
}
@@ -365,7 +365,7 @@ class ProtocolSuite(private val workspacePath: Path) {
365365
@DisplayName("For each TaskStart there should be TaskFinish for test request")
366366
fun testTaskMatching() = runTest(timeout = 40.seconds) {
367367
println("For each TaskStart there should be TaskFinish for test request")
368-
withSession(workspacePath, serverClass = MockServer::class.java) { session ->
368+
withSession(workspacePath, client = MockClient(), serverClass = MockServer::class.java) { session ->
369369
withLifetime(initializeParamsFullCapabilities, session) { capabilities ->
370370
testTestRequest(session, capabilities, ExecutionTestType.TASK_MATCH)
371371
}
@@ -376,7 +376,7 @@ class ProtocolSuite(private val workspacePath: Path) {
376376
@DisplayName("OriginId should match in CompileParams and publish diagnostic notifications")
377377
fun diagnosticsMatchingOriginId() = runTest(timeout = 40.seconds) {
378378
println("OriginId should match in CompileParams and publish diagnostic notifications")
379-
withSession(workspacePath, serverClass = MockServer::class.java) { session ->
379+
withSession(workspacePath, client = MockClient(), serverClass = MockServer::class.java) { session ->
380380
withLifetime(initializeParamsFullCapabilities, session) { capabilities ->
381381
testCompileRequest(session, capabilities, ExecutionTestType.DIAGNOSTICS)
382382
}
@@ -387,7 +387,7 @@ class ProtocolSuite(private val workspacePath: Path) {
387387
@DisplayName("Task progress refers to started task for compile request")
388388
fun compileProgressTaskFromStarted() = runTest(timeout = 40.seconds) {
389389
println("Task progress refers to started task for compile request")
390-
withSession(workspacePath, serverClass = MockServer::class.java) { session ->
390+
withSession(workspacePath, client = MockClient(), serverClass = MockServer::class.java) { session ->
391391
withLifetime(initializeParamsFullCapabilities, session) { capabilities ->
392392
testCompileRequest(session, capabilities, ExecutionTestType.PROGRESS)
393393
}
@@ -398,7 +398,7 @@ class ProtocolSuite(private val workspacePath: Path) {
398398
@DisplayName("Task progress refers to started task for run request")
399399
fun runProgressTaskFromStarted() = runTest(timeout = 40.seconds) {
400400
println("Task progress refers to started task for run request")
401-
withSession(workspacePath, serverClass = MockServer::class.java) { session ->
401+
withSession(workspacePath, client = MockClient(), serverClass = MockServer::class.java) { session ->
402402
withLifetime(initializeParamsFullCapabilities, session) { capabilities ->
403403
testRunRequest(session, capabilities, ExecutionTestType.PROGRESS)
404404
}
@@ -409,7 +409,7 @@ class ProtocolSuite(private val workspacePath: Path) {
409409
@DisplayName("Task progress refers to started task for test request")
410410
fun testProgressTaskFromStarted() = runTest(timeout = 40.seconds) {
411411
println("Task progress refers to started task for test request")
412-
withSession(workspacePath, serverClass = MockServer::class.java) { session ->
412+
withSession(workspacePath, client = MockClient(), serverClass = MockServer::class.java) { session ->
413413
withLifetime(initializeParamsFullCapabilities, session) { capabilities ->
414414
testTestRequest(session, capabilities, ExecutionTestType.PROGRESS)
415415
}
@@ -420,7 +420,7 @@ class ProtocolSuite(private val workspacePath: Path) {
420420
@DisplayName("Completed amount of work from task progress is smaller than total for compile request")
421421
fun compileProgressSmallerThanTotal() = runTest(timeout = 40.seconds) {
422422
println("Completed amount of work from task progress is smaller than total for compile request")
423-
withSession(workspacePath, serverClass = MockServer::class.java) { session ->
423+
withSession(workspacePath, client = MockClient(), serverClass = MockServer::class.java) { session ->
424424
withLifetime(initializeParamsFullCapabilities, session) { capabilities ->
425425
testCompileRequest(session, capabilities, ExecutionTestType.PROGRESS_TOTAL)
426426
}
@@ -431,7 +431,7 @@ class ProtocolSuite(private val workspacePath: Path) {
431431
@DisplayName("Completed amount of work from task progress is smaller than total for run request")
432432
fun runProgressSmallerThanTotal() = runTest(timeout = 40.seconds) {
433433
println("Completed amount of work from task progress is smaller than total for run request")
434-
withSession(workspacePath, serverClass = MockServer::class.java) { session ->
434+
withSession(workspacePath, client = MockClient(), serverClass = MockServer::class.java) { session ->
435435
withLifetime(initializeParamsFullCapabilities, session) { capabilities ->
436436
testRunRequest(session, capabilities, ExecutionTestType.PROGRESS_TOTAL)
437437
}
@@ -442,7 +442,7 @@ class ProtocolSuite(private val workspacePath: Path) {
442442
@DisplayName("Completed amount of work from task progress is smaller than total for test request")
443443
fun testProgressSmallerThanTotal() = runTest(timeout = 40.seconds) {
444444
println("Completed amount of work from task progress is smaller than total for test request")
445-
withSession(workspacePath, serverClass = MockServer::class.java) { session ->
445+
withSession(workspacePath, client = MockClient(), serverClass = MockServer::class.java) { session ->
446446
withLifetime(initializeParamsFullCapabilities, session) { capabilities ->
447447
testTestRequest(session, capabilities, ExecutionTestType.PROGRESS_TOTAL)
448448
}

bsp-testkit/client/Session.kt

Lines changed: 9 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,9 @@
11
package org.jetbrains.bsp.testkit.client
22

33
import ch.epfl.scala.bsp4j.BspConnectionDetails
4+
import ch.epfl.scala.bsp4j.BuildClient
5+
import ch.epfl.scala.bsp4j.BuildServer
46
import com.google.gson.Gson
5-
import kotlinx.coroutines.CoroutineScope
67
import kotlinx.coroutines.Deferred
78
import kotlinx.coroutines.future.asDeferred
89
import org.eclipse.lsp4j.jsonrpc.Launcher
@@ -15,7 +16,11 @@ import java.util.concurrent.Executors
1516
* A session is a "physical" connection to a BSP server. It must be closed when it is no longer
1617
* needed. The user is responsible for maintaining the correct BSP life-cycle.
1718
*/
18-
class Session<T: MockServer>(val workspacePath: Path, val client: MockClient, serverClass: Class<T>) : AutoCloseable {
19+
class Session<Server : BuildServer, Client : BuildClient>(
20+
val workspacePath: Path,
21+
val client: Client,
22+
serverClass: Class<Server>
23+
) : AutoCloseable {
1924
private val workspaceFile = workspacePath.toFile()
2025
private val connectionDetails = readBspConnectionDetails(workspaceFile)
2126

@@ -24,7 +29,7 @@ class Session<T: MockServer>(val workspacePath: Path, val client: MockClient, se
2429
.start()
2530

2631
private val executor = Executors.newCachedThreadPool()
27-
private val launcher = Launcher.Builder<T>()
32+
private val launcher = Launcher.Builder<Server>()
2833
.setRemoteInterface(serverClass)
2934
.setExecutorService(executor)
3035
.setInput(process.inputStream)
@@ -36,7 +41,7 @@ class Session<T: MockServer>(val workspacePath: Path, val client: MockClient, se
3641
launcher.startListening()
3742
}
3843

39-
val server: T = launcher.remoteProxy
44+
val server: Server = launcher.remoteProxy
4045

4146
val serverClosed: Deferred<SessionResult> = process.onExit().thenApply {
4247
SessionResult(process.exitValue(), process.errorStream.bufferedReader().readText())

0 commit comments

Comments
 (0)