Fixed useBuiltIns and modules validation when using 'false' as option (#11373)

* Fixed useBuiltIns and modules validation when using 'false' as option

* Added tests for 'validateUseBuiltInsOptions' and for 'validateModulesOption' when input is 'false'

Co-authored-by: Jovica Markoski <jovica@upshiftwork.com>
This commit is contained in:
Jovica Markoski 2020-04-03 21:41:32 +02:00 committed by GitHub
parent 2c31587aa1
commit 40db926170
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 29 additions and 3 deletions

View File

@ -167,8 +167,7 @@ export const validateModulesOption = (
modulesOpt: ModuleOption = ModulesOption.auto, modulesOpt: ModuleOption = ModulesOption.auto,
) => { ) => {
invariant( invariant(
ModulesOption[modulesOpt.toString()] || ModulesOption[modulesOpt.toString()] || modulesOpt === ModulesOption.false,
ModulesOption[modulesOpt.toString()] === ModulesOption.false,
`Invalid Option: The 'modules' option must be one of \n` + `Invalid Option: The 'modules' option must be one of \n` +
` - 'false' to indicate no module processing\n` + ` - 'false' to indicate no module processing\n` +
` - a specific module type: 'commonjs', 'amd', 'umd', 'systemjs'` + ` - a specific module type: 'commonjs', 'amd', 'umd', 'systemjs'` +
@ -184,7 +183,7 @@ export const validateUseBuiltInsOption = (
) => { ) => {
invariant( invariant(
UseBuiltInsOption[builtInsOpt.toString()] || UseBuiltInsOption[builtInsOpt.toString()] ||
UseBuiltInsOption[builtInsOpt.toString()] === UseBuiltInsOption.false, builtInsOpt === UseBuiltInsOption.false,
`Invalid Option: The 'useBuiltIns' option must be either `Invalid Option: The 'useBuiltIns' option must be either
'false' (default) to indicate no polyfill, 'false' (default) to indicate no polyfill,
'"entry"' to indicate replacing the entry polyfill, or '"entry"' to indicate replacing the entry polyfill, or

View File

@ -6,6 +6,7 @@ const {
checkDuplicateIncludeExcludes, checkDuplicateIncludeExcludes,
validateBoolOption, validateBoolOption,
validateModulesOption, validateModulesOption,
validateUseBuiltInsOption,
normalizePluginName, normalizePluginName,
} = normalizeOptions; } = normalizeOptions;
describe("normalize-options", () => { describe("normalize-options", () => {
@ -242,10 +243,36 @@ describe("normalize-options", () => {
}).toThrow(); }).toThrow();
}); });
it("`'false'` option is invalid", () => {
expect(() => {
validateModulesOption("false");
}).toThrow();
});
it("array option is invalid", () => { it("array option is invalid", () => {
expect(() => { expect(() => {
validateModulesOption([]); validateModulesOption([]);
}).toThrow(); }).toThrow();
}); });
}); });
describe("validateUseBuiltInsOptions", () => {
it("usage option is valid", () => {
expect(validateUseBuiltInsOption("usage")).toBe("usage");
});
it("entry option is valid", () => {
expect(validateUseBuiltInsOption("entry")).toBe("entry");
});
it("`false` option returns false", () => {
expect(validateUseBuiltInsOption(false)).toBe(false);
});
it("`'false'` option is invalid", () => {
expect(() => {
validateUseBuiltInsOption("false");
}).toThrow();
});
});
}); });