@@ -187,6 +187,13 @@ describe('FileViewerManager', function () {
187
187
return window . visibleTextEditors . filter ( e => e . document . fileName . endsWith ( documentName ) )
188
188
}
189
189
190
+ function registerFileSystemProviders ( isCaseSensitive : boolean = true ) : vscode . Disposable [ ] {
191
+ return [
192
+ vscode . workspace . registerFileSystemProvider ( editScheme , fs , { isCaseSensitive } ) ,
193
+ vscode . workspace . registerFileSystemProvider ( readScheme , fs , { isReadonly : true , isCaseSensitive } ) ,
194
+ ]
195
+ }
196
+
190
197
beforeEach ( function ( ) {
191
198
s3 = createS3 ( )
192
199
fs = new VirualFileSystem ( )
@@ -196,10 +203,7 @@ describe('FileViewerManager', function () {
196
203
edit : editScheme ,
197
204
} )
198
205
199
- disposables = [
200
- vscode . workspace . registerFileSystemProvider ( editScheme , fs ) ,
201
- vscode . workspace . registerFileSystemProvider ( readScheme , fs , { isReadonly : true } ) ,
202
- ]
206
+ disposables = registerFileSystemProviders ( )
203
207
} )
204
208
205
209
afterEach ( async function ( ) {
@@ -303,5 +307,47 @@ describe('FileViewerManager', function () {
303
307
const err = await fileViewerManager . openInReadMode ( { ...file , bucket } ) . catch ( e => e )
304
308
assert . ok ( err instanceof ToolkitError )
305
309
} )
310
+
311
+ it ( 'is case-sensitive for file names' , async function ( ) {
312
+ // Create and assert content of file with lowercase name
313
+ const lowerCaseFileContent = 'lowercaseContent'
314
+ const lowerCaseFile = makeFile ( 'myFile.txt' , Buffer . from ( lowerCaseFileContent , 'utf-8' ) )
315
+ s3 . addFile ( lowerCaseFile )
316
+ await fileViewerManager . openInReadMode ( { ...lowerCaseFile , bucket } )
317
+ await assertTextEditorContains ( lowerCaseFileContent )
318
+
319
+ // Create similarily named file, but with different uppercase in name
320
+ const upperCaseFileContent = 'uppercaseContent'
321
+ const upperCaseFile = makeFile ( 'MyFile.txt' , Buffer . from ( upperCaseFileContent , 'utf-8' ) )
322
+ s3 . addFile ( upperCaseFile )
323
+ await fileViewerManager . openInReadMode ( { ...upperCaseFile , bucket } )
324
+ await assertTextEditorContains ( upperCaseFileContent )
325
+ } )
326
+ } )
327
+
328
+ describe ( 'file uri case insensitivity' , function ( ) {
329
+ beforeEach ( function ( ) {
330
+ vscode . Disposable . from ( ...disposables ) . dispose ( )
331
+ // Case insensitive file system providers
332
+ disposables = registerFileSystemProviders ( false )
333
+ } )
334
+
335
+ it ( 'opens an existing file since names are the same' , async function ( ) {
336
+ // Create and assert content of file with lowercase name
337
+ const lowerCaseFileContent = 'lowercaseContent'
338
+ const lowerCaseFile = makeFile ( 'file.txt' , Buffer . from ( lowerCaseFileContent , 'utf-8' ) )
339
+ s3 . addFile ( lowerCaseFile )
340
+ await fileViewerManager . openInReadMode ( { ...lowerCaseFile , bucket } )
341
+ await assertTextEditorContains ( lowerCaseFileContent )
342
+
343
+ // Create similarily named file, but with uppercase character
344
+ const upperCaseFileContent = 'uppercaseContent'
345
+ const upperCaseFile = makeFile ( 'File.txt' , Buffer . from ( upperCaseFileContent , 'utf-8' ) )
346
+ s3 . addFile ( upperCaseFile )
347
+
348
+ // Attempt to open uppercase file opens existing lowercase file instead
349
+ await fileViewerManager . openInReadMode ( { ...upperCaseFile , bucket } )
350
+ await assertTextEditorContains ( lowerCaseFileContent )
351
+ } )
306
352
} )
307
353
} )
0 commit comments