@@ -166,54 +166,56 @@ mod tests {
166
166
use crate :: document:: TextDocument ;
167
167
use crate :: language:: LanguageId ;
168
168
169
+ // Helper to create platform-appropriate test paths
170
+ fn test_file_path ( name : & str ) -> PathBuf {
171
+ #[ cfg( windows) ]
172
+ return PathBuf :: from ( format ! ( "C:\\ temp\\ {name}" ) ) ;
173
+ #[ cfg( not( windows) ) ]
174
+ return PathBuf :: from ( format ! ( "/tmp/{name}" ) ) ;
175
+ }
176
+
169
177
#[ test]
170
178
fn test_reads_from_buffer_when_present ( ) {
171
179
let disk = Arc :: new ( InMemoryFileSystem :: new ( ) ) ;
172
180
let buffers = Buffers :: new ( ) ;
173
181
let fs = WorkspaceFileSystem :: new ( buffers. clone ( ) , disk) ;
174
182
175
183
// Add file to buffer
176
- let url = Url :: from_file_path ( "/test.py" ) . unwrap ( ) ;
184
+ let path = test_file_path ( "test.py" ) ;
185
+ let url = Url :: from_file_path ( & path) . unwrap ( ) ;
177
186
let doc = TextDocument :: new ( "buffer content" . to_string ( ) , 1 , LanguageId :: Python ) ;
178
187
buffers. open ( url, doc) ;
179
188
180
- assert_eq ! (
181
- fs. read_to_string( Path :: new( "/test.py" ) ) . unwrap( ) ,
182
- "buffer content"
183
- ) ;
189
+ assert_eq ! ( fs. read_to_string( & path) . unwrap( ) , "buffer content" ) ;
184
190
}
185
191
186
192
#[ test]
187
193
fn test_reads_from_disk_when_no_buffer ( ) {
188
194
let mut disk_fs = InMemoryFileSystem :: new ( ) ;
189
- disk_fs. add_file ( "/test.py" . into ( ) , "disk content" . to_string ( ) ) ;
195
+ let path = test_file_path ( "test.py" ) ;
196
+ disk_fs. add_file ( path. clone ( ) , "disk content" . to_string ( ) ) ;
190
197
191
198
let buffers = Buffers :: new ( ) ;
192
199
let fs = WorkspaceFileSystem :: new ( buffers, Arc :: new ( disk_fs) ) ;
193
200
194
- assert_eq ! (
195
- fs. read_to_string( Path :: new( "/test.py" ) ) . unwrap( ) ,
196
- "disk content"
197
- ) ;
201
+ assert_eq ! ( fs. read_to_string( & path) . unwrap( ) , "disk content" ) ;
198
202
}
199
203
200
204
#[ test]
201
205
fn test_buffer_overrides_disk ( ) {
202
206
let mut disk_fs = InMemoryFileSystem :: new ( ) ;
203
- disk_fs. add_file ( "/test.py" . into ( ) , "disk content" . to_string ( ) ) ;
207
+ let path = test_file_path ( "test.py" ) ;
208
+ disk_fs. add_file ( path. clone ( ) , "disk content" . to_string ( ) ) ;
204
209
205
210
let buffers = Buffers :: new ( ) ;
206
211
let fs = WorkspaceFileSystem :: new ( buffers. clone ( ) , Arc :: new ( disk_fs) ) ;
207
212
208
213
// Add buffer with different content
209
- let url = Url :: from_file_path ( "/test.py" ) . unwrap ( ) ;
214
+ let url = Url :: from_file_path ( & path ) . unwrap ( ) ;
210
215
let doc = TextDocument :: new ( "buffer content" . to_string ( ) , 1 , LanguageId :: Python ) ;
211
216
buffers. open ( url, doc) ;
212
217
213
- assert_eq ! (
214
- fs. read_to_string( Path :: new( "/test.py" ) ) . unwrap( ) ,
215
- "buffer content"
216
- ) ;
218
+ assert_eq ! ( fs. read_to_string( & path) . unwrap( ) , "buffer content" ) ;
217
219
}
218
220
219
221
#[ test]
@@ -222,39 +224,42 @@ mod tests {
222
224
let buffers = Buffers :: new ( ) ;
223
225
let fs = WorkspaceFileSystem :: new ( buffers. clone ( ) , disk) ;
224
226
225
- // Add file only to buffer
226
- let url = Url :: from_file_path ( "/buffer_only.py" ) . unwrap ( ) ;
227
+ // Add file to buffer only
228
+ let path = test_file_path ( "buffer_only.py" ) ;
229
+ let url = Url :: from_file_path ( & path) . unwrap ( ) ;
227
230
let doc = TextDocument :: new ( "content" . to_string ( ) , 1 , LanguageId :: Python ) ;
228
231
buffers. open ( url, doc) ;
229
232
230
- assert ! ( fs. exists( Path :: new ( "/buffer_only.py" ) ) ) ;
233
+ assert ! ( fs. exists( & path ) ) ;
231
234
}
232
235
233
236
#[ test]
234
237
fn test_exists_for_disk_only_file ( ) {
235
238
let mut disk_fs = InMemoryFileSystem :: new ( ) ;
236
- disk_fs. add_file ( "/disk_only.py" . into ( ) , "content" . to_string ( ) ) ;
239
+ let path = test_file_path ( "disk_only.py" ) ;
240
+ disk_fs. add_file ( path. clone ( ) , "content" . to_string ( ) ) ;
237
241
238
242
let buffers = Buffers :: new ( ) ;
239
243
let fs = WorkspaceFileSystem :: new ( buffers, Arc :: new ( disk_fs) ) ;
240
244
241
- assert ! ( fs. exists( Path :: new ( "/disk_only.py" ) ) ) ;
245
+ assert ! ( fs. exists( & path ) ) ;
242
246
}
243
247
244
248
#[ test]
245
249
fn test_exists_for_both_buffer_and_disk ( ) {
246
250
let mut disk_fs = InMemoryFileSystem :: new ( ) ;
247
- disk_fs. add_file ( "/both.py" . into ( ) , "disk" . to_string ( ) ) ;
251
+ let path = test_file_path ( "both.py" ) ;
252
+ disk_fs. add_file ( path. clone ( ) , "disk" . to_string ( ) ) ;
248
253
249
254
let buffers = Buffers :: new ( ) ;
250
255
let fs = WorkspaceFileSystem :: new ( buffers. clone ( ) , Arc :: new ( disk_fs) ) ;
251
256
252
257
// Also add to buffer
253
- let url = Url :: from_file_path ( "/both.py" ) . unwrap ( ) ;
258
+ let url = Url :: from_file_path ( & path ) . unwrap ( ) ;
254
259
let doc = TextDocument :: new ( "buffer" . to_string ( ) , 1 , LanguageId :: Python ) ;
255
260
buffers. open ( url, doc) ;
256
261
257
- assert ! ( fs. exists( Path :: new ( "/both.py" ) ) ) ;
262
+ assert ! ( fs. exists( & path ) ) ;
258
263
}
259
264
260
265
#[ test]
@@ -263,7 +268,8 @@ mod tests {
263
268
let buffers = Buffers :: new ( ) ;
264
269
let fs = WorkspaceFileSystem :: new ( buffers, disk) ;
265
270
266
- assert ! ( !fs. exists( Path :: new( "/nowhere.py" ) ) ) ;
271
+ let path = test_file_path ( "nowhere.py" ) ;
272
+ assert ! ( !fs. exists( & path) ) ;
267
273
}
268
274
269
275
#[ test]
@@ -272,7 +278,8 @@ mod tests {
272
278
let buffers = Buffers :: new ( ) ;
273
279
let fs = WorkspaceFileSystem :: new ( buffers, disk) ;
274
280
275
- let result = fs. read_to_string ( Path :: new ( "/missing.py" ) ) ;
281
+ let path = test_file_path ( "missing.py" ) ;
282
+ let result = fs. read_to_string ( & path) ;
276
283
assert ! ( result. is_err( ) ) ;
277
284
assert_eq ! ( result. unwrap_err( ) . kind( ) , io:: ErrorKind :: NotFound ) ;
278
285
}
@@ -283,49 +290,39 @@ mod tests {
283
290
let buffers = Buffers :: new ( ) ;
284
291
let fs = WorkspaceFileSystem :: new ( buffers. clone ( ) , disk) ;
285
292
286
- let url = Url :: from_file_path ( "/test.py" ) . unwrap ( ) ;
293
+ let path = test_file_path ( "test.py" ) ;
294
+ let url = Url :: from_file_path ( & path) . unwrap ( ) ;
287
295
288
296
// Initial buffer content
289
297
let doc1 = TextDocument :: new ( "version 1" . to_string ( ) , 1 , LanguageId :: Python ) ;
290
298
buffers. open ( url. clone ( ) , doc1) ;
291
- assert_eq ! (
292
- fs. read_to_string( Path :: new( "/test.py" ) ) . unwrap( ) ,
293
- "version 1"
294
- ) ;
299
+ assert_eq ! ( fs. read_to_string( & path) . unwrap( ) , "version 1" ) ;
295
300
296
301
// Update buffer content
297
302
let doc2 = TextDocument :: new ( "version 2" . to_string ( ) , 2 , LanguageId :: Python ) ;
298
303
buffers. update ( url, doc2) ;
299
- assert_eq ! (
300
- fs. read_to_string( Path :: new( "/test.py" ) ) . unwrap( ) ,
301
- "version 2"
302
- ) ;
304
+ assert_eq ! ( fs. read_to_string( & path) . unwrap( ) , "version 2" ) ;
303
305
}
304
306
305
307
#[ test]
306
308
fn test_handles_buffer_removal ( ) {
307
309
let mut disk_fs = InMemoryFileSystem :: new ( ) ;
308
- disk_fs. add_file ( "/test.py" . into ( ) , "disk content" . to_string ( ) ) ;
310
+ let path = test_file_path ( "test.py" ) ;
311
+ disk_fs. add_file ( path. clone ( ) , "disk content" . to_string ( ) ) ;
309
312
310
313
let buffers = Buffers :: new ( ) ;
311
314
let fs = WorkspaceFileSystem :: new ( buffers. clone ( ) , Arc :: new ( disk_fs) ) ;
312
315
313
- let url = Url :: from_file_path ( "/test.py" ) . unwrap ( ) ;
316
+ let url = Url :: from_file_path ( & path ) . unwrap ( ) ;
314
317
315
318
// Add buffer
316
319
let doc = TextDocument :: new ( "buffer content" . to_string ( ) , 1 , LanguageId :: Python ) ;
317
320
buffers. open ( url. clone ( ) , doc) ;
318
- assert_eq ! (
319
- fs. read_to_string( Path :: new( "/test.py" ) ) . unwrap( ) ,
320
- "buffer content"
321
- ) ;
321
+ assert_eq ! ( fs. read_to_string( & path) . unwrap( ) , "buffer content" ) ;
322
322
323
323
// Remove buffer
324
324
let _ = buffers. close ( & url) ;
325
- assert_eq ! (
326
- fs. read_to_string( Path :: new( "/test.py" ) ) . unwrap( ) ,
327
- "disk content"
328
- ) ;
325
+ assert_eq ! ( fs. read_to_string( & path) . unwrap( ) , "disk content" ) ;
329
326
}
330
327
}
331
328
}
0 commit comments