Path: blob/main/tests/unit/schema-validation/schema-files.test.ts
6452 views
import { expandGlobSync } from "../../../src/core/deno/expand-glob.ts";1import { tidyverseFormatError } from "../../../src/core/lib/errors.ts";2import { LocalizedError } from "../../../src/core/lib/yaml-schema/types.ts";3import { withValidator } from "../../../src/core/lib/yaml-validation/validator-queue.ts";4import { WithValidatorFun } from "../../../src/core/lib/yaml-validation/validator-queue.ts";5import { unitTest } from "../../test.ts";6import { fullInit, readSelfValidatingSchemaTestFile } from "./utils.ts";78const globOutput = Deno.args.length9? expandGlobSync(Deno.args[0])10: expandGlobSync(11"docs/schema-files/**/*.yml",12);1314await fullInit();1516type Res = {17yaml: { [key: string]: unknown };18yamlValidationErrors: LocalizedError[];19};2021for (const { path: fileName } of globOutput) {22const input = fileName;2324unitTest(25`schema validation of ${input}`,26async () => {27const { schema, annotation, mappedYaml } =28readSelfValidatingSchemaTestFile(input);2930const validate: WithValidatorFun<Res> = async (validator) => {31const valResult = await validator.validateParse(32mappedYaml,33annotation,34);35return {36yaml: annotation.result as { [key: string]: unknown },37yamlValidationErrors: valResult.errors,38};39};4041const validationResult = await withValidator(42schema,43validate,44);4546if (47validationResult.yamlValidationErrors.length !== 048) {49for (const error of validationResult.yamlValidationErrors) {50console.log(tidyverseFormatError(error.niceError));51}52throw new Error("validation failed");53}54},55);56}575859