From 6c3437f5095b332f763574acd4a423793c6712d0 Mon Sep 17 00:00:00 2001 From: Nicolas Kruse Date: Fri, 6 Jun 2025 09:05:40 +0200 Subject: [PATCH] example unit test updated to test all examples from example directory --- tests/md_to_code.py | 12 ++++++------ tests/test_doc_examples.py | 25 +++++++++++++++++++++---- 2 files changed, 27 insertions(+), 10 deletions(-) diff --git a/tests/md_to_code.py b/tests/md_to_code.py index a2ea263..bb009e7 100644 --- a/tests/md_to_code.py +++ b/tests/md_to_code.py @@ -1,10 +1,9 @@ - - import re -from typing import Generator, Iterable, Literal +from typing import Generator, Iterable from dataclasses import dataclass import sys + @dataclass class markdown_segment: code_block: bool @@ -24,7 +23,7 @@ def convert_to(target_format: str, md_filename: str, out_filename: str, language f_out.write('\n'.join(segments_to_striped_markdown(segments, language))) else: raise ValueError('Unknown target format') - + def segment_markdown(markdown_file: Iterable[str]) -> Generator[markdown_segment, None, None]: regex = re.compile(r"(?:^```\s*(?P(?:\w|-)*)$)", re.MULTILINE) @@ -95,7 +94,7 @@ def segments_to_test(segments: Iterable[markdown_segment], script_language: str if segment.language == script_language: lines = [line for line in segment.text.splitlines() if line.strip()] ret_block_flag = lines[-1] if not re.match(r'^[^(]*=', lines[-1]) and not lines[-1].startswith('import ') else None - print('Last line: ', ret_block_flag, '-----------', lines[-1]) + # print('Last line: ', ret_block_flag, '-----------', lines[-1]) yield '' yield ' print("---------------------------------------------------------")' @@ -119,7 +118,8 @@ def segments_to_test(segments: Iterable[markdown_segment], script_language: str yield '\nif __name__ == "__main__":' yield ' run_test()' + if __name__ == "__main__": format = sys.argv[1] assert format in ['test', 'script'] - convert_to(sys.argv[1], sys.argv[2], sys.argv[3]) \ No newline at end of file + convert_to(sys.argv[1], sys.argv[2], sys.argv[3]) diff --git a/tests/test_doc_examples.py b/tests/test_doc_examples.py index 375abbd..0b498de 100644 --- a/tests/test_doc_examples.py +++ b/tests/test_doc_examples.py @@ -1,11 +1,28 @@ import md_to_code +from glob import glob +import importlib +import os + def test_readme(): md_to_code.convert_to('test', 'README.md', 'tests/autogenerated_readme.py') import autogenerated_readme autogenerated_readme.run_test() -def test_soec_example(): - md_to_code.convert_to('test', 'docs/source/examples/soec_methane.md', 'tests/autogenerated_soec_example.py') - import autogenerated_soec_example - autogenerated_soec_example.run_test() \ No newline at end of file + +def test_example_code(): + filter = 'docs/source/examples/*.md' + + files = glob(filter) + for path in files: + file_name = '.'.join(os.path.basename(path).split('.')[:-1]) + if not file_name.lower() == 'readme': + print(f"> Test Example {file_name} ...") + md_to_code.convert_to('test', path, f'tests/autogenerated_{file_name}.py') + mod = importlib.import_module(file_name) + mod.run_test() + + +if __name__ == "__main__": + test_readme() + test_example_code()