diff options
Diffstat (limited to 'tests/python/test_generated_data.py')
-rw-r--r-- | tests/python/test_generated_data.py | 34 |
1 files changed, 34 insertions, 0 deletions
diff --git a/tests/python/test_generated_data.py b/tests/python/test_generated_data.py new file mode 100644 index 0000000..0ecee3c --- /dev/null +++ b/tests/python/test_generated_data.py @@ -0,0 +1,34 @@ +# Copyright (c) Microsoft Corporation. All rights reserved. +# Licensed under the MIT License. + +import json +import pathlib +from typing import Generator, List, Union + +import pytest + +import lsprotocol.converters as cv +import lsprotocol.types as lsp + +TEST_DATA_ROOT = pathlib.Path(__file__).parent.parent.parent / "packages" / "testdata" + + +def get_all_json_files(root: Union[pathlib.Path, str]) -> List[pathlib.Path]: + root_path = pathlib.Path(root) + return list(root_path.glob("**/*.json")) + + +converter = cv.get_converter() + + +@pytest.mark.parametrize("json_file", get_all_json_files(TEST_DATA_ROOT)) +def test_generated_data(json_file: str) -> None: + type_name, result_type, _ = json_file.name.split("-", 2) + lsp_type = getattr(lsp, type_name) + data = json.loads(json_file.read_text(encoding="utf-8")) + + try: + converter.structure(data, lsp_type) + assert result_type == "True", "Expected error, but succeeded structuring" + except Exception as e: + assert result_type == "False", "Expected success, but failed structuring" |