Skip to content

Commit e96c670

Browse files
committed
Inline and simplify loader test
1 parent 96d34dc commit e96c670

File tree

1 file changed

+18
-35
lines changed

1 file changed

+18
-35
lines changed
Lines changed: 18 additions & 35 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,4 @@
1-
import os
2-
from typing import Union
1+
from pathlib import Path
32

43
import pytest
54
from hbreader import FileInfo
@@ -8,42 +7,11 @@
87
import tests.environment as test_base
98
from linkml_runtime.dumpers import yaml_dumper
109
from linkml_runtime.loaders import json_loader, yaml_loader
11-
from linkml_runtime.loaders.loader_root import Loader
12-
from linkml_runtime.utils.yamlutils import YAMLRoot
1310
from tests.test_loaders_dumpers.environment import env
1411
from tests.test_loaders_dumpers.models.books_normalized_pydantic import BookSeries
1512
from tests.test_loaders_dumpers.models.kitchen_sink_pydantic import Dataset
1613

1714

18-
def loader_test(filename: str, model: Union[type[YAMLRoot], type[BaseModel]], loader: Loader) -> None:
19-
"""
20-
Test the various permutations of the supplied loader using the input file 'filename' -- both load and loads
21-
22-
:param filename: un-pathed file name to load
23-
:param model: model to load the file name into
24-
:param loader: package that contains 'load' and 'loads' operations
25-
"""
26-
metadata = FileInfo()
27-
name, typ = filename.rsplit(".", 1)
28-
expected_yaml = env.expected_path("load", name + "_" + typ + ".yaml")
29-
if issubclass(model, YAMLRoot):
30-
python_obj: YAMLRoot = loader.load(filename, model, metadata=metadata, base_dir=env.indir)
31-
elif issubclass(model, BaseModel):
32-
python_obj: BaseModel = loader.load(filename, model, metadata=metadata, base_dir=env.indir)
33-
else:
34-
raise TypeError(f"Unknown target class: {model}")
35-
env.eval_single_file(expected_yaml, yaml_dumper.dumps(python_obj))
36-
37-
# Make sure metadata gets filled out properly
38-
rel_path = os.path.abspath(os.path.join(test_base.env.cwd, ".."))
39-
assert os.path.normpath("tests/test_loaders_dumpers/input") == os.path.normpath(
40-
os.path.relpath(metadata.base_path, rel_path)
41-
)
42-
assert os.path.normpath(f"tests/test_loaders_dumpers/input/{filename}") == os.path.normpath(
43-
os.path.relpath(metadata.source_file, rel_path)
44-
)
45-
46-
4715
@pytest.mark.parametrize(
4816
"filename,model,loader",
4917
[
@@ -53,5 +21,20 @@ def loader_test(filename: str, model: Union[type[YAMLRoot], type[BaseModel]], lo
5321
("kitchen_sink_normalized_inst_01.json", Dataset, json_loader),
5422
],
5523
)
56-
def test_loader(filename, model, loader):
57-
loader_test(filename, model, loader)
24+
def test_loader_basemodel(filename, model, loader):
25+
name = Path(filename).stem
26+
type = Path(filename).suffix.lstrip(".")
27+
expected_yaml = env.expected_path("load", f"{name}_{type}.yaml")
28+
29+
metadata = FileInfo()
30+
31+
python_obj: BaseModel = loader.load(filename, model, metadata=metadata, base_dir=env.indir)
32+
assert env.eval_single_file(expected_yaml, yaml_dumper.dumps(python_obj))
33+
34+
# Make sure metadata gets filled out properly using pathlib
35+
rel_path = Path(test_base.env.cwd).resolve().parent
36+
base_path = Path(metadata.base_path).resolve()
37+
source_file = Path(metadata.source_file).resolve()
38+
39+
assert Path("tests/test_loaders_dumpers/input") == base_path.relative_to(rel_path)
40+
assert Path(f"tests/test_loaders_dumpers/input/{filename}") == source_file.relative_to(rel_path)

0 commit comments

Comments
 (0)