From fab696dcd1ecd621ed05d2552b7d790ab143efe5 Mon Sep 17 00:00:00 2001 From: Chris Wheeler Date: Tue, 14 Jun 2022 07:24:35 -0400 Subject: [PATCH] Add support for .pytest.ini as an alternative to pytest.ini Closes #9987 --- AUTHORS | 1 + changelog/9987.improvement.rst | 1 + doc/en/reference/customize.rst | 4 +++- doc/en/reference/reference.rst | 7 ++++--- src/_pytest/config/findpaths.py | 1 + testing/test_config.py | 11 ++++++++--- 6 files changed, 18 insertions(+), 7 deletions(-) create mode 100644 changelog/9987.improvement.rst diff --git a/AUTHORS b/AUTHORS index 6a88d2bbb71..d1f1b5503f2 100644 --- a/AUTHORS +++ b/AUTHORS @@ -67,6 +67,7 @@ Cheuk Ting Ho Chris Lamb Chris NeJame Chris Rose +Chris Wheeler Christian Boelsen Christian Fetzer Christian Neumüller diff --git a/changelog/9987.improvement.rst b/changelog/9987.improvement.rst new file mode 100644 index 00000000000..cb1ae17ad2c --- /dev/null +++ b/changelog/9987.improvement.rst @@ -0,0 +1 @@ +Added support for hidden configuration file by allowing ``.pytest.ini`` as an alternative to ``pytest.ini``. diff --git a/doc/en/reference/customize.rst b/doc/en/reference/customize.rst index fe10ca066b2..b6d21445a7e 100644 --- a/doc/en/reference/customize.rst +++ b/doc/en/reference/customize.rst @@ -29,9 +29,11 @@ pytest.ini ``pytest.ini`` files take precedence over other files, even when empty. +Alternatively, the hidden version ``.pytest.ini`` can be used. + .. code-block:: ini - # pytest.ini + # pytest.ini or .pytest.ini [pytest] minversion = 6.0 addopts = -ra -q diff --git a/doc/en/reference/reference.rst b/doc/en/reference/reference.rst index 6402e0af64f..4ea391be2a8 100644 --- a/doc/en/reference/reference.rst +++ b/doc/en/reference/reference.rst @@ -1154,9 +1154,10 @@ Consult the :ref:`internal-warnings` section in the documentation for more infor Configuration Options --------------------- -Here is a list of builtin configuration options that may be written in a ``pytest.ini``, ``pyproject.toml``, ``tox.ini`` or ``setup.cfg`` -file, usually located at the root of your repository. To see each file format in details, see -:ref:`config file formats`. +Here is a list of builtin configuration options that may be written in a ``pytest.ini`` (or ``.pytest.ini``), +``pyproject.toml``, ``tox.ini``, or ``setup.cfg`` file, usually located at the root of your repository. + +To see each file format in details, see :ref:`config file formats`. .. warning:: Usage of ``setup.cfg`` is not recommended except for very simple use cases. ``.cfg`` diff --git a/src/_pytest/config/findpaths.py b/src/_pytest/config/findpaths.py index ead344baac5..43c2367793e 100644 --- a/src/_pytest/config/findpaths.py +++ b/src/_pytest/config/findpaths.py @@ -96,6 +96,7 @@ def locate_config( and return a tuple of (rootdir, inifile, cfg-dict).""" config_names = [ "pytest.ini", + ".pytest.ini", "pyproject.toml", "tox.ini", "setup.cfg", diff --git a/testing/test_config.py b/testing/test_config.py index ac0c159a833..c2e3fe5bbcf 100644 --- a/testing/test_config.py +++ b/testing/test_config.py @@ -112,21 +112,26 @@ def test_tox_ini_wrong_version(self, pytester: Pytester) -> None: @pytest.mark.parametrize( "section, name", - [("tool:pytest", "setup.cfg"), ("pytest", "tox.ini"), ("pytest", "pytest.ini")], + [ + ("tool:pytest", "setup.cfg"), + ("pytest", "tox.ini"), + ("pytest", "pytest.ini"), + ("pytest", ".pytest.ini"), + ], ) def test_ini_names(self, pytester: Pytester, name, section) -> None: pytester.path.joinpath(name).write_text( textwrap.dedent( """ [{section}] - minversion = 1.0 + minversion = 3.36 """.format( section=section ) ) ) config = pytester.parseconfig() - assert config.getini("minversion") == "1.0" + assert config.getini("minversion") == "3.36" def test_pyproject_toml(self, pytester: Pytester) -> None: pytester.makepyprojecttoml(