mirror of
https://github.com/saltstack/salt.git
synced 2025-04-17 10:10:20 +00:00
Move get_virtualenv_binary_path
to tests.support.helpers
This commit is contained in:
parent
dff88decfe
commit
705c015736
2 changed files with 38 additions and 43 deletions
|
@ -1739,3 +1739,38 @@ def change_cwd(path):
|
|||
finally:
|
||||
# Restore Old CWD
|
||||
os.chdir(old_cwd)
|
||||
|
||||
|
||||
@functools.lru_cache(maxsize=1)
|
||||
def get_virtualenv_binary_path():
|
||||
# Under windows we can't seem to properly create a virtualenv off of another
|
||||
# virtualenv, we can on linux but we will still point to the virtualenv binary
|
||||
# outside the virtualenv running the test suite, if that's the case.
|
||||
try:
|
||||
real_prefix = sys.real_prefix
|
||||
# The above attribute exists, this is a virtualenv
|
||||
if salt.utils.platform.is_windows():
|
||||
virtualenv_binary = os.path.join(real_prefix, "Scripts", "virtualenv.exe")
|
||||
else:
|
||||
# We need to remove the virtualenv from PATH or we'll get the virtualenv binary
|
||||
# from within the virtualenv, we don't want that
|
||||
path = os.environ.get("PATH")
|
||||
if path is not None:
|
||||
path_items = path.split(os.pathsep)
|
||||
for item in path_items[:]:
|
||||
if item.startswith(sys.base_prefix):
|
||||
path_items.remove(item)
|
||||
os.environ["PATH"] = os.pathsep.join(path_items)
|
||||
virtualenv_binary = salt.utils.path.which("virtualenv")
|
||||
if path is not None:
|
||||
# Restore previous environ PATH
|
||||
os.environ["PATH"] = path
|
||||
if not virtualenv_binary.startswith(real_prefix):
|
||||
virtualenv_binary = None
|
||||
if virtualenv_binary and not os.path.exists(virtualenv_binary):
|
||||
# It doesn't exist?!
|
||||
virtualenv_binary = None
|
||||
except AttributeError:
|
||||
# We're not running inside a virtualenv
|
||||
virtualenv_binary = None
|
||||
return virtualenv_binary
|
||||
|
|
|
@ -11,55 +11,15 @@
|
|||
import os
|
||||
import shutil
|
||||
import stat
|
||||
import sys
|
||||
|
||||
import pytest
|
||||
import salt.utils.files
|
||||
from salt.serializers import yaml
|
||||
from salt.utils.immutabletypes import freeze
|
||||
from tests.support.helpers import get_virtualenv_binary_path
|
||||
from tests.support.runtests import RUNTIME_VARS
|
||||
|
||||
|
||||
def _get_virtualenv_binary_path():
|
||||
try:
|
||||
return _get_virtualenv_binary_path.__virtualenv_binary__
|
||||
except AttributeError:
|
||||
# Under windows we can't seem to properly create a virtualenv off of another
|
||||
# virtualenv, we can on linux but we will still point to the virtualenv binary
|
||||
# outside the virtualenv running the test suite, if that's the case.
|
||||
try:
|
||||
real_prefix = sys.real_prefix
|
||||
# The above attribute exists, this is a virtualenv
|
||||
if salt.utils.platform.is_windows():
|
||||
virtualenv_binary = os.path.join(
|
||||
real_prefix, "Scripts", "virtualenv.exe"
|
||||
)
|
||||
else:
|
||||
# We need to remove the virtualenv from PATH or we'll get the virtualenv binary
|
||||
# from within the virtualenv, we don't want that
|
||||
path = os.environ.get("PATH")
|
||||
if path is not None:
|
||||
path_items = path.split(os.pathsep)
|
||||
for item in path_items[:]:
|
||||
if item.startswith(sys.base_prefix):
|
||||
path_items.remove(item)
|
||||
os.environ["PATH"] = os.pathsep.join(path_items)
|
||||
virtualenv_binary = salt.utils.path.which("virtualenv")
|
||||
if path is not None:
|
||||
# Restore previous environ PATH
|
||||
os.environ["PATH"] = path
|
||||
if not virtualenv_binary.startswith(real_prefix):
|
||||
virtualenv_binary = None
|
||||
if virtualenv_binary and not os.path.exists(virtualenv_binary):
|
||||
# It doesn't exist?!
|
||||
virtualenv_binary = None
|
||||
except AttributeError:
|
||||
# We're not running inside a virtualenv
|
||||
virtualenv_binary = None
|
||||
_get_virtualenv_binary_path.__virtualenv_binary__ = virtualenv_binary
|
||||
return virtualenv_binary
|
||||
|
||||
|
||||
@pytest.fixture(scope="session")
|
||||
def integration_files_dir(salt_factories):
|
||||
"""
|
||||
|
@ -366,7 +326,7 @@ def salt_minion_config(request, salt_factories, salt_master_config):
|
|||
"prod": [RUNTIME_VARS.TMP_PRODENV_PILLAR_TREE],
|
||||
},
|
||||
}
|
||||
virtualenv_binary = _get_virtualenv_binary_path()
|
||||
virtualenv_binary = get_virtualenv_binary_path()
|
||||
if virtualenv_binary:
|
||||
config_overrides["venv_bin"] = virtualenv_binary
|
||||
return salt_factories.configure_minion(
|
||||
|
@ -408,7 +368,7 @@ def salt_sub_minion_config(request, salt_factories, salt_master_config):
|
|||
"prod": [RUNTIME_VARS.TMP_PRODENV_PILLAR_TREE],
|
||||
},
|
||||
}
|
||||
virtualenv_binary = _get_virtualenv_binary_path()
|
||||
virtualenv_binary = get_virtualenv_binary_path()
|
||||
if virtualenv_binary:
|
||||
config_overrides["venv_bin"] = virtualenv_binary
|
||||
return salt_factories.configure_minion(
|
||||
|
|
Loading…
Add table
Reference in a new issue