python-semantic-release icon indicating copy to clipboard operation
python-semantic-release copied to clipboard

build(deps-dev): update pytest requirement from ~=7.0 to ~=8.2

Open dependabot[bot] opened this issue 1 year ago • 3 comments

Updates the requirements on pytest to permit the latest version.

Release notes

Sourced from pytest's releases.

8.2.0

pytest 8.2.0 (2024-04-27)

Deprecations

  • #12069: A deprecation warning is now raised when implementations of one of the following hooks request a deprecated py.path.local parameter instead of the pathlib.Path parameter which replaced it:

    • pytest_ignore_collect{.interpreted-text role="hook"} - the path parameter - use collection_path instead.
    • pytest_collect_file{.interpreted-text role="hook"} - the path parameter - use file_path instead.
    • pytest_pycollect_makemodule{.interpreted-text role="hook"} - the path parameter - use module_path instead.
    • pytest_report_header{.interpreted-text role="hook"} - the startdir parameter - use start_path instead.
    • pytest_report_collectionfinish{.interpreted-text role="hook"} - the startdir parameter - use start_path instead.

    The replacement parameters are available since pytest 7.0.0. The old parameters will be removed in pytest 9.0.0.

    See legacy-path-hooks-deprecated{.interpreted-text role="ref"} for more details.

Features

  • #11871: Added support for reading command line arguments from a file using the prefix character @, like e.g.: pytest @tests.txt. The file must have one argument per line.

    See Read arguments from file <args-from-file>{.interpreted-text role="ref"} for details.

Improvements

  • #11523: pytest.importorskip{.interpreted-text role="func"} will now issue a warning if the module could be found, but raised ImportError{.interpreted-text role="class"} instead of ModuleNotFoundError{.interpreted-text role="class"}.

    The warning can be suppressed by passing exc_type=ImportError to pytest.importorskip{.interpreted-text role="func"}.

    See import-or-skip-import-error{.interpreted-text role="ref"} for details.

  • #11728: For unittest-based tests, exceptions during class cleanup (as raised by functions registered with TestCase.addClassCleanup <unittest.TestCase.addClassCleanup>{.interpreted-text role="meth"}) are now reported instead of silently failing.

  • #11777: Text is no longer truncated in the short test summary info section when -vv is given.

  • #12112: Improved namespace packages detection when consider_namespace_packages{.interpreted-text role="confval"} is enabled, covering more situations (like editable installs).

  • #9502: Added PYTEST_VERSION{.interpreted-text role="envvar"} environment variable which is defined at the start of the pytest session and undefined afterwards. It contains the value of pytest.__version__, and among other things can be used to easily check if code is running from within a pytest run.

Bug Fixes

  • #12065: Fixed a regression in pytest 8.0.0 where test classes containing setup_method and tests using @staticmethod or @classmethod would crash with AttributeError: 'NoneType' object has no attribute 'setup_method'.

    Now the request.instance <pytest.FixtureRequest.instance>{.interpreted-text role="attr"} attribute of tests using @staticmethod and @classmethod is no longer None, but a fresh instance of the class, like in non-static methods.

... (truncated)

Commits
  • 6bd3f31 Tweak changelog for 8.2.0
  • 9b6219b Prepare release version 8.2.0
  • 835765c Merge pull request #12130 from bluetech/fixtures-inline
  • 7e7503c unittest: report class cleanup exceptions (#12250)
  • 882c4da fixtures: inline fail_fixturefunc
  • 2e8fb9f fixtures: extract a _check_fixturedef method
  • acf2971 fixtures: inline _getnextfixturedef into _get_active_fixturedef
  • 3c77aec fixtures: move "request" check early
  • d217d68 fixtures: inline _compute_fixture_value
  • 530be28 fixtures: use early return in _get_active_fixturedef
  • Additional commits viewable in compare view

You can trigger a rebase of this PR by commenting @dependabot rebase.


Dependabot commands and options

You can trigger Dependabot actions by commenting on this PR:

  • @dependabot rebase will rebase this PR
  • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
  • @dependabot merge will merge this PR after your CI passes on it
  • @dependabot squash and merge will squash and merge this PR after your CI passes on it
  • @dependabot cancel merge will cancel a previously requested merge and block automerging
  • @dependabot reopen will reopen this PR if it is closed
  • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
  • @dependabot show <dependency name> ignore conditions will show all of the ignore conditions of the specified dependency
  • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
  • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
  • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)

Note Automatic rebases have been disabled on this pull request as it has been open for over 30 days.

dependabot[bot] avatar Apr 29 '24 19:04 dependabot[bot]

pytest >= 8.0.0 is incompatible with pytest-lazy-fixture, will need some more extensive changes - see https://github.com/TvoroG/pytest-lazy-fixture/issues/65

codejedi365 avatar Apr 30 '24 03:04 codejedi365

pytest >= 8.0.0 is incompatible with pytest-lazy-fixture, will need some more extensive changes - see https://github.com/TvoroG/pytest-lazy-fixture/issues/65

Was just looking at this too 😞 I was having a little trouble making sense of some of the workarounds, but if you have an example of updating one test, I can definitely look at going through and updating the test cases.

wyardley avatar Jun 18 '24 15:06 wyardley

Same here, did not understand the workaround and unfortunately no, I didn't look into this problem further. Thank you for the willingness though.

Before I saw this project using lazy-fixture (that I didn't know existed) I believe the more expected way to implement this by pytest would be to have the fixture return a function. That way at the beginning of your test is when you call the function which ensures accurate order of operations within the test. The problem we faced is the fact that parameterization calculations take place first and we expect files to be written and a directory changed to for the repo_* fixtures which causes unintended problems. If you wrap it in lazy-fixture then it is not evaluated until the last second when the test is executed. This also allowed us to pass varied fixtures in as parameters to the test.

But honestly until more PRs are closed out a large refactor of the testing will just cause a bunch of merge conflicts for all of us. I'm not concerned with it at this time, I have bigger fish to fry.

codejedi365 avatar Jun 19 '24 08:06 codejedi365

Superseded by #987.

dependabot[bot] avatar Jul 22 '24 18:07 dependabot[bot]