Skip to content

Commit

Permalink
🧪 Make pytest notify us about future warnings
Browse files Browse the repository at this point in the history
In essence, this configures Python to turn any warnings emitted in
runtime into errors[[1]]. This is the best practice that allows
reacting to future deprecation announcements that are coming from the
dependencies (direct, or transitive, or even CPython itself)[[2]].

The typical workflow looks like this:

  1. If a dependency is updated an a warning is hit in tests, the
     deprecated thing should be replaced with newer APIs.

  2. If a dependency is transitive or we have no control over it
     otherwise, the specific warning and a regex matching its message,
     plus the module reference (where possible) can be added to the
     list of temporary ignores in `pytest.ini`.

  3. The list of temporary ignores should be reevaluated periodically,
     including when dependency re-pinning in lockfile is happening.

[1]: https://docs.python.org/3/using/cmdline.html#cmdoption-W
[2]: https://pytest-with-eric.com/configuration/pytest-ignore-warnings/
  • Loading branch information
webknjaz committed Nov 7, 2024
1 parent f4cbb9f commit 046c6bd
Show file tree
Hide file tree
Showing 2 changed files with 7 additions and 0 deletions.
4 changes: 4 additions & 0 deletions awxkit/tox.ini
Original file line number Diff line number Diff line change
Expand Up @@ -44,4 +44,8 @@ max-line-length = 120

[pytest]
addopts = -v --tb=native

filterwarnings =
error

junit_family=xunit2
3 changes: 3 additions & 0 deletions pytest.ini
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,9 @@ markers =
job_runtime_vars:
fixture_args:

filterwarnings =
error

# https://docs.pytest.org/en/stable/usage.html#creating-junitxml-format-files
junit_duration_report = call
# xunit1 contains more metadata than xunit2 so it's better for CI UIs:
Expand Down

0 comments on commit 046c6bd

Please sign in to comment.