Compare commits

..

10 Commits

Author SHA1 Message Date
Fedora Release Engineering efaaaa73ec - Rebuilt for https://fedoraproject.org/wiki/Fedora_27_Mass_Rebuild 2017-07-27 12:04:20 +00:00
Matthias Runge 32f19627ca update to 2.7.0 2017-04-25 14:25:41 +02:00
Miro Hrončok f0d7c36890 Recommend the devel subpackages of Pythons (so tox works with extension modules) 2017-04-09 18:42:40 +02:00
Miro Hrončok bfb11cae80 Recommend python36 2017-02-15 00:43:31 +01:00
Fedora Release Engineering 38dc612112 - Rebuilt for https://fedoraproject.org/wiki/Fedora_26_Mass_Rebuild 2017-02-11 10:43:23 +00:00
Miro Hrončok 53edfdda47 Rebuild for Python 3.6 2016-12-19 18:20:38 +01:00
Miro Hrončok 454e6cdbf8 Recommend "all the Pythons" 2016-10-10 19:55:58 +02:00
Miro Hrončok 1fd92e9476 Modernize, move executable to Python 3 (#1366193) 2016-08-11 13:43:00 +02:00
Miro Hrončok 1c269861a6 Remove unused patch 2016-08-11 13:42:10 +02:00
Fedora Release Engineering 328c6708c1 - https://fedoraproject.org/wiki/Changes/Automatic_Provides_for_Python_RPM_Packages 2016-07-19 11:52:57 +00:00
4 changed files with 110 additions and 173 deletions
+1
View File
@@ -4,3 +4,4 @@
/tox-1.8.1.tar.gz /tox-1.8.1.tar.gz
/tox-2.1.1.tar.gz /tox-2.1.1.tar.gz
/tox-2.3.1.tar.gz /tox-2.3.1.tar.gz
/tox-2.7.0.tar.gz
@@ -1,93 +0,0 @@
# 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):
+108 -79
View File
@@ -1,8 +1,3 @@
%if 0%{?fedora} > 12
# virtualenv for python3 is missing
%global with_python3 1
%endif
# Tests requiring Internet connections are disabled by default # Tests requiring Internet connections are disabled by default
# pass --with internet to run them (e.g. when doing a local rebuild # pass --with internet to run them (e.g. when doing a local rebuild
# for sanity checks before committing) # for sanity checks before committing)
@@ -10,63 +5,97 @@
%global pypiname tox %global pypiname tox
Name: python-tox Name: python-%{pypiname}
Version: 2.3.1 Version: 2.7.0
Release: 1%{?dist} Release: 2%{?dist}
Summary: Virtualenv-based automation of test activities Summary: Virtualenv-based automation of test activities
# file toxbootstrap.py is licensed under MIT License # file toxbootstrap.py is licensed under MIT License
License: GPLv2+ and MIT License: GPLv2+ and MIT
URL: http://codespeak.net/tox URL: http://tox.testrun.org/
Source0: http://pypi.python.org/packages/source/t/%{pypiname}/%{pypiname}-%{version}.tar.gz Source0: https://files.pythonhosted.org/packages/source/t/%{pypiname}/%{pypiname}-%{version}.tar.gz
BuildArch: noarch BuildArch: noarch
BuildRequires: python2-devel
BuildRequires: python-setuptools
Requires: python-py
Requires: python-virtualenv >= 1.11.2
Requires: python-pluggy
# required for check
%if 0%{?fedora}
BuildRequires: python-py
BuildRequires: pytest
BuildRequires: python-virtualenv >= 1.11.2
%endif
%description %description
Tox as is a generic virtualenv management and test command line tool you Tox as is a generic virtualenv management and test command line tool you
can use for: can use for:
- checking your package installs correctly with different Python versions - checking your package installs correctly with different Python versions
and interpreters and interpreters
- running your tests in each of the environments, configuring your test tool - running your tests in each of the environments, configuring your test tool
of choice of choice
- acting as a frontend to Continuous Integration servers, greatly reducing - acting as a frontend to Continuous Integration servers, greatly reducing
boilerplate and merging CI and shell-based testing. boilerplate and merging CI and shell-based testing.
%if 0%{?with_python3} %package -n python2-%{pypiname}
Summary: %{summary}
%{?python_provide:%python_provide python2-%{pypiname}}
BuildRequires: python2-devel
BuildRequires: python2-setuptools
Requires: python2-py
Requires: python2-virtualenv >= 1.11.2
Requires: python-pluggy
%if %{with internet}
# for tests
BuildRequires: python2-py
BuildRequires: python2-pytest
BuildRequires: python2-virtualenv >= 1.11.2
%endif
%description -n python2-%{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.
This package contains just the module you can import from Python 2,
for the actual command line utility, dnf install tox.
%package -n python3-%{pypiname} %package -n python3-%{pypiname}
Summary: Virtualenv-based automation of test activities Summary: %{summary}
%{?python_provide:%python_provide python3-%{pypiname}}
Provides: %{pypiname} = %{version}-%{release}
BuildRequires: python3-devel
BuildRequires: python3-setuptools
Requires: python3-py Requires: python3-py
Requires: python3-pluggy Requires: python3-pluggy
# python3-virtualenv is rhbz#537246
Requires: python3-virtualenv Requires: python3-virtualenv
# Recommend "all the Pythons"
Recommends: python26
Recommends: python27
Recommends: python33
Recommends: python34
Recommends: python35
Recommends: python36
Recommends: pypy-devel
Recommends: pypy3-devel
Recommends: python2-devel
Recommends: python3-devel
%if %{with internet}
# for tests
BuildRequires: python3-py BuildRequires: python3-py
BuildRequires: python3-pytest BuildRequires: python3-pytest
BuildRequires: python3-virtualenv BuildRequires: python3-virtualenv
%endif
%description -n python3-%{pypiname} %description -n python3-%{pypiname}
Tox as is a generic virtualenv management and test command line tool you Tox as is a generic virtualenv management and test command line tool you
can use for: can use for:
- checking your package installs correctly with different Python versions - checking your package installs correctly with different Python versions
and interpreters and interpreters
- running your tests in each of the environments, configuring your test tool - running your tests in each of the environments, configuring your test tool
of choice of choice
- acting as a frontend to Continuous Integration servers, greatly reducing - acting as a frontend to Continuous Integration servers, greatly reducing
boilerplate and merging CI and shell-based testing. boilerplate and merging CI and shell-based testing.
%endif
%prep %prep
%setup -q -n %{pypiname}-%{version} %setup -q -n %{pypiname}-%{version}
@@ -74,68 +103,68 @@ can use for:
# remove bundled egg-info # remove bundled egg-info
rm -rf %{pypiname}.egg-info rm -rf %{pypiname}.egg-info
%if 0%{?with_python3}
rm -rf %{py3dir}
cp -a . %{py3dir}
%endif
%build %build
%{__python} setup.py build %py2_build
%py3_build
%if 0%{?with_python3}
pushd %{py3dir}
%{__python3} setup.py build
popd
%endif # with_python3
%install %install
%if 0%{?with_python3} %py2_install
pushd %{py3dir} rm %{buildroot}%{_bindir}/%{pypiname}*
%{__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} %py3_install
# if internet connection available, run tests # if internet connection available, run tests
%if %{with internet} %if %{with internet}
%check %check
# python 2.7: fedora 17, fedora 18 TOXENV=py27 %{__python2} setup.py test
# python 3.2: fedora 17 TOXENV=py%{python3_version_nodots} %{__python3} setup.py test
# python 3.3: fedora 18
# el6: buildrequirements missing
#%if 0%{?rhel}==6
#TOXENV=py26 %{__python} setup.py test
#%endif
%if 0%{?fedora}>=17
TOXENV=py27 %{__python} setup.py test
%endif %endif
%endif %files -n python2-%{pypiname}
%files
%doc ISSUES.txt doc
%license LICENSE %license LICENSE
%{python2_sitelib}/%{pypiname}
%{python2_sitelib}/%{pypiname}-%{version}-py2.?.egg-info
%files -n python3-%{pypiname}
%{_bindir}/%{pypiname} %{_bindir}/%{pypiname}
%{_bindir}/%{pypiname}-quickstart %{_bindir}/%{pypiname}-quickstart
%{python_sitelib}/%{pypiname}
%{python_sitelib}/%{pypiname}-%{version}-py2.?.egg-info
%if 0%{?with_python3}
%files -n python3-tox
%{_bindir}/python3-%{pypiname}
%{_bindir}/python3-%{pypiname}-quickstart
%{python3_sitelib}/%{pypiname} %{python3_sitelib}/%{pypiname}
%{python3_sitelib}/%{pypiname}-%{version}-py%{python3_version}.egg-info %{python3_sitelib}/%{pypiname}-%{version}-py%{python3_version}.egg-info
%endif
%changelog %changelog
* Thu Jul 27 2017 Fedora Release Engineering <releng@fedoraproject.org> - 2.7.0-2
- Rebuilt for https://fedoraproject.org/wiki/Fedora_27_Mass_Rebuild
* Tue Apr 25 2017 Matthias Runge <mrunge@redhat.com> - 2.7.0-1
- upgrade to 2.7.0
* Sun Apr 09 2017 Miro Hrončok <mhroncok@redhat.com> - 2.3.1-8
- Recommend the devel subpackages of Pythons (so tox works with extension modules)
* Tue Feb 14 2017 Miro Hrončok <mhroncok@redhat.com> - 2.3.1-7
- Recommend python36
* Sat Feb 11 2017 Fedora Release Engineering <releng@fedoraproject.org> - 2.3.1-6
- Rebuilt for https://fedoraproject.org/wiki/Fedora_26_Mass_Rebuild
* Mon Dec 19 2016 Miro Hrončok <mhroncok@redhat.com> - 2.3.1-5
- Rebuild for Python 3.6
* Mon Oct 10 2016 Miro Hrončok <mhroncok@redhat.com> - 2.3.1-4
- Recommend "all the Pythons"
* Thu Aug 11 2016 Miro Hrončok <mhroncok@redhat.com> - 2.3.1-3
- /usr/bin/tox is Python3
- Python 2 subpackage is python2-tox
- Run the tests also on Python 3
- Update Source URL and URL
- Use modern macros
- Get rid of Fedora 17 checks
* Tue Jul 19 2016 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 2.3.1-2
- https://fedoraproject.org/wiki/Changes/Automatic_Provides_for_Python_RPM_Packages
* Mon Feb 29 2016 Matthias Runge <mrunge@redhat.com> - 2.3.1-1 * Mon Feb 29 2016 Matthias Runge <mrunge@redhat.com> - 2.3.1-1
- update to 2.3.1 - update to 2.3.1
+1 -1
View File
@@ -1 +1 @@
9371b3d3e25c03751a0372e19602dfb9 tox-2.3.1.tar.gz SHA512 (tox-2.7.0.tar.gz) = 96088a9f77e8b994d920a8c9907a0fa50d5e0fe918e5a67673d4c30810642be2872283810d1d8b5ae9cc311605236b64343248485c4d4067b54c7b6d9f31a4b4