Skip to content

Commit e5ff68a

Browse files
authored
Merge pull request #285 from iguessitsokay/enforceextensions-empty-string
2 parents 1302f10 + c84de67 commit e5ff68a

File tree

2 files changed

+31
-1
lines changed

2 files changed

+31
-1
lines changed

lib/ResolverFactory.js

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -190,7 +190,12 @@ function createOptions(options) {
190190
descriptionFiles: Array.from(
191191
new Set(options.descriptionFiles || ["package.json"])
192192
),
193-
enforceExtension: options.enforceExtension || false,
193+
enforceExtension:
194+
options.enforceExtension === undefined
195+
? options.extensions && options.extensions.includes("")
196+
? true
197+
: false
198+
: options.enforceExtension,
194199
extensions: new Set(options.extensions || [".js", ".json", ".node"]),
195200
fileSystem: options.useSyncFileSystemCalls
196201
? new SyncAsyncFileSystemDecorator(

test/extensions.js

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,17 @@ const resolver = ResolverFactory.createResolver({
1111
fileSystem: nodeFileSystem
1212
});
1313

14+
const resolver2 = ResolverFactory.createResolver({
15+
extensions: [".ts", "", ".js"],
16+
fileSystem: nodeFileSystem
17+
});
18+
19+
const resolver3 = ResolverFactory.createResolver({
20+
extensions: [".ts", "", ".js"],
21+
enforceExtension: false,
22+
fileSystem: nodeFileSystem
23+
});
24+
1425
const fixture = path.resolve(__dirname, "fixtures", "extensions");
1526

1627
describe("extensions", function () {
@@ -70,4 +81,18 @@ describe("extensions", function () {
7081
done();
7182
});
7283
});
84+
it("should default enforceExtension to true when extensions includes an empty string", function (done) {
85+
const missingDependencies = new Set();
86+
resolver2.resolve({}, fixture, "./foo", { missingDependencies }, () => {
87+
missingDependencies.should.not.containEql(path.resolve(fixture, "foo"));
88+
done();
89+
});
90+
});
91+
it("should respect enforceExtension when extensions includes an empty string", function (done) {
92+
const missingDependencies = new Set();
93+
resolver3.resolve({}, fixture, "./foo", { missingDependencies }, () => {
94+
missingDependencies.should.containEql(path.resolve(fixture, "foo"));
95+
done();
96+
});
97+
});
7398
});

0 commit comments

Comments
 (0)