Better error messages for invalid queries and query filters blocks

Handle other cases where the config is invalid.
This commit is contained in:
Andrew Eisenberg 2022-08-23 09:25:59 -07:00
parent fba13b0092
commit 5861352d57
9 changed files with 29 additions and 5 deletions

3
lib/analyze.js generated
View file

@ -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
View file

@ -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

View file

@ -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

View file

@ -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({

View file

@ -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);

View file

@ -1327,7 +1327,7 @@ doInvalidInputTest(
queries:
- uses:
- hello: world`,
configUtils.getQueryUsesInvalid
configUtils.getQueriesMissingUses
);
function doInvalidQueryUsesTest(