diff --git a/arduino-ide-extension/src/common/protocol/sketches-service.ts b/arduino-ide-extension/src/common/protocol/sketches-service.ts index b82b9184e..767063aaf 100644 --- a/arduino-ide-extension/src/common/protocol/sketches-service.ts +++ b/arduino-ide-extension/src/common/protocol/sketches-service.ts @@ -205,7 +205,7 @@ export namespace Sketch { const validName = candidate ? candidate .replace(/^[^0-9a-zA-Z]{1}/g, defaultFallbackFirstChar) - .replace(/[^0-9a-zA-Z_\.-]/g, defaultFallbackChar) + .replace(/[^0-9a-zA-Z_]/g, defaultFallbackChar) .slice(0, 63) : defaultSketchFolderName; if (appendTimestampSuffix) { @@ -233,7 +233,7 @@ export namespace Sketch { return candidate ? candidate .replace(/^[^0-9a-zA-Z]{1}/g, defaultFallbackFirstChar) - .replace(/[^0-9a-zA-Z_\.-]/g, defaultFallbackChar) + .replace(/[^0-9a-zA-Z_]/g, defaultFallbackChar) .slice(0, 36) : defaultSketchFolderName; } diff --git a/arduino-ide-extension/src/test/common/sketches-service.test.ts b/arduino-ide-extension/src/test/common/sketches-service.test.ts index 7671f70ad..4d74c316b 100644 --- a/arduino-ide-extension/src/test/common/sketches-service.test.ts +++ b/arduino-ide-extension/src/test/common/sketches-service.test.ts @@ -107,6 +107,9 @@ describe('sketch', () => { ['foo bar', 'foo_bar' + epochSuffix], ['.foobar', '0foobar' + epochSuffix], ['-fooBar', '0fooBar' + epochSuffix], + ['foobar.', 'foobar_' + epochSuffix], + ['fooBar-', 'fooBar_' + epochSuffix], + ['fooBar+', 'fooBar_' + epochSuffix], ['vAlid', 'vAlid' + epochSuffix], ].map(([input, expected]) => toMapIt(input, expected, (input: string) => @@ -118,23 +121,20 @@ describe('sketch', () => { describe('toValidCloudSketchFolderName', () => { [ ['sketch', 'sketch'], - [ - 'slash-and-dot-is-ok+but+no+plus.ino', - 'slash-and-dot-is-ok_but_no_plus.ino', - ], + ['only_underscore-is+ok.ino', 'only_underscore_is_ok_ino'], ['regex++', 'regex__'], - ['dots...', 'dots...'], - ['.dots...', '0dots...'], - ['-dashes---', '0dashes---'], + ['dots...', 'dots___'], + ['.dots...', '0dots___'], + ['-dashes---', '0dashes___'], ['_underscore___', '0underscore___'], ['No Spaces', 'No_Spaces'], ['_startsWithUnderscore', '0startsWithUnderscore'], - ['Invalid+Char.ino', 'Invalid_Char.ino'], + ['Invalid+Char.ino', 'Invalid_Char_ino'], ['', 'sketch'], ['/', '0'], [ - '//////////////////////////////////////-/', - '0___________________________________', + '/-1////////////////////+//////////////-/', + '0_1_________________________________', ], ['//trash/', '0_trash_'], [