diff --git a/packages/jest-pattern/src/TestPathPatterns.ts b/packages/jest-pattern/src/TestPathPatterns.ts index 4ed7e3875252..9482e917d349 100644 --- a/packages/jest-pattern/src/TestPathPatterns.ts +++ b/packages/jest-pattern/src/TestPathPatterns.ts @@ -115,6 +115,10 @@ export class TestPathPatternsExecutor { if (this.toRegex(regexStr).test(pathToTest)) { return true; } + + if (this.toRegex(regexStr).test(absPath)) { + return true; + } } return false; } diff --git a/packages/jest-pattern/src/__tests__/TestPathPatterns.test.ts b/packages/jest-pattern/src/__tests__/TestPathPatterns.test.ts index 4d01f4eac57c..abba2d24028c 100644 --- a/packages/jest-pattern/src/__tests__/TestPathPatterns.test.ts +++ b/packages/jest-pattern/src/__tests__/TestPathPatterns.test.ts @@ -186,11 +186,21 @@ describe('TestPathPatternsExecutor', () => { }); it('returns true only if matches relative path', () => { + const rootDir = '/home/myuser/'; + const testPathPatterns = makeExecutor(['home'], { - rootDir: '/home/myuser/', + rootDir, }); - expect(testPathPatterns.isMatch('/home/myuser/LoginPage.js')).toBe(false); - expect(testPathPatterns.isMatch('/home/myuser/HomePage.js')).toBe(true); + expect( + testPathPatterns.isMatch( + path.relative(rootDir, '/home/myuser/LoginPage.js'), + ), + ).toBe(false); + expect( + testPathPatterns.isMatch( + path.relative(rootDir, '/home/myuser/HomePage.js'), + ), + ).toBe(true); }); it('matches absolute paths regardless of rootDir', () => { @@ -230,5 +240,20 @@ describe('TestPathPatternsExecutor', () => { const testPathPatterns = makeExecutor(['a/b'], config); expect(testPathPatterns.isMatch('C:\\foo\\a\\b')).toBe(true); }); + + it('matches absolute path with absPath', () => { + const pattern = '^/home/app/'; + const rootDir = '/home/app'; + const absolutePath = '/home/app/packages/'; + + const testPathPatterns = makeExecutor([pattern], { + rootDir, + }); + + const relativePath = path.relative(rootDir, absolutePath); + + expect(testPathPatterns.isMatch(relativePath)).toBe(false); + expect(testPathPatterns.isMatch(absolutePath)).toBe(true); + }); }); });