New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

FileNotFoundError for lock file with tmpdir for old pytest-of-user root #4135

Closed
blueyed opened this Issue Oct 13, 2018 · 6 comments

Comments

Projects
None yet
4 participants
@blueyed
Contributor

blueyed commented Oct 13, 2018

With an existing /tmp/pytest-of-user directory there will be an error now:

___ ERROR at setup of TestGeneralUsage.test_config_error ___

self = <CallInfo when='setup' exception: [Errno 2] No such file or directory: '/tmp/pytest-of-daniel/pytest-current/.lock'>, func = <function call_runtest_hook.<locals>.<lambda> at 0x7f88d52cc0d0>, when = 'setup'
treat_keyboard_interrupt_as_exception = False

    def __init__(self, func, when, treat_keyboard_interrupt_as_exception=False):
        #: context of invocation: one of "setup", "call",
        #: "teardown", "memocollect"
        self.when = when
        self.start = time()
        try:
>           self.result = func()

src/_pytest/runner.py:201: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
src/_pytest/runner.py:183: in <lambda>
    lambda: ihook(item=item, **kwds),
.venv/lib/python3.6/site-packages/pluggy/hooks.py:258: in __call__
    return self._hookexec(self, self._nonwrappers + self._wrappers, kwargs)
.venv/lib/python3.6/site-packages/pluggy/manager.py:67: in _hookexec
    return self._inner_hookexec(hook, methods, kwargs)
.venv/lib/python3.6/site-packages/pluggy/manager.py:61: in <lambda>
    firstresult=hook.spec_opts.get('firstresult'),
src/_pytest/runner.py:104: in pytest_runtest_setup
    item.session._setupstate.prepare(item)
src/_pytest/runner.py:370: in prepare
    col.setup()
src/_pytest/python.py:1439: in setup
    fixtures.fillfixtures(self)
src/_pytest/fixtures.py:294: in fillfixtures
    request._fillfixtures()
src/_pytest/fixtures.py:467: in _fillfixtures
    item.funcargs[argname] = self.getfixturevalue(argname)
src/_pytest/fixtures.py:514: in getfixturevalue
    return self._get_active_fixturedef(argname).cached_result[0]
src/_pytest/fixtures.py:537: in _get_active_fixturedef
    self._compute_fixture_value(fixturedef)
src/_pytest/fixtures.py:623: in _compute_fixture_value
    fixturedef.execute(request=subrequest)
src/_pytest/fixtures.py:919: in execute
    return hook.pytest_fixture_setup(fixturedef=self, request=request)
.venv/lib/python3.6/site-packages/pluggy/hooks.py:258: in __call__
    return self._hookexec(self, self._nonwrappers + self._wrappers, kwargs)
.venv/lib/python3.6/site-packages/pluggy/manager.py:67: in _hookexec
    return self._inner_hookexec(hook, methods, kwargs)
.venv/lib/python3.6/site-packages/pluggy/manager.py:61: in <lambda>
    firstresult=hook.spec_opts.get('firstresult'),
src/_pytest/fixtures.py:961: in pytest_fixture_setup
    result = call_fixture_func(fixturefunc, request, kwargs)
src/_pytest/fixtures.py:820: in call_fixture_func
    res = fixturefunc(**kwargs)
src/_pytest/pytester.py:371: in testdir
    return Testdir(request, tmpdir_factory)
src/_pytest/pytester.py:498: in __init__
    self.tmpdir = tmpdir_factory.mktemp(name, numbered=True)
src/_pytest/tmpdir.py:103: in mktemp
    return py.path.local(self._tmppath_factory.mktemp(basename, numbered).resolve())
src/_pytest/tmpdir.py:47: in mktemp
    p = make_numbered_dir(root=self.getbasetemp(), prefix=basename)
src/_pytest/tmpdir.py:66: in getbasetemp
    prefix="pytest-", root=rootdir, keep=3, lock_timeout=LOCK_TIMEOUT
