Secure your code as it's written. Use Snyk Code to scan source code in minutes - no build needed - and fix issues immediately.
def test__log_success(self):
result = nox.sessions.Result(object(), nox.sessions.Status.SUCCESS)
with mock.patch.object(logger, "success") as success:
result.log("foo")
success.assert_called_once_with("foo")
def log(self, message):
"""Log a message using the appropriate log function.
Args:
message (str): The message to be logged.
"""
log_function = logger.info
if self.status == Status.SUCCESS:
log_function = logger.success
if self.status == Status.SKIPPED:
log_function = logger.warning
if self.status.value <= 0:
log_function = logger.error
log_function(message)
"conda",
"create",
"--yes",
"--prefix",
self.location,
# Ensure the pip package is installed.
"pip",
]
if self.interpreter:
python_dep = "python={}".format(self.interpreter)
else:
python_dep = "python"
cmd.append(python_dep)
logger.info(
"Creating conda env in {} with {}".format(self.location_name, python_dep)
)
nox.command.run(cmd, silent=True, log=False)
return True
def log(self, *args, **kwargs):
logger.info(*args, **kwargs)
if self.global_config.error_on_missing_interpreters:
return Result(self, Status.FAILED, reason=str(exc))
else:
return Result(self, Status.SKIPPED, reason=str(exc))
except _SessionQuit as exc:
return Result(self, Status.ABORTED, reason=str(exc))
except _SessionSkip as exc:
return Result(self, Status.SKIPPED, reason=str(exc))
except nox.command.CommandFailed:
return Result(self, Status.FAILED)
except KeyboardInterrupt:
logger.error("Session {} interrupted.".format(self.friendly_name))
raise
except Exception as exc:
logger.exception(
"Session {} raised exception {!r}".format(self.friendly_name, exc)
)
return Result(self, Status.FAILED)
"""Normalizes a string to be a "safe" filesystem path for a virtualenv."""
if isinstance(path, six.binary_type):
path = path.decode('utf-8')
path = unicodedata.normalize('NFKD', path).encode('ascii', 'ignore')
path = path.decode('ascii')
path = re.sub('[^\w\s-]', '-', path).strip().lower()
path = re.sub('[-\s]+', '-', path)
path = path.strip('-')
full_path = os.path.join(envdir, path)
if len(full_path) > 100 - len('bin/pythonX.Y'):
if len(envdir) < 100 - 9:
path = hashlib.sha1(path.encode('ascii')).hexdigest()[:8]
full_path = os.path.join(envdir, path)
logger.warning(
'The virtualenv name was hashed to avoid being too long.')
else:
logger.error(
'The virtualenv path {} is too long and will cause issues on '
'some environments. Use the --envdir path to modify where '
'nox stores virtualenvs.'.format(full_path))
return full_path
if log:
logger.info(full_cmd)
is_external_tool = path is not None and not cmd_path.startswith(path)
if is_external_tool:
if external == "error":
logger.error(
"Error: {} is not installed into the virtualenv, it is located at {}. "
"Pass external=True into run() to explicitly allow this.".format(
cmd, cmd_path
)
)
raise CommandFailed("External program disallowed.")
elif external is False:
logger.warning(
"Warning: {} is not installed into the virtualenv, it is located at {}. This might cause issues! "
"Pass external=True into run() to silence this message.".format(
cmd, cmd_path
)
)
env = _clean_env(env)
try:
return_code, output = popen(
[cmd_path] + list(args), silent=silent, env=env, **popen_kws
)
if return_code not in success_codes:
logger.error(
"Command {} failed with exit code {}{}".format(
def execute(self):
session_friendly_name = self.signature or self.name
logger.warning('Running session {}'.format(session_friendly_name))
try:
if not self._create_config():
logger.error('Session {} aborted.'.format(
session_friendly_name))
return False
self._create_venv()
cwd = py.path.local(os.getcwd()).as_cwd()
with cwd:
self._run_commands()
logger.success('Session {} successful. :)'.format(
session_friendly_name))
return True
def create(self):
"""Create the virtualenv or venv."""
if not self._clean_location():
logger.debug(
"Re-using existing virtual environment at {}.".format(
self.location_name
)
)
return False
if self.venv_or_virtualenv == "virtualenv":
cmd = [sys.executable, "-m", "virtualenv", self.location]
if self.interpreter:
cmd.extend(["-p", self._resolved_interpreter])
else:
cmd = [self._resolved_interpreter, "-m", "venv", self.location]
logger.info(
"Creating virtual environment ({}) using {} in {}".format(
self.venv_or_virtualenv,