ytdl-sub/tests/unit/utils/test_yaml.py
2022-05-27 22:14:50 -07:00

41 lines
1 KiB
Python

import tempfile
import pytest
from ytdl_sub.utils.exceptions import FileNotFoundException
from ytdl_sub.utils.exceptions import InvalidYamlException
from ytdl_sub.utils.yaml import load_yaml
@pytest.fixture
def bad_yaml():
return """
this:
is:
bad:
asdf:
bad :
:yaml
"""
@pytest.fixture
def bad_yaml_file_path(bad_yaml):
with tempfile.NamedTemporaryFile(suffix=".yaml") as tmp_file:
tmp_file.write(bad_yaml.encode("utf-8"))
tmp_file.flush()
yield tmp_file.name
def test_load_yaml_file_not_found():
file_path = "does_not_exist.yaml"
with pytest.raises(FileNotFoundException, match=f"The file '{file_path}' does not exist."):
load_yaml(file_path=file_path)
def test_load_yaml_invalid_syntax(bad_yaml_file_path):
with pytest.raises(
InvalidYamlException,
match=f"'{bad_yaml_file_path}' has invalid YAML, copy-paste it into a YAML checker to find the issue.",
):
load_yaml(file_path=bad_yaml_file_path)