def test_docs_training_data(mdx_file_path: Path): with mdx_file_path.open("r") as handle: mdx_content = handle.read() matches = TRAINING_DATA_CODEBLOCK_RE.finditer(mdx_content) lines_with_errors: List[Text] = [] for match in matches: yaml_path = match.group("yaml_path") if yaml_path: with (DOCS_BASE_DIR / yaml_path).open("r") as handle: codeblock = handle.read() else: codeblock = match.group("codeblock") start_index = match.span()[0] line_number = mdx_content.count("\n", 0, start_index) + 1 try: RasaYAMLReader.validate(codeblock) except ValueError: lines_with_errors.append(str(line_number)) if lines_with_errors: raise AssertionError( f"({mdx_file_path}): Invalid training data found " f"at line{'s' if len(lines_with_errors) > 1 else ''} {', '.join(lines_with_errors)}" )
def _validate_yaml_training_payload(yaml_text: Text) -> None: try: RasaYAMLReader.validate(yaml_text) except Exception as e: raise ErrorResponse( 400, "BadRequest", f"The request body does not contain valid YAML. Error: {e}", help_url=DOCS_URL_TRAINING_DATA_NLU, )