src/_pytest/pathlib.py:233: in make_numbered_dir_with_cleanup
    consider_lock_dead_if_created_before=consider_lock_dead_if_created_before,
src/_pytest/pathlib.py:212: in cleanup_numbered_dir
    try_cleanup(path, consider_lock_dead_if_created_before)
src/_pytest/pathlib.py:194: in try_cleanup
    delete_a_numbered_dir(path)
src/_pytest/pathlib.py:166: in delete_a_numbered_dir
    create_cleanup_lock(path)
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _

p = PosixPath('/tmp/pytest-of-user/pytest-current')

    def create_cleanup_lock(p):
        """crates a lock to prevent premature folder cleanup"""
        lock_path = get_lock_path(p)
        try:
>           fd = os.open(str(lock_path), os.O_WRONLY | os.O_CREAT | os.O_EXCL, 0o644)
E           FileNotFoundError: [Errno 2] No such file or directory: '/tmp/pytest-of-user/pytest-current/.lock'

src/_pytest/pathlib.py:127: FileNotFoundError
============================================================================================== short test summary info ==============================================================================================
ERROR testing/acceptance_test.py::TestGeneralUsage::()::test_config_error
============================================================================================== 1 error in 0.32 seconds ==============================================================================================
―

This is due to recent changes, but have not bisected it.

@nicoddemus

This comment has been minimized.

Member

nicoddemus commented Oct 13, 2018

Ahh good catch. This is related to the recent patlib refactoring.

cc @RonnyPfannschmidt

@RonnyPfannschmidt

This comment has been minimized.

Member

RonnyPfannschmidt commented Oct 13, 2018

great find - this is a behaviour missmatch related to the symlinking functionality - i'll create a fix tommorow

@Tadaboody

This comment has been minimized.

Contributor

Tadaboody commented Oct 14, 2018

any workaround until then? this started happening after switching from master to feature in this repo

@nicoddemus

This comment has been minimized.

Member

nicoddemus commented Oct 14, 2018

I suspect passing --basetemp to another directory other than the system's default would fix this (but I think a fix is coming up shortly anyway).

@blueyed

This comment has been minimized.

Contributor

blueyed commented Oct 14, 2018

rm -rf /tmp/pytest-of-user fixes it as a workaround.

RonnyPfannschmidt added a commit to RonnyPfannschmidt/pytest that referenced this issue Oct 14, 2018

@RonnyPfannschmidt

This comment has been minimized.

Member

RonnyPfannschmidt commented Oct 14, 2018

bugfix pending - thanks for catching and reporting so swiftly ^^

RonnyPfannschmidt added a commit that referenced this issue Oct 15, 2018

Merge pull request #4148 from RonnyPfannschmidt/pathlib-cleanup-symli…
…nk-is-fine

fix #4135 - handle symlinks in tmp path cleanup

@nicoddemus nicoddemus closed this Oct 15, 2018

peterbe added a commit to mozilla-services/tecken that referenced this issue Oct 25, 2018

