mirror of
https://git.mirrors.martin98.com/https://github.com/langgenius/dify.git
synced 2025-05-21 20:18:57 +08:00
84 lines
2.2 KiB
Python
84 lines
2.2 KiB
Python
from textwrap import dedent
|
|
|
|
import pytest
|
|
from yaml import YAMLError
|
|
|
|
from core.tools.utils.yaml_utils import load_yaml_file
|
|
|
|
EXAMPLE_YAML_FILE = "example_yaml.yaml"
|
|
INVALID_YAML_FILE = "invalid_yaml.yaml"
|
|
NON_EXISTING_YAML_FILE = "non_existing_file.yaml"
|
|
|
|
|
|
@pytest.fixture
|
|
def prepare_example_yaml_file(tmp_path, monkeypatch) -> str:
|
|
monkeypatch.chdir(tmp_path)
|
|
file_path = tmp_path.joinpath(EXAMPLE_YAML_FILE)
|
|
file_path.write_text(
|
|
dedent(
|
|
"""\
|
|
address:
|
|
city: Example City
|
|
country: Example Country
|
|
age: 30
|
|
gender: male
|
|
languages:
|
|
- Python
|
|
- Java
|
|
- C++
|
|
empty_key:
|
|
"""
|
|
)
|
|
)
|
|
return str(file_path)
|
|
|
|
|
|
@pytest.fixture
|
|
def prepare_invalid_yaml_file(tmp_path, monkeypatch) -> str:
|
|
monkeypatch.chdir(tmp_path)
|
|
file_path = tmp_path.joinpath(INVALID_YAML_FILE)
|
|
file_path.write_text(
|
|
dedent(
|
|
"""\
|
|
address:
|
|
city: Example City
|
|
country: Example Country
|
|
age: 30
|
|
gender: male
|
|
languages:
|
|
- Python
|
|
- Java
|
|
- C++
|
|
"""
|
|
)
|
|
)
|
|
return str(file_path)
|
|
|
|
|
|
def test_load_yaml_non_existing_file():
|
|
assert load_yaml_file(file_path=NON_EXISTING_YAML_FILE) == {}
|
|
assert load_yaml_file(file_path="") == {}
|
|
|
|
with pytest.raises(FileNotFoundError):
|
|
load_yaml_file(file_path=NON_EXISTING_YAML_FILE, ignore_error=False)
|
|
|
|
|
|
def test_load_valid_yaml_file(prepare_example_yaml_file):
|
|
yaml_data = load_yaml_file(file_path=prepare_example_yaml_file)
|
|
assert len(yaml_data) > 0
|
|
assert yaml_data["age"] == 30
|
|
assert yaml_data["gender"] == "male"
|
|
assert yaml_data["address"]["city"] == "Example City"
|
|
assert set(yaml_data["languages"]) == {"Python", "Java", "C++"}
|
|
assert yaml_data.get("empty_key") is None
|
|
assert yaml_data.get("non_existed_key") is None
|
|
|
|
|
|
def test_load_invalid_yaml_file(prepare_invalid_yaml_file):
|
|
# yaml syntax error
|
|
with pytest.raises(YAMLError):
|
|
load_yaml_file(file_path=prepare_invalid_yaml_file, ignore_error=False)
|
|
|
|
# ignore error
|
|
assert load_yaml_file(file_path=prepare_invalid_yaml_file) == {}
|