85 lines
2.2 KiB
Python
85 lines
2.2 KiB
Python
import unittest
|
|
from pathlib import Path
|
|
|
|
import pytest
|
|
|
|
from src.great_ai.utilities import ConfigFile
|
|
|
|
DATA_PATH = Path(__file__).parent.resolve() / "data"
|
|
|
|
|
|
class TestConfigFile(unittest.TestCase):
|
|
def test_simple(self) -> None:
|
|
c = ConfigFile(DATA_PATH / "good.conf")
|
|
assert c.zeroth_key == "test"
|
|
assert c.first_key == "András"
|
|
assert c.second_key == "test 2"
|
|
assert c.third_key == "test= 2=="
|
|
assert (
|
|
c.fourth_key
|
|
== """
|
|
this#
|
|
is
|
|
multiline
|
|
"""
|
|
)
|
|
assert c.whitespace == "hardly matters"
|
|
with pytest.raises(KeyError):
|
|
c.this
|
|
|
|
def test_simple_dict(self) -> None:
|
|
c = ConfigFile(DATA_PATH / "good.conf")
|
|
assert c["zeroth_key"] == "test"
|
|
assert c["first_key"] == "András"
|
|
assert c["second_key"] == "test 2"
|
|
assert c["third_key"] == "test= 2=="
|
|
assert (
|
|
c["fourth_key"]
|
|
== """
|
|
this#
|
|
is
|
|
multiline
|
|
"""
|
|
)
|
|
assert c["whitespace"] == "hardly matters"
|
|
with pytest.raises(KeyError):
|
|
c["#this"]
|
|
|
|
def test_string_path(self) -> None:
|
|
c = ConfigFile(str(DATA_PATH / "good.conf"))
|
|
assert c.zeroth_key == "test"
|
|
assert c.first_key == "András"
|
|
assert c.second_key == "test 2"
|
|
assert c.third_key == "test= 2=="
|
|
assert (
|
|
c.fourth_key
|
|
== """
|
|
this#
|
|
is
|
|
multiline
|
|
"""
|
|
)
|
|
assert c.whitespace == "hardly matters"
|
|
|
|
def test_env(self) -> None:
|
|
import os
|
|
|
|
os.environ["alma"] = "12"
|
|
c = ConfigFile(DATA_PATH / "env.conf")
|
|
del os.environ["alma"]
|
|
assert c.first_key == "test"
|
|
assert c.second_key == "12"
|
|
|
|
def test_env_not_exists(self) -> None:
|
|
with pytest.raises(KeyError):
|
|
ConfigFile(DATA_PATH / "env.conf")
|
|
|
|
def test_env_not_exists_but_ignored(self) -> None:
|
|
with pytest.raises(KeyError):
|
|
ConfigFile(
|
|
DATA_PATH / "env.conf", ignore_missing_environment_variables=True
|
|
)
|
|
|
|
def test_duplicate_key(self) -> None:
|
|
with pytest.raises(KeyError):
|
|
ConfigFile(DATA_PATH / "bad.conf")
|