Better error messages for invalid queries and query filters blocks
Handle other cases where the config is invalid.
This commit is contained in:
parent
fba13b0092
commit
5861352d57
9 changed files with 29 additions and 5 deletions
3
lib/analyze.js
generated
3
lib/analyze.js
generated
|
|
@ -354,6 +354,9 @@ function validateQueryFilters(queryFilters) {
|
|||
if (!queryFilters) {
|
||||
return [];
|
||||
}
|
||||
if (!Array.isArray(queryFilters)) {
|
||||
throw new Error(`Query filters must be an array of "include" or "exclude" entries. Found ${typeof queryFilters}`);
|
||||
}
|
||||
const errors = [];
|
||||
for (const qf of queryFilters) {
|
||||
const keys = Object.keys(qf);
|
||||
|
|
|
|||
File diff suppressed because one or more lines are too long
5
lib/analyze.test.js
generated
5
lib/analyze.test.js
generated
|
|
@ -258,6 +258,11 @@ const util = __importStar(require("./util"));
|
|||
t.throws(() => {
|
||||
return (0, analyze_1.validateQueryFilters)([{ xxx: "foo" }]);
|
||||
}, { message: /Only "include" or "exclude" filters are allowed/ });
|
||||
t.throws(() => {
|
||||
return (0, analyze_1.validateQueryFilters)({ exclude: "foo" });
|
||||
}, {
|
||||
message: /Query filters must be an array of "include" or "exclude" entries/,
|
||||
});
|
||||
});
|
||||
const convertPackToQuerySuiteEntryMacro = ava_1.default.macro({
|
||||
exec: (t, packSpec, suiteEntry) => t.deepEqual((0, analyze_1.convertPackToQuerySuiteEntry)(packSpec), suiteEntry),
|
||||
|
|
|
|||
File diff suppressed because one or more lines are too long
2
lib/config-utils.test.js
generated
2
lib/config-utils.test.js
generated
|
|
@ -697,7 +697,7 @@ doInvalidInputTest("paths invalid type", `paths: 17`, configUtils.getPathsInvali
|
|||
doInvalidInputTest("queries uses invalid type", `
|
||||
queries:
|
||||
- uses:
|
||||
- hello: world`, configUtils.getQueryUsesInvalid);
|
||||
- hello: world`, configUtils.getQueriesMissingUses);
|
||||
function doInvalidQueryUsesTest(input, expectedErrorMessageGenerator) {
|
||||
// Invalid contents of a "queries.uses" field.
|
||||
// Should fail with the expected error message
|
||||
|
|
|
|||
File diff suppressed because one or more lines are too long
|
|
@ -312,6 +312,16 @@ test("validateQueryFilters", (t) => {
|
|||
},
|
||||
{ message: /Only "include" or "exclude" filters are allowed/ }
|
||||
);
|
||||
|
||||
t.throws(
|
||||
() => {
|
||||
return validateQueryFilters({ exclude: "foo" } as any);
|
||||
},
|
||||
{
|
||||
message:
|
||||
/Query filters must be an array of "include" or "exclude" entries/,
|
||||
}
|
||||
);
|
||||
});
|
||||
|
||||
const convertPackToQuerySuiteEntryMacro = test.macro({
|
||||
|
|
|
|||
|
|
@ -593,6 +593,12 @@ export function validateQueryFilters(queryFilters?: configUtils.QueryFilter[]) {
|
|||
return [];
|
||||
}
|
||||
|
||||
if (!Array.isArray(queryFilters)) {
|
||||
throw new Error(
|
||||
`Query filters must be an array of "include" or "exclude" entries. Found ${typeof queryFilters}`
|
||||
);
|
||||
}
|
||||
|
||||
const errors: string[] = [];
|
||||
for (const qf of queryFilters) {
|
||||
const keys = Object.keys(qf);
|
||||
|
|
|
|||
|
|
@ -1327,7 +1327,7 @@ doInvalidInputTest(
|
|||
queries:
|
||||
- uses:
|
||||
- hello: world`,
|
||||
configUtils.getQueryUsesInvalid
|
||||
configUtils.getQueriesMissingUses
|
||||
);
|
||||
|
||||
function doInvalidQueryUsesTest(
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue