mirror of
https://github.com/fedora-python/tox-current-env.git
synced 2024-12-25 09:36:13 +01:00
Very rough implementation
This commit is contained in:
parent
bc3aa1e0a6
commit
4eaf432545
@ -1,6 +1,66 @@
|
|||||||
|
import os
|
||||||
|
import shutil
|
||||||
|
import sys
|
||||||
import tox
|
import tox
|
||||||
|
|
||||||
|
|
||||||
|
@tox.hookimpl
|
||||||
|
def tox_addoption(parser):
|
||||||
|
parser.add_argument(
|
||||||
|
"--current-env",
|
||||||
|
action="store_true",
|
||||||
|
dest="current_env",
|
||||||
|
default=False,
|
||||||
|
help="Run tests in current environment, not creating any virtual environment",
|
||||||
|
)
|
||||||
|
parser.add_argument(
|
||||||
|
"--print-deps-only",
|
||||||
|
action="store_true",
|
||||||
|
dest="print_deps_only",
|
||||||
|
default=False,
|
||||||
|
help="Don't run tests, only print the dependencies",
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
|
@tox.hookimpl
|
||||||
|
def tox_configure(config):
|
||||||
|
"""Stores a global varibale with current_env option.
|
||||||
|
Makes all commands external"""
|
||||||
|
if config.option.print_deps_only:
|
||||||
|
config.skipsdist = True
|
||||||
|
elif config.option.current_env:
|
||||||
|
config.option.recreate = True
|
||||||
|
config.skipsdist = True
|
||||||
|
for testenv in config.envconfigs:
|
||||||
|
config.envconfigs[testenv].whitelist_externals = "*"
|
||||||
|
|
||||||
|
return config
|
||||||
|
|
||||||
|
|
||||||
@tox.hookimpl
|
@tox.hookimpl
|
||||||
def tox_testenv_create(venv, action):
|
def tox_testenv_create(venv, action):
|
||||||
...
|
"""We don't create anything"""
|
||||||
|
config = venv.envconfig.config
|
||||||
|
if config.option.current_env or config.option.print_deps_only:
|
||||||
|
link = venv.envconfig.get_envpython()
|
||||||
|
target = sys.executable
|
||||||
|
shutil.rmtree(os.path.dirname(link), ignore_errors=True)
|
||||||
|
os.makedirs(os.path.dirname(link))
|
||||||
|
os.symlink(target, link)
|
||||||
|
return True
|
||||||
|
|
||||||
|
|
||||||
|
@tox.hookimpl
|
||||||
|
def tox_testenv_install_deps(venv, action):
|
||||||
|
"""We don't install anything"""
|
||||||
|
config = venv.envconfig.config
|
||||||
|
if config.option.current_env or config.option.print_deps_only:
|
||||||
|
return True
|
||||||
|
|
||||||
|
|
||||||
|
@tox.hookimpl
|
||||||
|
def tox_runtest(venv, redirect):
|
||||||
|
if venv.envconfig.config.option.print_deps_only:
|
||||||
|
for depndency in venv.get_resolved_dependencies():
|
||||||
|
print(depndency)
|
||||||
|
return True
|
||||||
|
Loading…
Reference in New Issue
Block a user