Update pytest to 3.9.2 (#1264)
This PR updates [pytest](https://pypi.org/project/pytest) from **3.8.2** to **3.9.2**.



<details>
  <summary>Changelog</summary>
  
  
   ### 3.9.2
   ```
   =========================

Bug Fixes
---------

- `2909 &lt;https://github.com/pytest-dev/pytest/issues/2909&gt;`_: Improve error message when a recursive dependency between fixtures is detected.


- `3340 &lt;https://github.com/pytest-dev/pytest/issues/3340&gt;`_: Fix logging messages not shown in hooks ``pytest_sessionstart()`` and ``pytest_sessionfinish()``.


- `3533 &lt;https://github.com/pytest-dev/pytest/issues/3533&gt;`_: Fix unescaped XML raw objects in JUnit report for skipped tests


- `3691 &lt;https://github.com/pytest-dev/pytest/issues/3691&gt;`_: Python 2: safely format warning message about passing unicode strings to ``warnings.warn``, which may cause
  surprising ``MemoryError`` exception when monkey patching ``warnings.warn`` itself.


- `4026 &lt;https://github.com/pytest-dev/pytest/issues/4026&gt;`_: Improve error message when it is not possible to determine a function&#39;s signature.


- `4177 &lt;https://github.com/pytest-dev/pytest/issues/4177&gt;`_: Pin ``setuptools&gt;=40.0`` to support ``py_modules`` in ``setup.cfg``


- `4179 &lt;https://github.com/pytest-dev/pytest/issues/4179&gt;`_: Restore the tmpdir behaviour of symlinking the current test run.


- `4192 &lt;https://github.com/pytest-dev/pytest/issues/4192&gt;`_: Fix filename reported by ``warnings.warn`` when using ``recwarn`` under python2.
   ```
   
  
  
   ### 3.9.1
   ```
   =========================

Features
--------

- `4159 &lt;https://github.com/pytest-dev/pytest/issues/4159&gt;`_: For test-suites containing test classes, the information about the subclassed
  module is now output only if a higher verbosity level is specified (at least
  &quot;-vv&quot;).
   ```
   
  
  
   ### 3.9.0
   ```
   =========================================================================

Deprecations
------------

- `3616 &lt;https://github.com/pytest-dev/pytest/issues/3616&gt;`_: The following accesses have been documented as deprecated for years, but are now actually emitting deprecation warnings.

  * Access of ``Module``, ``Function``, ``Class``, ``Instance``, ``File`` and ``Item`` through ``Node`` instances. Now
    users will this warning::

          usage of Function.Module is deprecated, please use pytest.Module instead

    Users should just ``import pytest`` and access those objects using the ``pytest`` module.

  * ``request.cached_setup``, this was the precursor of the setup/teardown mechanism available to fixtures. You can
    consult `funcarg comparison section in the docs &lt;https://docs.pytest.org/en/latest/funcarg_compare.html&gt;`_.

  * Using objects named ``&quot;Class&quot;`` as a way to customize the type of nodes that are collected in ``Collector``
    subclasses has been deprecated. Users instead should use ``pytest_collect_make_item`` to customize node types during
    collection.

    This issue should affect only advanced plugins who create new collection types, so if you see this warning
    message please contact the authors so they can change the code.

  * The warning that produces the message below has changed to ``RemovedInPytest4Warning``::

          getfuncargvalue is deprecated, use getfixturevalue


- `3988 &lt;https://github.com/pytest-dev/pytest/issues/3988&gt;`_: Add a Deprecation warning for pytest.ensuretemp as it was deprecated since a while.



Features
--------

- `2293 &lt;https://github.com/pytest-dev/pytest/issues/2293&gt;`_: Improve usage errors messages by hiding internal details which can be distracting and noisy.

  This has the side effect that some error conditions that previously raised generic errors (such as
  ``ValueError`` for unregistered marks) are now raising ``Failed`` exceptions.


- `3332 &lt;https://github.com/pytest-dev/pytest/issues/3332&gt;`_: Improve the error displayed when a ``conftest.py`` file could not be imported.

  In order to implement this, a new ``chain`` parameter was added to ``ExceptionInfo.getrepr``
  to show or hide chained tracebacks in Python 3 (defaults to ``True``).


- `3849 &lt;https://github.com/pytest-dev/pytest/issues/3849&gt;`_: Add ``empty_parameter_set_mark=fail_at_collect`` ini option for raising an exception when parametrize collects an empty set.


- `3964 &lt;https://github.com/pytest-dev/pytest/issues/3964&gt;`_: Log messages generated in the collection phase are shown when
  live-logging is enabled and/or when they are logged to a file.


- `3985 &lt;https://github.com/pytest-dev/pytest/issues/3985&gt;`_: Introduce ``tmp_path`` as a fixture providing a Path object.


- `4013 &lt;https://github.com/pytest-dev/pytest/issues/4013&gt;`_: Deprecation warnings are now shown even if you customize the warnings filters yourself. In the previous version
  any customization would override pytest&#39;s filters and deprecation warnings would fall back to being hidden by default.


- `4073 &lt;https://github.com/pytest-dev/pytest/issues/4073&gt;`_: Allow specification of timeout for ``Testdir.runpytest_subprocess()`` and ``Testdir.run()``.


- `4098 &lt;https://github.com/pytest-dev/pytest/issues/4098&gt;`_: Add returncode argument to pytest.exit() to exit pytest with a specific return code.


- `4102 &lt;https://github.com/pytest-dev/pytest/issues/4102&gt;`_: Reimplement ``pytest.deprecated_call`` using ``pytest.warns`` so it supports the ``match=&#39;...&#39;`` keyword argument.

  This has the side effect that ``pytest.deprecated_call`` now raises ``pytest.fail.Exception`` instead
  of ``AssertionError``.


- `4149 &lt;https://github.com/pytest-dev/pytest/issues/4149&gt;`_: Require setuptools&gt;=30.3 and move most of the metadata to ``setup.cfg``.



Bug Fixes
---------

- `2535 &lt;https://github.com/pytest-dev/pytest/issues/2535&gt;`_: Improve error message when test functions of ``unittest.TestCase`` subclasses use a parametrized fixture.


- `3057 &lt;https://github.com/pytest-dev/pytest/issues/3057&gt;`_: ``request.fixturenames`` now correctly returns the name of fixtures created by ``request.getfixturevalue()``.


- `3946 &lt;https://github.com/pytest-dev/pytest/issues/3946&gt;`_: Warning filters passed as command line options using ``-W`` now take precedence over filters defined in ``ini``
  configuration files.


- `4066 &lt;https://github.com/pytest-dev/pytest/issues/4066&gt;`_: Fix source reindenting by using ``textwrap.dedent`` directly.


- `4102 &lt;https://github.com/pytest-dev/pytest/issues/4102&gt;`_: ``pytest.warn`` will capture previously-warned warnings in Python 2. Previously they were never raised.


- `4108 &lt;https://github.com/pytest-dev/pytest/issues/4108&gt;`_: Resolve symbolic links for args.

  This fixes running ``pytest tests/test_foo.py::test_bar``, where ``tests``
  is a symlink to ``project/app/tests``:
  previously ``project/app/conftest.py`` would be ignored for fixtures then.


- `4132 &lt;https://github.com/pytest-dev/pytest/issues/4132&gt;`_: Fix duplicate printing of internal errors when using ``--pdb``.


- `4135 &lt;https://github.com/pytest-dev/pytest/issues/4135&gt;`_: pathlib based tmpdir cleanup now correctly handles symlinks in the folder.


- `4152 &lt;https://github.com/pytest-dev/pytest/issues/4152&gt;`_: Display the filename when encountering ``SyntaxWarning``.



Improved Documentation
----------------------

- `3713 &lt;https://github.com/pytest-dev/pytest/issues/3713&gt;`_: Update usefixtures documentation to clarify that it can&#39;t be used with fixture functions.


- `4058 &lt;https://github.com/pytest-dev/pytest/issues/4058&gt;`_: Update fixture documentation to specify that a fixture can be invoked twice in the scope it&#39;s defined for.


- `4064 &lt;https://github.com/pytest-dev/pytest/issues/4064&gt;`_: According to unittest.rst, setUpModule and tearDownModule were not implemented, but it turns out they are. So updated the documentation for unittest.


- `4151 &lt;https://github.com/pytest-dev/pytest/issues/4151&gt;`_: Add tempir testing example to CONTRIBUTING.rst guide



Trivial/Internal Changes
------------------------

- `2293 &lt;https://github.com/pytest-dev/pytest/issues/2293&gt;`_: The internal ``MarkerError`` exception has been removed.


- `3988 &lt;https://github.com/pytest-dev/pytest/issues/3988&gt;`_: Port the implementation of tmpdir to pathlib.


- `4063 &lt;https://github.com/pytest-dev/pytest/issues/4063&gt;`_: Exclude 0.00 second entries from ``--duration`` output unless ``-vv`` is passed on the command-line.


- `4093 &lt;https://github.com/pytest-dev/pytest/issues/4093&gt;`_: Fixed formatting of string literals in internal tests.
   ```
   
  
</details>


 

<details>
  <summary>Links</summary>
  
  - PyPI: https://pypi.org/project/pytest
  - Changelog: https://pyup.io/changelogs/pytest/
  - Homepage: https://docs.pytest.org/en/latest/
</details>

bors bot added a commit to rehandalal/therapist that referenced this issue Oct 30, 2018

Merge #43
43: Update pytest to 3.9.3 r=rehandalal a=pyup-bot


This PR updates [pytest](https://pypi.org/project/pytest) from **3.8.2** to **3.9.3**.



<details>
  <summary>Changelog</summary>
  
  
   ### 3.9.3
   ```
   =========================

Bug Fixes
---------

- `4174 &lt;https://github.com/pytest-dev/pytest/issues/4174&gt;`_: Fix &quot;ValueError: Plugin already registered&quot; with conftest plugins via symlink.


- `4181 &lt;https://github.com/pytest-dev/pytest/issues/4181&gt;`_: Handle race condition between creation and deletion of temporary folders.


- `4221 &lt;https://github.com/pytest-dev/pytest/issues/4221&gt;`_: Fix bug where the warning summary at the end of the test session was not showing the test where the warning was originated.


- `4243 &lt;https://github.com/pytest-dev/pytest/issues/4243&gt;`_: Fix regression when ``stacklevel`` for warnings was passed as positional argument on python2.



Improved Documentation
----------------------

- `3851 &lt;https://github.com/pytest-dev/pytest/issues/3851&gt;`_: Add reference to ``empty_parameter_set_mark`` ini option in documentation of ``pytest.mark.parametrize``



Trivial/Internal Changes
------------------------

- `4028 &lt;https://github.com/pytest-dev/pytest/issues/4028&gt;`_: Revert patching of ``sys.breakpointhook`` since it appears to do nothing.


- `4233 &lt;https://github.com/pytest-dev/pytest/issues/4233&gt;`_: Apply an import sorter (``reorder-python-imports``) to the codebase.


- `4248 &lt;https://github.com/pytest-dev/pytest/issues/4248&gt;`_: Remove use of unnecessary compat shim, six.binary_type
   ```
   
  
  
   ### 3.9.2
   ```
   =========================

Bug Fixes
---------

- `2909 &lt;https://github.com/pytest-dev/pytest/issues/2909&gt;`_: Improve error message when a recursive dependency between fixtures is detected.


- `3340 &lt;https://github.com/pytest-dev/pytest/issues/3340&gt;`_: Fix logging messages not shown in hooks ``pytest_sessionstart()`` and ``pytest_sessionfinish()``.


- `3533 &lt;https://github.com/pytest-dev/pytest/issues/3533&gt;`_: Fix unescaped XML raw objects in JUnit report for skipped tests


- `3691 &lt;https://github.com/pytest-dev/pytest/issues/3691&gt;`_: Python 2: safely format warning message about passing unicode strings to ``warnings.warn``, which may cause
  surprising ``MemoryError`` exception when monkey patching ``warnings.warn`` itself.


- `4026 &lt;https://github.com/pytest-dev/pytest/issues/4026&gt;`_: Improve error message when it is not possible to determine a function&#39;s signature.


- `4177 &lt;https://github.com/pytest-dev/pytest/issues/4177&gt;`_: Pin ``setuptools&gt;=40.0`` to support ``py_modules`` in ``setup.cfg``


- `4179 &lt;https://github.com/pytest-dev/pytest/issues/4179&gt;`_: Restore the tmpdir behaviour of symlinking the current test run.


- `4192 &lt;https://github.com/pytest-dev/pytest/issues/4192&gt;`_: Fix filename reported by ``warnings.warn`` when using ``recwarn`` under python2.
   ```
   
  
  
   ### 3.9.1
   ```
   =========================

Features
--------

- `4159 &lt;https://github.com/pytest-dev/pytest/issues/4159&gt;`_: For test-suites containing test classes, the information about the subclassed
  module is now output only if a higher verbosity level is specified (at least
  &quot;-vv&quot;).
   ```
   
  
  
   ### 3.9.0
   ```
   =========================================================================

Deprecations
------------

- `3616 &lt;https://github.com/pytest-dev/pytest/issues/3616&gt;`_: The following accesses have been documented as deprecated for years, but are now actually emitting deprecation warnings.

  * Access of ``Module``, ``Function``, ``Class``, ``Instance``, ``File`` and ``Item`` through ``Node`` instances. Now
    users will this warning::

          usage of Function.Module is deprecated, please use pytest.Module instead

    Users should just ``import pytest`` and access those objects using the ``pytest`` module.

  * ``request.cached_setup``, this was the precursor of the setup/teardown mechanism available to fixtures. You can
    consult `funcarg comparison section in the docs &lt;https://docs.pytest.org/en/latest/funcarg_compare.html&gt;`_.

  * Using objects named ``&quot;Class&quot;`` as a way to customize the type of nodes that are collected in ``Collector``
    subclasses has been deprecated. Users instead should use ``pytest_collect_make_item`` to customize node types during
    collection.

    This issue should affect only advanced plugins who create new collection types, so if you see this warning
    message please contact the authors so they can change the code.

  * The warning that produces the message below has changed to ``RemovedInPytest4Warning``::

          getfuncargvalue is deprecated, use getfixturevalue


- `3988 &lt;https://github.com/pytest-dev/pytest/issues/3988&gt;`_: Add a Deprecation warning for pytest.ensuretemp as it was deprecated since a while.



Features
--------

- `2293 &lt;https://github.com/pytest-dev/pytest/issues/2293&gt;`_: Improve usage errors messages by hiding internal details which can be distracting and noisy.

  This has the side effect that some error conditions that previously raised generic errors (such as
  ``ValueError`` for unregistered marks) are now raising ``Failed`` exceptions.


- `3332 &lt;https://github.com/pytest-dev/pytest/issues/3332&gt;`_: Improve the error displayed when a ``conftest.py`` file could not be imported.

  In order to implement this, a new ``chain`` parameter was added to ``ExceptionInfo.getrepr``
  to show or hide chained tracebacks in Python 3 (defaults to ``True``).


- `3849 &lt;https://github.com/pytest-dev/pytest/issues/3849&gt;`_: Add ``empty_parameter_set_mark=fail_at_collect`` ini option for raising an exception when parametrize collects an empty set.


- `3964 &lt;https://github.com/pytest-dev/pytest/issues/3964&gt;`_: Log messages generated in the collection phase are shown when
  live-logging is enabled and/or when they are logged to a file.


- `3985 &lt;https://github.com/pytest-dev/pytest/issues/3985&gt;`_: Introduce ``tmp_path`` as a fixture providing a Path object.


- `4013 &lt;https://github.com/pytest-dev/pytest/issues/4013&gt;`_: Deprecation warnings are now shown even if you customize the warnings filters yourself. In the previous version
  any customization would override pytest&#39;s filters and deprecation warnings would fall back to being hidden by default.


- `4073 &lt;https://github.com/pytest-dev/pytest/issues/4073&gt;`_: Allow specification of timeout for ``Testdir.runpytest_subprocess()`` and ``Testdir.run()``.


- `4098 &lt;https://github.com/pytest-dev/pytest/issues/4098&gt;`_: Add returncode argument to pytest.exit() to exit pytest with a specific return code.


- `4102 &lt;https://github.com/pytest-dev/pytest/issues/4102&gt;`_: Reimplement ``pytest.deprecated_call`` using ``pytest.warns`` so it supports the ``match=&#39;...&#39;`` keyword argument.

  This has the side effect that ``pytest.deprecated_call`` now raises ``pytest.fail.Exception`` instead
  of ``AssertionError``.


- `4149 &lt;https://github.com/pytest-dev/pytest/issues/4149&gt;`_: Require setuptools&gt;=30.3 and move most of the metadata to ``setup.cfg``.



Bug Fixes
---------

- `2535 &lt;https://github.com/pytest-dev/pytest/issues/2535&gt;`_: Improve error message when test functions of ``unittest.TestCase`` subclasses use a parametrized fixture.


- `3057 &lt;https://github.com/pytest-dev/pytest/issues/3057&gt;`_: ``request.fixturenames`` now correctly returns the name of fixtures created by ``request.getfixturevalue()``.


- `3946 &lt;https://github.com/pytest-dev/pytest/issues/3946&gt;`_: Warning filters passed as command line options using ``-W`` now take precedence over filters defined in ``ini``
  configuration files.


- `4066 &lt;https://github.com/pytest-dev/pytest/issues/4066&gt;`_: Fix source reindenting by using ``textwrap.dedent`` directly.


- `4102 &lt;https://github.com/pytest-dev/pytest/issues/4102&gt;`_: ``pytest.warn`` will capture previously-warned warnings in Python 2. Previously they were never raised.


- `4108 &lt;https://github.com/pytest-dev/pytest/issues/4108&gt;`_: Resolve symbolic links for args.

  This fixes running ``pytest tests/test_foo.py::test_bar``, where ``tests``
  is a symlink to ``project/app/tests``:
  previously ``project/app/conftest.py`` would be ignored for fixtures then.


- `4132 &lt;https://github.com/pytest-dev/pytest/issues/4132&gt;`_: Fix duplicate printing of internal errors when using ``--pdb``.


- `4135 &lt;https://github.com/pytest-dev/pytest/issues/4135&gt;`_: pathlib based tmpdir cleanup now correctly handles symlinks in the folder.


- `4152 &lt;https://github.com/pytest-dev/pytest/issues/4152&gt;`_: Display the filename when encountering ``SyntaxWarning``.



Improved Documentation
----------------------

- `3713 &lt;https://github.com/pytest-dev/pytest/issues/3713&gt;`_: Update usefixtures documentation to clarify that it can&#39;t be used with fixture functions.


- `4058 &lt;https://github.com/pytest-dev/pytest/issues/4058&gt;`_: Update fixture documentation to specify that a fixture can be invoked twice in the scope it&#39;s defined for.


- `4064 &lt;https://github.com/pytest-dev/pytest/issues/4064&gt;`_: According to unittest.rst, setUpModule and tearDownModule were not implemented, but it turns out they are. So updated the documentation for unittest.


- `4151 &lt;https://github.com/pytest-dev/pytest/issues/4151&gt;`_: Add tempir testing example to CONTRIBUTING.rst guide



Trivial/Internal Changes
------------------------

- `2293 &lt;https://github.com/pytest-dev/pytest/issues/2293&gt;`_: The internal ``MarkerError`` exception has been removed.


- `3988 &lt;https://github.com/pytest-dev/pytest/issues/3988&gt;`_: Port the implementation of tmpdir to pathlib.


- `4063 &lt;https://github.com/pytest-dev/pytest/issues/4063&gt;`_: Exclude 0.00 second entries from ``--duration`` output unless ``-vv`` is passed on the command-line.


- `4093 &lt;https://github.com/pytest-dev/pytest/issues/4093&gt;`_: Fixed formatting of string literals in internal tests.
   ```
   
  
</details>


 

<details>
  <summary>Links</summary>
  
  - PyPI: https://pypi.org/project/pytest
  - Changelog: https://pyup.io/changelogs/pytest/
  - Homepage: https://docs.pytest.org/en/latest/
</details>



Co-authored-by: pyup-bot <github-bot@pyup.io>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment