Merge pull request #8857 from hukkin/tomli
Support TOML v1.0.0 syntax in `pyproject.toml`
This commit is contained in:
commit
e86bf7fda0
|
@ -58,7 +58,7 @@ repos:
|
|||
- py>=1.8.2
|
||||
- attrs>=19.2.0
|
||||
- packaging
|
||||
- types-toml
|
||||
- tomli
|
||||
- types-pkg_resources
|
||||
- repo: local
|
||||
hooks:
|
||||
|
|
1
AUTHORS
1
AUTHORS
|
@ -302,6 +302,7 @@ Sven-Hendrik Haase
|
|||
Sylvain Marié
|
||||
Tadek Teleżyński
|
||||
Takafumi Arakaki
|
||||
Taneli Hukkinen
|
||||
Tanvi Mehta
|
||||
Tarcisio Fischer
|
||||
Tareq Alayan
|
||||
|
|
|
@ -0,0 +1 @@
|
|||
Switch TOML parser from ``toml`` to ``tomli`` for TOML v1.0.0 support in ``pyproject.toml``.
|
|
@ -47,7 +47,7 @@ install_requires =
|
|||
packaging
|
||||
pluggy>=0.12,<1.0.0a1
|
||||
py>=1.8.2
|
||||
toml
|
||||
tomli>=1.0.0,<2.0.0
|
||||
atomicwrites>=1.0;sys_platform=="win32"
|
||||
colorama;sys_platform=="win32"
|
||||
importlib-metadata>=0.12;python_version<"3.8"
|
||||
|
|
|
@ -64,9 +64,13 @@ def load_config_dict_from_file(
|
|||
|
||||
# '.toml' files are considered if they contain a [tool.pytest.ini_options] table.
|
||||
elif filepath.suffix == ".toml":
|
||||
import toml
|
||||
import tomli
|
||||
|
||||
config = toml.load(str(filepath))
|
||||
toml_text = filepath.read_text(encoding="utf-8")
|
||||
try:
|
||||
config = tomli.loads(toml_text)
|
||||
except tomli.TOMLDecodeError as exc:
|
||||
raise UsageError(str(exc)) from exc
|
||||
|
||||
result = config.get("tool", {}).get("pytest", {}).get("ini_options", None)
|
||||
if result is not None:
|
||||
|
|
|
@ -2,6 +2,7 @@ from pathlib import Path
|
|||
from textwrap import dedent
|
||||
|
||||
import pytest
|
||||
from _pytest.config import UsageError
|
||||
from _pytest.config.findpaths import get_common_ancestor
|
||||
from _pytest.config.findpaths import get_dirs_from_args
|
||||
from _pytest.config.findpaths import load_config_dict_from_file
|
||||
|
@ -52,6 +53,13 @@ class TestLoadConfigDictFromFile:
|
|||
load_config_dict_from_file(fn)
|
||||
|
||||
def test_invalid_toml_file(self, tmp_path: Path) -> None:
|
||||
"""Invalid .toml files should raise `UsageError`."""
|
||||
fn = tmp_path / "myconfig.toml"
|
||||
fn.write_text("]invalid toml[", encoding="utf-8")
|
||||
with pytest.raises(UsageError):
|
||||
load_config_dict_from_file(fn)
|
||||
|
||||
def test_custom_toml_file(self, tmp_path: Path) -> None:
|
||||
""".toml files without [tool.pytest.ini_options] are not considered for configuration."""
|
||||
fn = tmp_path / "myconfig.toml"
|
||||
fn.write_text(
|
||||
|
@ -77,6 +85,7 @@ class TestLoadConfigDictFromFile:
|
|||
y = 20.0
|
||||
values = ["tests", "integration"]
|
||||
name = "foo"
|
||||
heterogeneous_array = [1, "str"]
|
||||
"""
|
||||
),
|
||||
encoding="utf-8",
|
||||
|
@ -86,6 +95,7 @@ class TestLoadConfigDictFromFile:
|
|||
"y": "20.0",
|
||||
"values": ["tests", "integration"],
|
||||
"name": "foo",
|
||||
"heterogeneous_array": [1, "str"],
|
||||
}
|
||||
|
||||
|
||||
|
|
Loading…
Reference in New Issue