Add runtime option for forcing error if poetry is not found

This commit is contained in:
Ethan Paul 2020-12-05 14:57:44 -05:00
parent 39439f132a
commit 99edc1c24e
No known key found for this signature in database
GPG Key ID: C5F5542B54A4D9C6
3 changed files with 17 additions and 4 deletions

View File

@ -36,6 +36,5 @@ try:
from poetry.utils.env import VirtualEnv
except ImportError:
raise exceptions.PoetryNotInstalledError(
f"No version of Poetry could be imported under the current environment for '{sys.executable}'",
sys.path,
f"No version of Poetry could be imported under the current environment for '{sys.executable}'"
) from None

View File

@ -29,6 +29,13 @@ def tox_addoption(parser: ToxParser):
dependencies should be treated as locked or not.
"""
parser.add_argument(
"--require-poetry",
action="store_true",
dest="require_poetry",
help="Trigger a failure if Poetry is not available to Tox",
)
parser.add_testenv_attribute(
name="install_dev_deps",
type="bool",
@ -65,6 +72,13 @@ def tox_testenv_install_deps(venv: ToxVirtualEnv, action: ToxAction) -> Optional
try:
poetry = utilities.check_preconditions(venv, action)
except exceptions.SkipEnvironment as err:
if (
isinstance(err, exceptions.PoetryNotInstalledError)
and venv.envconfig.config.option.require_poetry
):
venv.status = err.__class__.__name__
reporter.error(str(err))
return False
reporter.verbosity1(str(err))
return None

View File

@ -114,8 +114,6 @@ def find_transients(packages: PackageMap, dependency_name: str) -> Set[PoetryPac
def check_preconditions(venv: ToxVirtualEnv, action: ToxAction) -> "_poetry.Poetry":
"""Check that the local project environment meets expectations"""
from tox_poetry_installer import _poetry
# Skip running the plugin for the packaging environment. PEP-517 front ends can handle
# that better than we can, so let them do their thing. More to the point: if you're having
# problems in the packaging env that this plugin would solve, god help you.
@ -124,6 +122,8 @@ def check_preconditions(venv: ToxVirtualEnv, action: ToxAction) -> "_poetry.Poet
f"Skipping isolated packaging build env '{action.name}'"
)
from tox_poetry_installer import _poetry
try:
return _poetry.Factory().create_poetry(venv.envconfig.config.toxinidir)
# Support running the plugin when the current tox project does not use Poetry for its