@@ -11,7 +11,7 @@ use std::{
11
11
io,
12
12
thread:: { Builder , JoinHandle } ,
13
13
} ;
14
- use tracing:: { debug , trace, warn} ;
14
+ use tracing:: { trace, warn} ;
15
15
16
16
use crate :: TracingLayer ;
17
17
@@ -52,7 +52,7 @@ impl Server {
52
52
. name ( "LspMessageHandler" . into ( ) )
53
53
. spawn ( move || {
54
54
while let Ok ( message) = handler_receiver. recv ( ) {
55
- debug ! ( "LspMessageHandler -> {:#?}" , & message) ;
55
+ trace ! ( "LspMessageHandler -> {:#?}" , & message) ;
56
56
if message. is_exit_notification ( ) {
57
57
break ;
58
58
}
@@ -76,7 +76,7 @@ impl Server {
76
76
let writer = Builder :: new ( ) . name ( "LspWriter" . into ( ) ) . spawn ( move || {
77
77
let mut stdout = io:: stdout ( ) . lock ( ) ;
78
78
while let Ok ( message) = write_receiver. recv ( ) {
79
- trace ! ( "{:?}" , message) ;
79
+ trace ! ( "{:# ?}" , message) ;
80
80
message. write ( & mut stdout) ?;
81
81
}
82
82
Ok ( ( ) )
@@ -106,7 +106,9 @@ impl Server {
106
106
107
107
#[ cfg( test) ]
108
108
mod tests {
109
- use crate :: { ErrorCode , Request , Response } ;
109
+ use std:: sync:: atomic:: { AtomicBool , Ordering } ;
110
+
111
+ use crate :: { ErrorCode , Notification , Request , Response } ;
110
112
111
113
use super :: * ;
112
114
use lsp_types:: {
@@ -120,14 +122,20 @@ mod tests {
120
122
#[ test]
121
123
fn smoke_test ( ) {
122
124
let stderr_log = fmt:: layer ( ) . with_writer ( io:: stderr) . with_filter ( LevelFilter :: TRACE ) ;
123
- struct TestHandler { }
125
+ struct TestHandler {
126
+ initialized : AtomicBool ,
127
+ }
124
128
impl Handler for TestHandler {
129
+ fn initialized ( & self ) -> bool {
130
+ self . initialized . load ( Ordering :: SeqCst )
131
+ }
125
132
fn initialize ( & self , _req : InitializeParams ) -> Result < InitializeResult , ErrorCode > {
133
+ self . initialized . swap ( true , Ordering :: SeqCst ) ;
126
134
Ok ( InitializeResult { ..Default :: default ( ) } )
127
135
}
128
136
}
129
137
130
- let server = Server :: new ( TestHandler { } ) ;
138
+ let server = Server :: new ( TestHandler { initialized : AtomicBool :: new ( false ) } ) ;
131
139
registry ( ) . with ( stderr_log) . with ( server. tracer ( ) ) . init ( ) ;
132
140
let ( sender, receiver) = server. raw_channels ( ) ;
133
141
sender
@@ -158,9 +166,10 @@ mod tests {
158
166
Ok ( Message :: Response ( Response :: Err (
159
167
1 . into( ) ,
160
168
ErrorCode :: MethodNotFound ,
161
- "MethodNotFound " . into( ) ,
169
+ "" . into( ) ,
162
170
Value :: Null
163
171
) ) )
164
172
) ;
173
+ sender. send ( Message :: Notification ( Notification { method : "exit" . into ( ) , params : Value :: Null } ) ) . unwrap ( ) ;
165
174
}
166
175
}
0 commit comments