-
-
Notifications
You must be signed in to change notification settings - Fork 1.6k
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
fix(flatConfig): include languageOptions in context
This change fixes a bug with flat config support. There is a function called `childContext` that's used by the ExportBuilder to "cleanse" the context object. This function wasn't including the new `languageOptions` object, which contains the parser. So by the time this cleansed context made it to the parse function, `languageOptions` wasn't there anymore. Since `parserPath` was still being included in non-flat config scenarios, the parse function made it through ok and used `parserPath`. However, once you shift to flat config, `parserPath` is no longer defined, and the actual parser object needs to be there. Fixes #3051
- Loading branch information
1 parent
18787d3
commit 6ba9c0d
Showing
2 changed files
with
53 additions
and
1 deletion.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,51 @@ | ||
import { expect } from 'chai'; | ||
|
||
import childContext from '../../../src/exportMap/childContext'; | ||
|
||
describe('childContext', () => { | ||
const settings = { | ||
setting1: true, | ||
setting2: false, | ||
}; | ||
const parserOptions = { | ||
ecmaVersion: 'latest', | ||
sourceType: 'module', | ||
}; | ||
const parserPath = 'path/to/parser'; | ||
const path = 'path/to/src/file'; | ||
const languageOptions = { | ||
ecmaVersion: 2024, | ||
sourceType: 'module', | ||
parser: {}, | ||
}; | ||
|
||
// https://github.com/import-js/eslint-plugin-import/issues/3051 | ||
it('should pass context properties through, if present', () => { | ||
const mockContext = { | ||
settings, | ||
parserOptions, | ||
parserPath, | ||
languageOptions, | ||
}; | ||
|
||
const result = childContext(path, mockContext); | ||
|
||
expect(result.settings).to.deep.equal(settings); | ||
expect(result.parserOptions).to.deep.equal(parserOptions); | ||
expect(result.parserPath).to.equal(parserPath); | ||
expect(result.languageOptions).to.deep.equal(languageOptions); | ||
}); | ||
|
||
it('should add path and cacheKey to context', () => { | ||
const mockContext = { | ||
settings, | ||
parserOptions, | ||
parserPath, | ||
}; | ||
|
||
const result = childContext(path, mockContext); | ||
|
||
expect(result.path).to.equal(path); | ||
expect(result.cacheKey).to.be.a('string'); | ||
}); | ||
}); |