Browse Source

fix(core): Fix DefaultAssetNamingStrategy with files without extensions

Fixes #271, closes #272
Michael Bromley 5 years ago
parent
commit
dee3258308

+ 14 - 0
packages/core/src/config/asset-naming-strategy/default-asset-naming-strategy.spec.ts

@@ -19,6 +19,20 @@ describe('DefaultAssetNamingStrategy', () => {
             expect(strategy.generateSourceFileName('foo.jpg', 'foo__99.jpg')).toBe('foo__100.jpg');
             expect(strategy.generateSourceFileName('foo.jpg', 'foo__999.jpg')).toBe('foo__1000.jpg');
         });
+
+        it('increments conflicting file names with no extension', () => {
+            const strategy = new DefaultAssetNamingStrategy();
+
+            expect(strategy.generateSourceFileName('ext45000000000505', 'ext45000000000505')).toBe(
+                'ext45000000000505__02',
+            );
+            expect(strategy.generateSourceFileName('ext45000000000505', 'ext45000000000505__02')).toBe(
+                'ext45000000000505__03',
+            );
+            expect(strategy.generateSourceFileName('ext45000000000505', 'ext45000000000505__09')).toBe(
+                'ext45000000000505__10',
+            );
+        });
     });
 
     describe('generatePreviewFileName()', () => {

+ 1 - 1
packages/core/src/config/asset-naming-strategy/default-asset-naming-strategy.ts

@@ -11,7 +11,7 @@ import { AssetNamingStrategy } from './asset-naming-strategy';
  * @docsCategory assets
  */
 export class DefaultAssetNamingStrategy implements AssetNamingStrategy {
-    private readonly numberingRe = /__(\d+)\.[^.]+$/;
+    private readonly numberingRe = /__(\d+)(\.[^.]+)?$/;
 
     generateSourceFileName(originalFileName: string, conflictFileName?: string): string {
         const normalized = normalizeString(originalFileName, '-');