Skip to content
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

New plugin version for tox 4 #42

Merged
merged 27 commits into from
Dec 14, 2022
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
27 commits
Select commit Hold shift + click to select a range
f55beb7
Rename module hooks to hooks3
frenzymadness Nov 8, 2021
a223dc5
New plugin version for tox 4 alpha
frenzymadness Nov 8, 2021
bb79c6d
Remove deprecated option --print-deps-only
frenzymadness Nov 8, 2021
5d3802d
Use sysconfig instead of hardcoded paths
frenzymadness Nov 8, 2021
46fd9f0
Use the default installer (pip) even it fails in an offline env
frenzymadness Nov 8, 2021
d6cb357
Own executor is not needed if we can override config
frenzymadness Dec 13, 2021
ba4146c
Empty list of commands means no need for SystemExit
frenzymadness Dec 13, 2021
07e8536
Add dummy installer so there is no chance to install packages
frenzymadness Dec 14, 2021
799e5dd
No longer check Python versions
frenzymadness Dec 14, 2021
c5281c6
Some more default options
frenzymadness Dec 14, 2021
70a344a
Fake Python environment
frenzymadness Dec 14, 2021
dadd0a9
Use our own subprocess executor to alter env variables
frenzymadness Jan 3, 2022
14fd3c2
Compatibility with Tox 4 beta 1
frenzymadness Feb 7, 2022
0e90086
Make __init__ methods noop and use env_dir instead of a temp dir
frenzymadness Feb 8, 2022
b9030cc
Copy of the tests for Tox 4
frenzymadness Feb 9, 2022
b0923ba
Improved tests and testing with tox 4
frenzymadness Feb 10, 2022
3e9cd58
Remove unused imports
frenzymadness Feb 10, 2022
463c745
Drop support for tox 3.15
frenzymadness Feb 25, 2022
5d5286d
Drop tox < 3.24, add Python 3.11, fix tox 4 compatibility
frenzymadness Nov 30, 2022
f5beafc
Fix tests
frenzymadness Nov 30, 2022
a72e7ba
Fix TOX_MIN_VERSION again
frenzymadness Dec 12, 2022
ad6bcf5
Fix for commands_pre and commands_post for tox 4
frenzymadness Dec 12, 2022
f71dd2a
Skip tox 3/4 tests with tox 4/3 via pytest, not tox
hroncok Dec 12, 2022
028ee0c
Avoid race conditions when running tests with xdist
hroncok Dec 13, 2022
c3497d2
Don't assume the tests allways run via tox
hroncok Dec 14, 2022
679fbc9
Always set passenv/pass_env to *
hroncok Dec 14, 2022
3438c56
Release 0.0.9
hroncok Dec 14, 2022
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
33 changes: 17 additions & 16 deletions .github/workflows/main.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -22,21 +22,22 @@ jobs:
# This information is repeated in tox.ini
# (see https://github.com/fedora-python/tox-github-action/issues/8)
# Generate it by: tox -l | sed "s/^/- /"
- py36-toxrelease
- py36-toxmaster
- py36-tox315
- py37-toxrelease
- py37-toxmaster
- py37-tox315
- py38-toxrelease
- py38-toxmaster
- py38-tox315
- py39-toxrelease
- py39-toxmaster
- py39-tox315
- py310-toxrelease
- py310-toxmaster
- py310-tox315

- py36-tox324
- py36-tox3
- py37-tox324
- py37-tox3
- py37-tox4
- py38-tox324
- py38-tox3
- py38-tox4
- py39-tox324
- py39-tox3
- py39-tox4
- py310-tox324
- py310-tox3
- py310-tox4
- py311-tox324
- py311-tox3
- py311-tox4
# Use GitHub's Linux Docker host
runs-on: ubuntu-latest
35 changes: 22 additions & 13 deletions README.rst
Original file line number Diff line number Diff line change
Expand Up @@ -157,6 +157,17 @@ To get a list of names of extras, run:
Caveats, warnings and limitations
---------------------------------

tox 4
~~~~~

The plugin is available also for tox 4. Differences in behavior between tox 3 and 4 are these:

- ``--recreate`` is no longer needed when you switch from the plugin back to standard tox. Tox
detects it and handles the recreation automatically.
- The plugin does not check the requested Python version nor the environment name. If you let
it run for multiple environments they'll all use the same Python.
- Deprecated ``--print-deps-only`` option is no longer available.

Use an isolated environment
~~~~~~~~~~~~~~~~~~~~~~~~~~~

Expand Down Expand Up @@ -197,15 +208,13 @@ forcefully killing it before it finished, uninstalling the plugin,
and running ``tox``), you will get undefined results
(such as installing packages from PyPI into your current environment).

Environment variables are not passed by default
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Environment variables are passed by default
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

Although the plugin name suggests that current environment is used for tests,
it means the Python environment, not Shell.
If you want the tests to see environment variables of the calling process,
use the ``TOX_TESTENV_PASSENV`` environment variable.
Read `the documentation for passing environment variables to tox
<https://tox.readthedocs.io/en/latest/config.html#conf-passenv>`_.
Since 0.0.9, all Shell environment variables are passed by default when using
this plugin. The `passenv` tox configuration is set to `*`.
Read `the documentation for more information about passing environment variables to tox
<https://tox.wiki/en/latest/config.html#passenv>`_.

tox provisioning
~~~~~~~~~~~~~~~~
Expand All @@ -221,20 +230,20 @@ installs (a newer version of) ``tox`` and the missing packages
into that environment and proxies all ``tox`` invocations trough that.
Unfortunately, this is undesired for ``tox-current-env``.

1. Starting with ``tox`` 3.23, it is possible to invoke it as
``tox --no-provision`` to prevent the provision entirely.
1. It is possible to invoke ``tox`` with ``--no-provision``
to prevent the provision entirely.
When requirements are missing, ``tox`` fails instead of provisioning.
If a path is passed as a value for ``--no-provision``,
the requirements will be serialized to the file, as JSON.
2. Starting with ``tox`` 3.22, the requires, if specified, are included in the
2. The requires, if specified, are included in the
results of ``tox --print-deps-to``.
This only works when they are installed (otherwise see the first point).
3. The minimal tox version, if specified, is included in the results of
``tox --print-deps-to`` (as ``tox >= X.Y.Z``).
``tox --print-deps-to``.
This only works when the version requirement is satisfied
(otherwise see the first point).

With ``tox >= 3.23``, the recommend way to handle this is:
The recommend way to handle this is:

1. Run ``tox --no-provision provision.json --print-deps-to=...`` or similar.
2. If the command fails, install requirements from ``provision.json`` to the
Expand Down
5 changes: 3 additions & 2 deletions setup.py
Original file line number Diff line number Diff line change
Expand Up @@ -14,12 +14,12 @@ def long_description():
author_email="miro@hroncok.cz",
url="https://github.com/fedora-python/tox-current-env",
license="MIT",
version="0.0.8",
version="0.0.9",
package_dir={"": "src"},
packages=find_packages("src"),
entry_points={"tox": ["current-env = tox_current_env.hooks"]},
install_requires=[
"tox>=3.15,<4",
"tox>=3.24",
"importlib_metadata; python_version < '3.8'"
],
extras_require={
Expand All @@ -42,6 +42,7 @@ def long_description():
"Programming Language :: Python :: 3.8",
"Programming Language :: Python :: 3.9",
"Programming Language :: Python :: 3.10",
"Programming Language :: Python :: 3.11",
"Programming Language :: Python :: Implementation :: CPython",
"Topic :: Software Development :: Testing",
],
Expand Down