Przeglądaj źródła

Backport PR #11526: Support file type extension with upper case (#11593)

Co-authored-by: Frédéric Collonval <fcollonval@users.noreply.github.com>
MeeseeksMachine 3 lat temu
rodzic
commit
cc605ce0db

+ 9 - 2
packages/docregistry/src/registry.ts

@@ -661,7 +661,14 @@ export class DocumentRegistry implements IDisposable {
     // Then look by extension name, starting with the longest
     let ext = Private.extname(name);
     while (ext.length > 1) {
-      ft = find(this._fileTypes, ft => ft.extensions.indexOf(ext) !== -1);
+      ft = find(
+        this._fileTypes,
+        ft =>
+          ft.extensions
+            // In Private.extname, the extension is transformed to lower case
+            .map(extension => extension.toLowerCase())
+            .indexOf(ext) !== -1
+      );
       if (ft) {
         fts.push(ft);
       }
@@ -1419,7 +1426,7 @@ export namespace DocumentRegistry {
         name: 'r',
         displayName: trans.__('R File'),
         mimeTypes: ['text/x-rsrc'],
-        extensions: ['.r'],
+        extensions: ['.R'],
         icon: rKernelIcon
       },
       {

+ 9 - 3
packages/docregistry/test/registry.spec.ts

@@ -647,9 +647,15 @@ describe('docregistry/registry', () => {
         expect(ft[1].name).toBe('json');
       });
 
-      it('should be case insensitive', () => {
-        const ft = registry.getFileTypesForPath('foo/bar/baz.PY');
-        expect(ft[0].name).toBe('python');
+      it.each([
+        ['python', null, 'foo/bar/baz.PY'],
+        ['r-markdown', ['.Rmd'], 'foo/bar/baz.Rmd']
+      ])('should be case insensitive', (name, extensions, filename) => {
+        if (extensions) {
+          registry.addFileType({ name, extensions });
+        }
+        const ft = registry.getFileTypesForPath(filename);
+        expect(ft[0].name).toBe(name);
       });
 
       it('should support pattern matching', () => {