Compare commits

..

8 Commits

Author SHA1 Message Date
Matthias Runge 795f3ebf4c update to 1.8.1 2014-12-16 20:47:51 +01:00
Matthias Runge 6683010baa fix ConfigError: substitution key 'posargs' not found 2014-08-13 22:02:21 +02:00
Matthias Runge 06bc4807a8 require at least python-virtualenv >= 1.11.2 2014-07-30 08:42:24 +02:00
Matthias Runge 35b18681fd Merge branch 'master' of ssh://pkgs.fedoraproject.org/python-tox
Conflicts:
	python-tox.spec
2014-07-08 18:14:42 +02:00
Matthias Runge 39de63570b update to 1.7.1 (rhbz#111797) 2014-07-08 17:57:57 +02:00
Dennis Gilmore ab45d3c2ff - Rebuilt for https://fedoraproject.org/wiki/Fedora_21_Mass_Rebuild 2014-06-07 18:40:54 -05:00
Matthias Runge b16e8f3214 update to 1.6.1 2013-09-24 11:35:44 +02:00
Dennis Gilmore f3cb1e6174 - Rebuilt for https://fedoraproject.org/wiki/Fedora_20_Mass_Rebuild 2013-08-04 05:14:26 -05:00
5 changed files with 179 additions and 30 deletions
+3
View File
@@ -1 +1,4 @@
/tox-1.4.2.zip
/tox-1.6.1.tar.gz
/tox-1.7.1.tar.gz
/tox-1.8.1.tar.gz
@@ -0,0 +1,93 @@
# HG changeset patch
# User Clark Boylan <clark.boylan@gmail.com>
# Date 1391830704 28800
# Node ID 62fe57a8fd3f8f44be8957e59846387d2f505227
# Parent b0360a54ab368ef428c7f83601ba6b64f6fec64f
Fix command expansion and parsing.
Tox testenv commands are parsed to expand variable substitutions and
construct the argv list that will be passed to exec. Prior to this
commit this parsing ate quotes surrounding variables and treated
multiword variables as single argv items. Neither behavior was correct.
To fix this create the expanded command before handing it off to shlex
to do the tokenization of the argv list. Doing the parsing in this
order ensures it is correct.
diff --git a/tests/test_config.py b/tests/test_config.py
--- a/tests/test_config.py
+++ b/tests/test_config.py
@@ -278,7 +278,7 @@
# "reader.getargvlist('section', 'key1')")
assert reader.getargvlist('section', 'key1') == []
x = reader.getargvlist("section", "key2")
- assert x == [["cmd1", "with space", "grr"],
+ assert x == [["cmd1", "with", "space", "grr"],
["cmd2", "grr"]]
def test_argvlist_windows_escaping(self, tmpdir, newconfig):
@@ -304,7 +304,7 @@
# "reader.getargvlist('section', 'key1')")
assert reader.getargvlist('section', 'key1') == []
x = reader.getargvlist("section", "key2")
- assert x == [["cmd1", "with space", "grr"]]
+ assert x == [["cmd1", "with", "space", "grr"]]
def test_argvlist_quoting_in_command(self, tmpdir, newconfig):
diff --git a/tox/_config.py b/tox/_config.py
--- a/tox/_config.py
+++ b/tox/_config.py
@@ -527,30 +527,35 @@
def _processcommand(self, command):
posargs = getattr(self, "posargs", None)
- # special treat posargs which might contain multiple arguments
- # in their defaults
+ # Iterate through each word of the command substituting as
+ # appropriate to construct the new command string. This
+ # string is then broken up into exec argv components using
+ # shlex.
newcommand = ""
for word in CommandParser(command).words():
- if word.startswith("{posargs:") and word.endswith("}"):
+ if word == "{posargs}" or word == "[]":
if posargs:
- word = "{posargs}"
+ newcommand += " ".join(posargs)
+ continue
+ elif word.startswith("{posargs:") and word.endswith("}"):
+ if posargs:
+ newcommand += " ".join(posargs)
+ continue
else:
word = word[9:-1]
- newcommand += word
+ new_arg = ""
+ new_word = self._replace(word)
+ new_word = self._replace(new_word)
+ new_arg += new_word
+ newcommand += new_arg
- # now we can properly parse the command
- argv = []
- for arg in shlex.split(newcommand):
- if arg in ('[]', "{posargs}"):
- if posargs:
- argv.extend(posargs)
- continue
- new_arg = ""
- for word in CommandParser(arg).words():
- new_word = self._replace(word)
- new_word = self._replace(new_word)
- new_arg += new_word
- argv.append(new_arg)
+ # Construct shlex object that will not escape any values,
+ # use all values as is in argv.
+ shlexer = shlex.shlex(newcommand, posix=True)
+ shlexer.whitespace_split = True
+ shlexer.escape = ''
+ shlexer.commenters = ''
+ argv = list(shlexer)
return argv
def getargv(self, section, name, default=None, replace=True):
+82 -14
View File
@@ -1,3 +1,8 @@
%if 0%{?fedora} > 12
# virtualenv for python3 is missing
%global with_python3 0
%endif
# Tests requiring Internet connections are disabled by default
# pass --with internet to run them (e.g. when doing a local rebuild
# for sanity checks before committing)
@@ -6,28 +11,26 @@
%global pypiname tox
Name: python-tox
Version: 1.4.2
Release: 9%{?dist}
Version: 1.8.1
Release: 1%{?dist}
Summary: Virtualenv-based automation of test activities
# file toxbootstrap.py is licensed under MIT License
License: GPLv2+ and MIT
URL: http://codespeak.net/tox
Source0: http://pypi.python.org/packages/source/t/%{pypiname}/%{pypiname}-%{version}.zip
#md5=dc52acf22eb57eaa33e704f8a54e7b34
# variation of https://github.com/tox-dev/tox/commit/ac1b57ac659f41cf157d6d847b57ba82f8987137
Patch0: tox-1.4.2-fix_epel7.diff
Source0: http://pypi.python.org/packages/source/t/%{pypiname}/%{pypiname}-%{version}.tar.gz
BuildArch: noarch
BuildRequires: python2-devel
BuildRequires: python-setuptools
Requires: python-py
Requires: python-virtualenv
Requires: python-virtualenv >= 1.11.2
# required for check
%if 0%{?fedora}
BuildRequires: python-py
BuildRequires: pytest
BuildRequires: python-virtualenv
BuildRequires: python-virtualenv >= 1.11.2
%endif
%description
@@ -41,14 +44,59 @@ can use for:
- acting as a frontend to Continuous Integration servers, greatly reducing
boilerplate and merging CI and shell-based testing.
%prep
%if 0%{?with_python3}
%package -n python3-%{pypiname}
Summary: Virtualenv-based automation of test activities
Requires: python3-py
# python3-virtualenv is rhbz#537246
Requires: python3-virtualenv
BuildRequires: python3-py
BuildRequires: python3-pytest
BuildRequires: python3-virtualenv
%description -n python3-%{pypiname}
Tox as is a generic virtualenv management and test command line tool you
can use for:
- checking your package installs correctly with different Python versions
and interpreters
- running your tests in each of the environments, configuring your test tool
of choice
- acting as a frontend to Continuous Integration servers, greatly reducing
boilerplate and merging CI and shell-based testing.
%endif
%prep
%setup -q -n %{pypiname}-%{version}
%patch0 -p1
# remove bundled egg-info
rm -rf %{pypiname}.egg-info
%if 0%{?with_python3}
rm -rf %{py3dir}
cp -a . %{py3dir}
%endif
%build
%{__python} setup.py build
%if 0%{?with_python3}
pushd %{py3dir}
%{__python3} setup.py build
popd
%endif # with_python3
%install
%if 0%{?with_python3}
pushd %{py3dir}
%{__python3} setup.py install --skip-build --root %{buildroot}
mv %{buildroot}%{_bindir}/tox %{buildroot}%{_bindir}/python3-tox
mv %{buildroot}%{_bindir}/tox-quickstart %{buildroot}%{_bindir}/python3-tox-quickstart
popd
%endif # with_python3
%{__python} setup.py install -O1 --skip-build --root %{buildroot}
# if internet connection available, run tests
@@ -63,22 +111,42 @@ can use for:
#TOXENV=py26 %{__python} setup.py test
#%endif
%if 0%{?fedora}==17 || 0%{?fedora}==18
%if 0%{?fedora}>=17
TOXENV=py27 %{__python} setup.py test
%endif
%endif
%files
%doc LICENSE README.txt ISSUES.txt doc
%doc LICENSE ISSUES.txt doc
%{_bindir}/%{pypiname}
%{_bindir}/%{pypiname}-quickstart
%{python_sitelib}/%{pypiname}
%{python_sitelib}/%{pypiname}-%{version}-py2.?.egg-info
%changelog
* Thu Apr 02 2020 Michael Scherer <misc@zarb.org> - 1.4.2-9
- fix run on newer pip on EL7
* Tue Dec 16 2014 Matthias Runge <mrunge@redhat.com> - 1.8.1-1
- update to 1.8.1
* Wed Aug 13 2014 Matthias Runge <mrunge@redhat.com> - 1.7.1-3
- Fix ConfigError: ConfigError: substitution key 'posargs' not found
(rhbz#1127961, rhbz#1128562)
* Wed Jul 30 2014 Matthias Runge <mrunge@redhat.com> - 1.7.1-2
- require virtualenv >= 1.11.2 (rhbz#1122603)
* Tue Jul 08 2014 Matthias Runge <mrunge@redhat.com> - 1.7.1-1
- update to 1.7.1 (rhbz#111797)
* Sat Jun 07 2014 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 1.6.1-2
- Rebuilt for https://fedoraproject.org/wiki/Fedora_21_Mass_Rebuild
* Tue Sep 24 2013 Matthias Runge <mrunge@redhat.com> - 1.6.1-1
- update to 1.6.1
* Sun Aug 04 2013 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 1.4.2-9
- Rebuilt for https://fedoraproject.org/wiki/Fedora_20_Mass_Rebuild
* Thu Feb 14 2013 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 1.4.2-8
- Rebuilt for https://fedoraproject.org/wiki/Fedora_19_Mass_Rebuild
+1 -1
View File
@@ -1 +1 @@
dc52acf22eb57eaa33e704f8a54e7b34 tox-1.4.2.zip
c4423cc6512932b37e5b0d1faa87bef2 tox-1.8.1.tar.gz
-15
View File
@@ -1,15 +0,0 @@
Index: tox/_venv.py
===================================================================
--- tox-1.4.2/tox/_venv.py
+++ tox-1.4.2.orig/tox/_venv.py 2020-04-02 16:05:49.006344130 +0200
@@ -224,10 +224,6 @@
def pip_install(self, args, indexserver=None, action=None):
argv = ["pip", "install"] + self._commoninstallopts(indexserver)
- if self.envconfig.downloadcache:
- self.envconfig.downloadcache.ensure(dir=1)
- argv.append("--download-cache=%s" %
- self.envconfig.downloadcache)
for x in ('PIP_RESPECT_VIRTUALENV', 'PIP_REQUIRE_VIRTUALENV'):
try:
del os.environ[x]