Merge pull request #1666 from ousamabenyounes/fix/issue-1299

fix: remove leaky mock.module() for project-name that polluted parallel workers (#1299)
This commit is contained in:
Alex Newman
2026-04-14 18:41:22 -07:00
committed by GitHub
3 changed files with 35 additions and 4 deletions

View File

@@ -38,10 +38,6 @@ mock.module('../../src/shared/worker-utils.js', () => ({
},
}));
mock.module('../../src/utils/project-name.js', () => ({
getProjectName: () => 'test-project',
}));
mock.module('../../src/utils/project-filter.js', () => ({
isProjectExcluded: () => false,
}));

View File

@@ -0,0 +1,28 @@
/**
* Regression test for mock.module() worker pollution (#1299)
*
* context-reinjection-guard.test.ts used to call mock.module('../../src/utils/project-name.js', ...)
* at the top level, which permanently stubbed getProjectName to return 'test-project'
* for every subsequent import in the same Bun worker process.
*
* Without bunfig.toml [test] smol=true, this test would fail when Bun scheduled
* it in the same worker as context-reinjection-guard.test.ts, because the module
* was mocked before these tests ran and getProjectName() returned 'test-project'
* instead of the real extracted basename.
*/
import { describe, it, expect } from 'bun:test';
import { getProjectName } from '../../src/utils/project-name.js';
describe('getProjectName mock isolation (#1299)', () => {
it('returns real basename, not the leaked test-project mock', () => {
expect(getProjectName('/real/path/to/my-project')).toBe('my-project');
});
it('returns unknown-project for empty string (real implementation)', () => {
expect(getProjectName('')).toBe('unknown-project');
});
it('returns real basename from nested path', () => {
expect(getProjectName('/home/user/code/awesome-app')).toBe('awesome-app');
});
});