diff --git a/packages/core/src/utils/gitIgnoreParser.test.ts b/packages/core/src/utils/gitIgnoreParser.test.ts index 95f8dbbe64..580da544fe 100644 --- a/packages/core/src/utils/gitIgnoreParser.test.ts +++ b/packages/core/src/utils/gitIgnoreParser.test.ts @@ -250,4 +250,24 @@ src/*.tmp expect(parser.isIgnored('bla/!bar')).toBe(true); }); }); + + describe('Trailing Spaces', () => { + beforeEach(async () => { + await setupGitRepo(); + }); + + it('should correctly handle significant trailing spaces', async () => { + await createTestFile('.gitignore', 'foo\\ \nbar '); + await createTestFile('foo ', 'content'); + await createTestFile('bar', 'content'); + await createTestFile('bar ', 'content'); + + // 'foo\ ' should match 'foo ' + expect(parser.isIgnored('foo ')).toBe(true); + + // 'bar ' should be trimmed to 'bar' + expect(parser.isIgnored('bar')).toBe(true); + expect(parser.isIgnored('bar ')).toBe(false); + }); + }); }); diff --git a/packages/core/src/utils/gitIgnoreParser.ts b/packages/core/src/utils/gitIgnoreParser.ts index 762015db8d..199240e69c 100644 --- a/packages/core/src/utils/gitIgnoreParser.ts +++ b/packages/core/src/utils/gitIgnoreParser.ts @@ -42,7 +42,7 @@ export class GitIgnoreParser implements GitIgnoreFilter { return content .split('\n') - .map((p) => p.trim()) + .map((p) => p.trimStart()) .filter((p) => p !== '' && !p.startsWith('#')) .map((p) => { const isNegative = p.startsWith('!');