blob: 1b1e81743ac44c69642cff1d56796e468317e523 [file] [log] [blame]
import io
import os
import pytest
@pytest.fixture
def example():
def _example(name):
with io.open(
os.path.join(os.path.dirname(__file__), "examples", name + ".toml"),
encoding="utf-8",
) as f:
return f.read()
return _example
@pytest.fixture
def json_example():
def _example(name):
with io.open(
os.path.join(os.path.dirname(__file__), "examples", "json", name + ".json"),
encoding="utf-8",
) as f:
return f.read()
return _example
@pytest.fixture
def invalid_example():
def _example(name):
with io.open(
os.path.join(
os.path.dirname(__file__), "examples", "invalid", name + ".toml"
),
encoding="utf-8",
) as f:
return f.read()
return _example
TEST_DIR = os.path.join(os.path.dirname(__file__), "toml-test", "tests")
def get_tomltest_cases():
dirs = sorted(
f for f in os.listdir(TEST_DIR) if os.path.isdir(os.path.join(TEST_DIR, f))
)
assert dirs == ["invalid", "invalid-encoder", "valid"]
rv = {}
for d in dirs:
rv[d] = {}
files = os.listdir(os.path.join(TEST_DIR, d))
for f in files:
bn, ext = f.rsplit(".", 1)
if bn not in rv[d]:
rv[d][bn] = {}
with io.open(os.path.join(TEST_DIR, d, f), encoding="utf-8") as inp:
rv[d][bn][ext] = inp.read()
return rv
def pytest_generate_tests(metafunc):
test_list = get_tomltest_cases()
if "valid_case" in metafunc.fixturenames:
metafunc.parametrize(
"valid_case",
test_list["valid"].values(),
ids=list(test_list["valid"].keys()),
)
elif "invalid_decode_case" in metafunc.fixturenames:
metafunc.parametrize(
"invalid_decode_case",
test_list["invalid"].values(),
ids=list(test_list["invalid"].keys()),
)
elif "invalid_encode_case" in metafunc.fixturenames:
metafunc.parametrize(
"invalid_encode_case",
test_list["invalid-encoder"].values(),
ids=list(test_list["invalid-encoder"].keys()),
)