@@ -26,8 +26,12 @@ import scala.collection.mutable
2626import scala .compiletime .uninitialized
2727
2828class DebugAdapterTests extends munit.FunSuite :
29- case class DAPMessage (messageType : String , content : String , timestamp : Long = System .currentTimeMillis())
30-
29+ case class DAPMessage (
30+ messageType : String ,
31+ content : String ,
32+ timestamp : Long = System .currentTimeMillis(),
33+ )
34+
3135 class DAPClient (host : String , port : Int ) extends AutoCloseable :
3236 private val socket : Socket = Socket ()
3337 private var seqNum = 1
@@ -38,19 +42,23 @@ class DebugAdapterTests extends munit.FunSuite:
3842 def connect (): Unit =
3943 socket.connect(InetSocketAddress (host, port), 5000 )
4044 running = true
41- readerThread = new Thread (() => {
42- try {
43- while (running && ! socket.isClosed) {
44- val msg = readResponse()
45- asyncQueue.put(msg)
46- }
47- } catch {
48- case _ : java.io.EOFException | _ : java.net.SocketTimeoutException | _ : ujson.IncompleteParseException =>
45+ readerThread = new Thread (
46+ () => {
47+ try {
48+ while (running && ! socket.isClosed) {
49+ val msg = readResponse()
50+ asyncQueue.put(msg)
51+ }
52+ } catch {
53+ case _ : java.io.EOFException | _ : java.net.SocketTimeoutException |
54+ _ : ujson.IncompleteParseException =>
4955 // Normal shutdown
50- case ex : Exception =>
51- println(s " [DAPClient] Reader thread exception: $ex" )
52- }
53- }, " dap-client-reader" )
56+ case ex : Exception =>
57+ println(s " [DAPClient] Reader thread exception: $ex" )
58+ }
59+ },
60+ " dap-client-reader" ,
61+ )
5462 readerThread.setDaemon(true )
5563 readerThread.start()
5664
@@ -64,7 +72,7 @@ class DebugAdapterTests extends munit.FunSuite:
6472 " seq" -> seqNum,
6573 " type" -> " request" ,
6674 " command" -> command,
67- " arguments" -> args
75+ " arguments" -> args,
6876 )
6977 val payloadBytes = ujson.writeToByteArray(requestObj)
7078 socket.getOutputStream.write(
@@ -95,10 +103,14 @@ class DebugAdapterTests extends munit.FunSuite:
95103 // If nothing was read, treat as normal shutdown, not a protocol error
96104 socket.close()
97105 if buffer.isEmpty then
98- throw new java.io.EOFException (" Socket closed while reading headers (empty buffer)" )
106+ throw new java.io.EOFException (
107+ " Socket closed while reading headers (empty buffer)" ,
108+ )
99109 else
100110 // Only fail if there was partial, non-header data
101- fail(" Socket closed with partial, non-header data: " + buffer.toString)
111+ fail(
112+ " Socket closed with partial, non-header data: " + buffer.toString,
113+ )
102114 val char = read.toChar
103115 buffer.append(char)
104116 if buffer.toString.endsWith(" \r\n\r\n " ) then
@@ -142,28 +154,30 @@ class DebugAdapterTests extends munit.FunSuite:
142154 },
143155 teardown = { adapter =>
144156 adapter.close()
145- }
157+ },
146158 )
147159
148160 def createTestTLASource (): Source =
149161 val tlaContent = """
150- |---- MODULE TestModule ----
151- |EXTENDS Naturals
152- |
153- |VARIABLE x
154- |
155- |Init == x = 0
156- |
157- |Next == x' = x + 1
158- |
159- |Spec == Init /\ [][Next]_x
160- |
161- |====
162+ |---- MODULE TestModule ----
163+ |EXTENDS Naturals
164+ |
165+ |VARIABLE x
166+ |
167+ |Init == x = 0
168+ |
169+ |Next == x' = x + 1
170+ |
171+ |Spec == Init /\ [][Next]_x
172+ |
173+ |====
162174 """ .stripMargin
163-
175+
164176 Source .fromString(tlaContent)
165177
166- debugAdapterFixture.test(" handles Step Over request with actual compiler execution" ) { debugAdapter =>
178+ debugAdapterFixture.test(
179+ " handles Step Over request with actual compiler execution" ,
180+ ) { debugAdapter =>
167181 val client = DAPClient (" localhost" , 4711 )
168182 try {
169183 client.connect()
@@ -179,31 +193,49 @@ class DebugAdapterTests extends munit.FunSuite:
179193 compilerThread.start()
180194
181195 // Send all requests up front, without blocking for responses
182- client.sendRequest(" initialize" , ujson.Obj (
183- " clientID" -> " test" ,
184- " adapterID" -> " forja"
185- ))
196+ client.sendRequest(
197+ " initialize" ,
198+ ujson.Obj (
199+ " clientID" -> " test" ,
200+ " adapterID" -> " forja" ,
201+ ),
202+ )
186203 var messages = client.takeNMessages(1 )
187204 assert(messages.nonEmpty, " Expected an initialize response" )
188- assert(messages.exists(_.messageType == " response" ), " Expected an initialize response" )
205+ assert(
206+ messages.exists(_.messageType == " response" ),
207+ " Expected an initialize response" ,
208+ )
189209 println(s " ${messages(0 ).messageType}: ${messages(0 ).content}\n " )
190210
191211 client.sendRequest(" attach" )
192212 messages = client.takeNMessages(2 )
193213 assert(messages.nonEmpty, " Expected an initialize response" )
194- assert(messages.exists(_.messageType == " response" ), " Expected an attach response" )
214+ assert(
215+ messages.exists(_.messageType == " response" ),
216+ " Expected an attach response" ,
217+ )
195218 println(s " ${messages(0 ).messageType}: ${messages(0 ).content}" )
196219 assert(messages.exists(_.messageType == " event" ), " Expected a next event" )
197220 println(s " ${messages(1 ).messageType}: ${messages(1 ).content}\n " )
198221
199222 client.sendRequest(" next" , ujson.Obj (" threadId" -> 1 ))
200223 messages = client.takeNMessages(3 )
201224 assert(messages.nonEmpty, " Expected a next response" )
202- assert(messages.exists(_.messageType == " response" ), " Expected a next response" )
225+ assert(
226+ messages.exists(_.messageType == " response" ),
227+ " Expected a next response" ,
228+ )
203229 println(s " ${messages(0 ).messageType}: ${messages(0 ).content}" )
204- assert(messages.exists(_.messageType == " event" ), " Expected a loadedSource event" )
230+ assert(
231+ messages.exists(_.messageType == " event" ),
232+ " Expected a loadedSource event" ,
233+ )
205234 println(s " ${messages(1 ).messageType}: ${messages(1 ).content}" )
206- assert(messages.exists(_.messageType == " event" ), " Expected a stopped event" )
235+ assert(
236+ messages.exists(_.messageType == " event" ),
237+ " Expected a stopped event" ,
238+ )
207239 println(s " ${messages(2 ).messageType}: ${messages(2 ).content}\n " )
208240
209241 client.sendRequest(" continue" , ujson.Obj (" threadId" -> 1 ))
0 commit comments