Skip to content

Commit f5677bc

Browse files
feat: ignore false/null/undefined plugins
1 parent 3c3d31e commit f5677bc

File tree

2 files changed

+41
-1
lines changed

2 files changed

+41
-1
lines changed

lib/ResolverFactory.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -657,7 +657,7 @@ exports.createResolver = function (options) {
657657
if (typeof plugin === "function") {
658658
/** @type {function(this: Resolver, Resolver): void} */
659659
(plugin).call(resolver, resolver);
660-
} else {
660+
} else if (plugin) {
661661
plugin.apply(resolver);
662662
}
663663
}

test/plugins.test.js

Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -33,4 +33,44 @@ describe("plugins", function () {
3333
}
3434
);
3535
});
36+
37+
it("should ignore 'false'/'null'/'undefined' plugins", done => {
38+
const FailedPlugin = class {
39+
apply() {
40+
throw new Error("FailedPlugin");
41+
}
42+
};
43+
const falsy = false;
44+
const resolver = ResolverFactory.createResolver({
45+
fileSystem: require("fs"),
46+
plugins: [
47+
false,
48+
null,
49+
undefined,
50+
falsy && new FailedPlugin(),
51+
new CloneBasenamePlugin(
52+
"after-existing-directory",
53+
"undescribed-raw-file"
54+
)
55+
]
56+
});
57+
58+
resolver.resolve(
59+
{},
60+
__dirname,
61+
"./fixtures/directory-default",
62+
{},
63+
function (err, result) {
64+
if (err) return done(err);
65+
if (!result) return done(new Error("No result"));
66+
expect(result).toEqual(
67+
path.resolve(
68+
__dirname,
69+
"fixtures/directory-default/directory-default.js"
70+
)
71+
);
72+
done();
73+
}
74+
);
75+
});
3676
});

0 commit comments

Comments
 (0)