[Pytest-commit] commit/tox: hpk42: introduce white list for commands
commits-noreply at bitbucket.org
commits-noreply at bitbucket.org
Tue May 21 13:47:55 CEST 2013
1 new commit in tox:
https://bitbucket.org/hpk42/tox/commits/8d323c83d4d8/
Changeset: 8d323c83d4d8
User: hpk42
Date: 2013-05-21 13:47:32
Summary: introduce white list for commands
Affected #: 9 files
diff -r bb8cfbe8a1881d62c10e9e6714af171c7de7c642 -r 8d323c83d4d87511dd8fc12652b32d8cf9b5409e CHANGELOG
--- a/CHANGELOG
+++ b/CHANGELOG
@@ -1,6 +1,10 @@
1.5.0.dev
-----------------
+- re-fix issue2 - add command_whitelist to be used in ``[testenv*]``
+ sections, allowing to avoid warnings for commands such as ``make``,
+ used from the commands value.
+
- fix issue97 - allow substitutions to reference from other sections
(thanks Krisztian Fekete)
diff -r bb8cfbe8a1881d62c10e9e6714af171c7de7c642 -r 8d323c83d4d87511dd8fc12652b32d8cf9b5409e doc/config.txt
--- a/doc/config.txt
+++ b/doc/config.txt
@@ -75,6 +75,16 @@
For eventually performing a call to ``subprocess.Popen(args, ...)``
``args`` are determined by splitting the whole command by whitespace.
+.. confval:: whitelist_externals=MULTI-LINE-LIST
+
+ each line specifies a command name (in glob-style pattern format)
+ which can be used in the ``commands`` section without triggering
+ a "not installed in virtualenv" warning. Example: if you use the
+ unix ``make`` for running tests you can list ``whitelist_externals=make``
+ or ``whitelist_externals=/usr/bin/make`` if you want more precision.
+ If you don't want tox to issue a warning in any case, just use
+ ``whitelist_externals=*`` which will match all commands (not recommended).
+
.. confval:: changedir=path
change to this working directory when executing the test command.
diff -r bb8cfbe8a1881d62c10e9e6714af171c7de7c642 -r 8d323c83d4d87511dd8fc12652b32d8cf9b5409e setup.py
--- a/setup.py
+++ b/setup.py
@@ -49,7 +49,7 @@
description='virtualenv-based automation of test activities',
long_description=long_description,
url='http://tox.testrun.org/',
- version='1.5.dev8',
+ version='1.5.dev9',
license='http://opensource.org/licenses/MIT',
platforms=['unix', 'linux', 'osx', 'cygwin', 'win32'],
author='holger krekel',
diff -r bb8cfbe8a1881d62c10e9e6714af171c7de7c642 -r 8d323c83d4d87511dd8fc12652b32d8cf9b5409e tests/test_config.py
--- a/tests/test_config.py
+++ b/tests/test_config.py
@@ -368,6 +368,24 @@
envconfig = config.envconfigs['py']
assert envconfig.commands == [["abc"]]
+ def test_whitelist_externals(self, tmpdir, newconfig):
+ config = newconfig("""
+ [testenv]
+ whitelist_externals = xyz
+ commands=xyz
+ [testenv:x]
+
+ [testenv:py]
+ whitelist_externals = xyz2
+ commands=abc
+ """)
+ assert len(config.envconfigs) == 2
+ envconfig = config.envconfigs['py']
+ assert envconfig.commands == [["abc"]]
+ assert envconfig.whitelist_externals == ["xyz2"]
+ envconfig = config.envconfigs['x']
+ assert envconfig.whitelist_externals == ["xyz"]
+
def test_changedir(self, tmpdir, newconfig):
config = newconfig("""
[testenv]
diff -r bb8cfbe8a1881d62c10e9e6714af171c7de7c642 -r 8d323c83d4d87511dd8fc12652b32d8cf9b5409e tests/test_venv.py
--- a/tests/test_venv.py
+++ b/tests/test_venv.py
@@ -295,6 +295,21 @@
mocksession.report.expect("warning", "*test command found but not*")
assert venv.status == "commands failed"
+def test_install_command_whitelisted(newmocksession, monkeypatch):
+ mocksession = newmocksession(['--recreate'], """
+ [testenv]
+ whitelist_externals = py.test
+ xy*
+ commands=
+ py.test
+ xyz
+ """)
+ venv = mocksession.getenv('python')
+ venv.test()
+ mocksession.report.expect("warning", "*test command found but not*",
+ invert=True)
+ assert venv.status == "commands failed"
+
@pytest.mark.skipif("not sys.platform.startswith('linux')")
def test_install_command_not_installed(newmocksession):
mocksession = newmocksession(['--recreate'], """
diff -r bb8cfbe8a1881d62c10e9e6714af171c7de7c642 -r 8d323c83d4d87511dd8fc12652b32d8cf9b5409e tox/__init__.py
--- a/tox/__init__.py
+++ b/tox/__init__.py
@@ -1,5 +1,5 @@
#
-__version__ = '1.5.dev8'
+__version__ = '1.5.dev9'
class exception:
class Error(Exception):
diff -r bb8cfbe8a1881d62c10e9e6714af171c7de7c642 -r 8d323c83d4d87511dd8fc12652b32d8cf9b5409e tox/_config.py
--- a/tox/_config.py
+++ b/tox/_config.py
@@ -291,6 +291,8 @@
vc.setenv = None
vc.commands = reader.getargvlist(section, "commands")
+ vc.whitelist_externals = reader.getlist(section,
+ "whitelist_externals")
vc.deps = []
for depline in reader.getlist(section, "deps"):
m = re.match(r":(\w+):\s*(\S+)", depline)
diff -r bb8cfbe8a1881d62c10e9e6714af171c7de7c642 -r 8d323c83d4d87511dd8fc12652b32d8cf9b5409e tox/_venv.py
--- a/tox/_venv.py
+++ b/tox/_venv.py
@@ -81,12 +81,16 @@
if p.relto(self.envconfig.envdir):
return p
if venv:
- self.session.report.warning(
- "test command found but not installed in testenv\n"
- " cmd: %s\n"
- " env: %s\n"
- "Maybe forgot to specify a dependency?" % (p,
- self.envconfig.envdir))
+ for x in self.envconfig.whitelist_externals:
+ if p.fnmatch(x):
+ break
+ else:
+ self.session.report.warning(
+ "test command found but not installed in testenv\n"
+ " cmd: %s\n"
+ " env: %s\n"
+ "Maybe forgot to specify a dependency?" % (p,
+ self.envconfig.envdir))
return str(p) # will not be rewritten for reporting
def _ispython3(self):
diff -r bb8cfbe8a1881d62c10e9e6714af171c7de7c642 -r 8d323c83d4d87511dd8fc12652b32d8cf9b5409e toxbootstrap.py
--- a/toxbootstrap.py
+++ b/toxbootstrap.py
@@ -58,7 +58,7 @@
"""
-__version__ = '1.5.dev8'
+__version__ = '1.5.dev9'
import sys
import os
Repository URL: https://bitbucket.org/hpk42/tox/
--
This is a commit notification from bitbucket.org. You are receiving
this because you have the service enabled, addressing the recipient of
this email.
More information about the pytest-commit
mailing list