Compare commits

..

2 Commits

Author SHA1 Message Date
Matthias Runge acd6a5049f Merge branch 'f21' into f20 2014-08-13 22:04:46 +02:00
Matthias Runge 0492cc2907 fix build on f20 2014-07-31 08:48:03 +02:00
6 changed files with 187 additions and 600 deletions
-16
View File
@@ -1,19 +1,3 @@
/tox-1.4.2.zip /tox-1.4.2.zip
/tox-1.6.1.tar.gz /tox-1.6.1.tar.gz
/tox-1.7.1.tar.gz /tox-1.7.1.tar.gz
/tox-1.8.1.tar.gz
/tox-2.1.1.tar.gz
/tox-2.3.1.tar.gz
/tox-2.7.0.tar.gz
/tox-2.9.1.tar.gz
/tox-3.0.0.tar.gz
/tox-3.4.0.tar.gz
/tox-3.5.3.tar.gz
/tox-3.9.0.tar.gz
/tox-3.13.1.tar.gz
/tox-3.13.2.tar.gz
/tox-3.14.3.tar.gz
/tox-3.14.6.tar.gz
/tox-3.15.0.tar.gz
/tox-3.15.1.tar.gz
/tox-3.15.2.tar.gz
-235
View File
@@ -1,235 +0,0 @@
diff --git a/src/tox/config/__init__.py b/src/tox/config/__init__.py
index c21222c..93805ba 100644
--- a/src/tox/config/__init__.py
+++ b/src/tox/config/__init__.py
@@ -2,6 +2,7 @@ from __future__ import print_function
import argparse
import itertools
+import json
import os
import random
import re
@@ -538,6 +539,16 @@ def tox_addoption(parser):
action="store_true",
help="override alwayscopy setting to True in all envs",
)
+ parser.add_argument(
+ "--no-provision",
+ action="store",
+ nargs="?",
+ default=False,
+ const=True,
+ metavar="REQUIRES_JSON",
+ help="do not perform provision, but fail and if a path was provided "
+ "write provision metadata as JSON to it",
+ )
cli_skip_missing_interpreter(parser)
parser.add_argument("--workdir", metavar="PATH", help="tox working directory")
@@ -1234,11 +1245,11 @@ class ParseIni(object):
feedback("--devenv requires only a single -e", sysexit=True)
def handle_provision(self, config, reader):
- requires_list = reader.getlist("requires")
+ config.requires = reader.getlist("requires")
config.minversion = reader.getstring("minversion", None)
config.provision_tox_env = name = reader.getstring("provision_tox_env", ".tox")
min_version = "tox >= {}".format(config.minversion or tox.__version__)
- deps = self.ensure_requires_satisfied(config, requires_list, min_version)
+ deps = self.ensure_requires_satisfied(config, config.requires, min_version)
if config.run_provision:
section_name = "testenv:{}".format(name)
if section_name not in self._cfg.sections:
@@ -1254,8 +1265,8 @@ class ParseIni(object):
# raise on unknown args
self.config._parser.parse_cli(args=self.config.args, strict=True)
- @staticmethod
- def ensure_requires_satisfied(config, requires, min_version):
+ @classmethod
+ def ensure_requires_satisfied(cls, config, requires, min_version):
missing_requirements = []
failed_to_parse = False
deps = []
@@ -1282,12 +1293,33 @@ class ParseIni(object):
missing_requirements.append(str(requirements.Requirement(require)))
if failed_to_parse:
raise tox.exception.BadRequirement()
+ if config.option.no_provision and missing_requirements:
+ msg = "provisioning explicitly disabled within {}, but missing {}"
+ if config.option.no_provision is not True: # it's a path
+ msg += " and wrote to {}"
+ cls.write_requires_to_json_file(config)
+ raise tox.exception.Error(
+ msg.format(sys.executable, missing_requirements, config.option.no_provision)
+ )
if WITHIN_PROVISION and missing_requirements:
msg = "break infinite loop provisioning within {} missing {}"
raise tox.exception.Error(msg.format(sys.executable, missing_requirements))
config.run_provision = bool(len(missing_requirements))
return deps
+ @staticmethod
+ def write_requires_to_json_file(config):
+ requires_dict = {
+ "minversion": config.minversion,
+ "requires": config.requires,
+ }
+ try:
+ with open(config.option.no_provision, "w", encoding="utf-8") as outfile:
+ json.dump(requires_dict, outfile, indent=4)
+ except TypeError: # Python 2
+ with open(config.option.no_provision, "w") as outfile:
+ json.dump(requires_dict, outfile, indent=4, encoding="utf-8")
+
def parse_build_isolation(self, config, reader):
config.isolated_build = reader.getbool("isolated_build", False)
config.isolated_build_env = reader.getstring("isolated_build_env", ".package")
diff --git a/tests/unit/session/test_provision.py b/tests/unit/session/test_provision.py
index aa631c0..710df60 100644
--- a/tests/unit/session/test_provision.py
+++ b/tests/unit/session/test_provision.py
@@ -1,5 +1,6 @@
from __future__ import absolute_import, unicode_literals
+import json
import os
import shutil
import subprocess
@@ -42,6 +43,35 @@ def test_provision_min_version_is_requires(newconfig, next_tox_major):
assert config.ignore_basepython_conflict is False
+def test_provision_config_has_minversion_and_requires(newconfig, next_tox_major):
+ with pytest.raises(MissingRequirement) as context:
+ newconfig(
+ [],
+ """\
+ [tox]
+ minversion = {}
+ requires =
+ setuptools > 2
+ pip > 3
+ """.format(
+ next_tox_major,
+ ),
+ )
+ config = context.value.config
+
+ assert config.run_provision is True
+ assert config.minversion == next_tox_major
+ assert config.requires == ["setuptools > 2", "pip > 3"]
+
+
+def test_provision_config_empty_minversion_and_requires(newconfig, next_tox_major):
+ config = newconfig([], "")
+
+ assert config.run_provision is False
+ assert config.minversion is None
+ assert config.requires == []
+
+
def test_provision_tox_change_name(newconfig):
config = newconfig(
[],
@@ -149,6 +179,99 @@ def test_provision_cli_args_not_ignored_if_provision_false(cmd, initproj):
result.assert_fail(is_run_test_env=False)
+parametrize_json_path = pytest.mark.parametrize("json_path", [None, "missing.json"])
+
+
+@parametrize_json_path
+def test_provision_does_not_fail_with_no_provision_no_reason(cmd, initproj, json_path):
+ p = initproj("test-0.1", {"tox.ini": "[tox]"})
+ result = cmd("--no-provision", *([json_path] if json_path else []))
+ result.assert_success(is_run_test_env=True)
+ assert not (p / "missing.json").exists()
+
+
+@parametrize_json_path
+def test_provision_fails_with_no_provision_next_tox(cmd, initproj, next_tox_major, json_path):
+ p = initproj(
+ "test-0.1",
+ {
+ "tox.ini": """\
+ [tox]
+ minversion = {}
+ """.format(
+ next_tox_major,
+ )
+ },
+ )
+ result = cmd("--no-provision", *([json_path] if json_path else []))
+ result.assert_fail(is_run_test_env=False)
+ if json_path:
+ missing = json.loads((p / json_path).read_text("utf-8"))
+ assert missing["minversion"] == next_tox_major
+
+
+@parametrize_json_path
+def test_provision_fails_with_no_provision_missing_requires(cmd, initproj, json_path):
+ p = initproj(
+ "test-0.1",
+ {
+ "tox.ini": """\
+ [tox]
+ requires =
+ virtualenv > 99999999
+ """
+ },
+ )
+ result = cmd("--no-provision", *([json_path] if json_path else []))
+ result.assert_fail(is_run_test_env=False)
+ if json_path:
+ missing = json.loads((p / json_path).read_text("utf-8"))
+ assert missing["requires"] == ["virtualenv > 99999999"]
+
+
+@parametrize_json_path
+def test_provision_does_not_fail_with_satisfied_requires(cmd, initproj, next_tox_major, json_path):
+ p = initproj(
+ "test-0.1",
+ {
+ "tox.ini": """\
+ [tox]
+ minversion = 0
+ requires =
+ setuptools > 2
+ pip > 3
+ """
+ },
+ )
+ result = cmd("--no-provision", *([json_path] if json_path else []))
+ result.assert_success(is_run_test_env=True)
+ assert not (p / "missing.json").exists()
+
+
+@parametrize_json_path
+def test_provision_fails_with_no_provision_combined(cmd, initproj, next_tox_major, json_path):
+ p = initproj(
+ "test-0.1",
+ {
+ "tox.ini": """\
+ [tox]
+ minversion = {}
+ requires =
+ setuptools > 2
+ pip > 3
+ """.format(
+ next_tox_major,
+ )
+ },
+ )
+ result = cmd("--no-provision", *([json_path] if json_path else []))
+ result.assert_fail(is_run_test_env=False)
+ if json_path:
+ missing = json.loads((p / json_path).read_text("utf-8"))
+ assert missing["minversion"] == next_tox_major
+ assert missing["requires"] == ["setuptools > 2", "pip > 3"]
+
+
@pytest.fixture(scope="session")
def wheel(tmp_path_factory):
"""create a wheel for a project"""
@@ -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):
+93 -272
View File
@@ -1,308 +1,129 @@
%if 0%{?fedora} > 12
# virtualenv for python3 is missing
%global with_python3 0
%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). Example: # for sanity checks before committing)
# $ mock --enable-network --with internet <SRPM>
%bcond_with internet %bcond_with internet
%global pypi_name tox %global pypiname tox
Name: python-%{pypi_name} Name: python-tox
Version: 3.15.2 Version: 1.7.1
Release: 2%{?dist} Release: 3%{?dist}
Summary: Virtualenv-based automation of test activities Summary: Virtualenv-based automation of test activities
License: MIT # file toxbootstrap.py is licensed under MIT License
URL: https://tox.readthedocs.io/ License: GPLv2+ and MIT
Source0: %{pypi_source} URL: http://codespeak.net/tox
Source0: http://pypi.python.org/packages/source/t/%{pypiname}/%{pypiname}-%{version}.tar.gz
# Expose tox requires via the config object Patch0: python-tox-Fix-command-expansion-and-parsing.patch
# https://github.com/tox-dev/tox/pull/1919
# Add --no-provision flag
# https://github.com/tox-dev/tox/pull/1922
Patch1: provision-backports.patch
BuildArch: noarch BuildArch: noarch
BuildRequires: python2-devel
%description BuildRequires: python-setuptools
Tox as is a generic virtualenv management and test command line tool you Requires: python-py
can use for: Requires: python-virtualenv >= 1.11.2
# required for check
- checking your package installs correctly with different Python versions %if 0%{?fedora}
and interpreters BuildRequires: python-py
- running your tests in each of the environments, configuring your test tool BuildRequires: pytest
of choice BuildRequires: python-virtualenv
- acting as a frontend to Continuous Integration servers, greatly reducing
boilerplate and merging CI and shell-based testing.
%package -n python3-%{pypi_name}
Summary: %{summary}
%{?python_provide:%python_provide python3-%{pypi_name}}
Provides: %{pypi_name} = %{version}-%{release}
BuildRequires: python3-devel
BuildRequires: python3-setuptools
BuildRequires: python3-setuptools_scm
# Recommend "all the Pythons"
# Why? Tox exists to enable developers to test libraries against various Python
# versions, with just "dnf install tox" and a config file.
# See: https://developer.fedoraproject.org/tech/languages/python/python-installation.html#using-virtualenv
# Tox itself runs on the system python3 (i.e. %%{python3_version},
# however it launches other Python versions as subprocesses.
# It recommends all Python versions it supports. (This is an exception to
# the rule that Fedora packages may not require the alternative interpreters.)
Recommends: python2.7
Recommends: python3.5
Recommends: python3.6
Recommends: python3.7
Recommends: python3.8
Recommends: python3.9
Recommends: pypy2-devel
Recommends: pypy3-devel
Recommends: python2-devel
Recommends: python3-devel
# Replace the python2 version
Obsoletes: python2-tox < 2.9.1-4
# Replace detox (no longer supported, functionality is now in tox)
Obsoletes: python3-detox < 0.19-5
%if %{with internet}
# for tests
BuildRequires: python3-filelock
BuildRequires: python3-flaky
BuildRequires: python3-freezegun
BuildRequires: python3-packaging
BuildRequires: python3-pip
BuildRequires: python3-pluggy >= 0.12
BuildRequires: python3-poetry
BuildRequires: python3-psutil
BuildRequires: python3-py
BuildRequires: python3-pytest
BuildRequires: python3-pytest-mock
#BuildRequires: python3-pytest-randomly -- not packaged
BuildRequires: python3-pytest-xdist
BuildRequires: python3-toml
BuildRequires: python3-virtualenv
BuildRequires: python3-wheel
BuildRequires: (python3-importlib-metadata if python3 < 3.8)
BuildRequires: /usr/bin/gcc
BuildRequires: /usr/bin/git
BuildRequires: /usr/bin/poetry
BuildRequires: libffi-devel
%endif %endif
%?python_enable_dependency_generator %description
Tox as is a generic virtualenv management and test command line tool you
%description -n python3-%{pypi_name}
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.
%prep %if 0%{?with_python3}
%autosetup -p1 -n %{pypi_name}-%{version} %package -n python3-%{pypiname}
Summary: Virtualenv-based automation of test activities
Requires: python3-py
Requires: python3-virtualenv
BuildRequires: python3-py
BuildRequires: python3-pytest
BuildRequires: python3-virtualenv
# Pathlib2 was retired in Fedora, instead of unretiring it, %description -n python3-%{pypiname}
# it's enough to use pathlib instead. Tox as is a generic virtualenv management and test command line tool you
find . -type f -name "*.py" -print0 | xargs -0 sed -i "s/pathlib2/pathlib/g" 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
%if 0%{?with_python3}
rm -rf %{py3dir}
cp -a . %{py3dir}
%endif
# remove bundled egg-info
rm -rf %{pypi_name}.egg-info
%build %build
%py3_build %{__python} setup.py build
%if 0%{?with_python3}
pushd %{py3dir}
%{__python3} setup.py build
popd
%endif # with_python3
%install %install
%py3_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 # if internet connection available, run tests
%if %{with internet} %if %{with internet}
%check %check
# there will be failures like # python 2.7: fedora 17, fedora 18
# ModuleNotFoundError: tox # python 3.2: fedora 17
# or InterpreterNotFound: python # python 3.3: fedora 18
# We juggle the environment variables as much as we can, but it's not perfect.
# To workaround this: # el6: buildrequirements missing
# 1. build --without internet #%if 0%{?rhel}==6
# 2. install the new python3-tox #TOXENV=py26 %{__python} setup.py test
# 3. build --with internet #%endif
mkdir .path
ln -s %{__python3} .path/python %if 0%{?fedora}>=17
ln -s /usr/bin/easy_install-%{python3_version} .path/easy_install TOXENV=py27 %{__python} setup.py test
ln -s /usr/bin/pytest-%{python3_version} .path/pytest
ln -s /usr/bin/pip3 .path/pip
export PATH=$(pwd)/.path:%{buildroot}%{_bindir}:$PATH
export PYTHONPATH=%{buildroot}%{python3_sitelib}
export TOXENV=py%{python3_version_nodots}
export TOX_TESTENV_PASSENV="PATH TOX_TESTENV_PASSENV"
# TODO figure out why PEP517/518 tests and test_provision_cli_args_ignore won't pass
pytest-3 -n auto -k "not test_verbose_isolated_build and not test_dist_exists_version_change and not test_provision_cli_args_ignore"
rm -rf .path
%endif %endif
%files -n python3-%{pypi_name} %endif
%{_bindir}/%{pypi_name}
%{_bindir}/%{pypi_name}-quickstart %files
%{python3_sitelib}/%{pypi_name}/ %doc LICENSE ISSUES.txt doc
%{python3_sitelib}/%{pypi_name}-%{version}-py%{python3_version}.egg-info/ %{_bindir}/%{pypiname}
%{_bindir}/%{pypiname}-quickstart
%{python_sitelib}/%{pypiname}
%{python_sitelib}/%{pypiname}-%{version}-py2.?.egg-info
%changelog %changelog
* Thu Mar 18 2021 Miro Hrončok <mhroncok@redhat.com> - 3.15.2-2
- Expose tox requires via the config object
- Add --no-provision flag
* Mon Jun 08 2020 Miro Hrončok <mhroncok@redhat.com> - 3.15.2-1
- Update to 3.15.2 (#1844689)
* Mon Jun 01 2020 Charalampos Stratakis <cstratak@redhat.com> - 3.15.1-1
- Update to 3.15.1 (#1838137)
* Sat May 23 2020 Miro Hrončok <mhroncok@redhat.com> - 3.15.0-2
- Rebuilt for Python 3.9
* Wed May 13 2020 Tomas Hrnciar <thrnciar@redhat.com> - 3.15.0-1
- Update to 3.15.0
- Stop recommending Python 3.4
* Thu Mar 19 2020 Tomas Hrnciar <thrnciar@redhat.com> - 3.14.6-1
- Update to 3.14.6
* Thu Feb 06 2020 Miro Hrončok <mhroncok@redhat.com> - 3.14.3-1
- Update to 3.14.3 (#1725939)
- Fix invocation with Python 3.9 (#1798929)
- Recommend Python 3.9
* Thu Jan 30 2020 Fedora Release Engineering <releng@fedoraproject.org> - 3.13.2-5
- Rebuilt for https://fedoraproject.org/wiki/Fedora_32_Mass_Rebuild
* Thu Oct 03 2019 Miro Hrončok <mhroncok@redhat.com> - 3.13.2-4
- Rebuilt for Python 3.8.0rc1 (#1748018)
* Fri Aug 16 2019 Miro Hrončok <mhroncok@redhat.com> - 3.13.2-3
- Rebuilt for Python 3.8
* Fri Jul 26 2019 Fedora Release Engineering <releng@fedoraproject.org> - 3.13.2-2
- Rebuilt for https://fedoraproject.org/wiki/Fedora_31_Mass_Rebuild
* Mon Jul 08 2019 Miro Hrončok <mhroncok@redhat.com> - 3.13.2-1
- Update to 3.13.2 (#1699032)
* Tue Apr 30 2019 Miro Hrončok <mhroncok@redhat.com> - 3.9.0-1
- Update to 3.9.0
- Obsolete detox
- License is MIT
* Fri Feb 15 2019 Lumír Balhar <lbalhar@redhat.com> - 3.5.3-3
- Recommend Python 3.8
* Sat Feb 02 2019 Fedora Release Engineering <releng@fedoraproject.org> - 3.5.3-2
- Rebuilt for https://fedoraproject.org/wiki/Fedora_30_Mass_Rebuild
* Thu Nov 22 2018 Artem Goncharov <artem.goncharov@gmail.com> - 3.5.3-1
- Upgrade to 3.5.3 version
* Mon Nov 19 2018 Artem Goncharov <artem.goncharov@gmail.com> - 3.4.0-1
- Upgrade to 3.4.0 version (#1652657)
* Thu Nov 01 2018 Matthias Runge <mrunge@redhat.com> - 3.0.0-6
- remove and revert the change to recommend python 2.7 (rhbz#1645025)
* Tue Aug 28 2018 Miro Hrončok <mhroncok@redhat.com> - 3.0.0-4
- Don't recommend Python 2.6, it doesn't work with tox 3
* Sat Jul 14 2018 Fedora Release Engineering <releng@fedoraproject.org> - 3.0.0-3
- Rebuilt for https://fedoraproject.org/wiki/Fedora_29_Mass_Rebuild
* Mon Jul 02 2018 Miro Hrončok <mhroncok@redhat.com> - 3.0.0-2
- Rebuilt for Python 3.7
* Mon Jul 02 2018 Matthias Runge <mrunge@redhat.com> - 3.0.0-1
- upgrade to 3.0.0
* Sun Jun 17 2018 Miro Hrončok <mhroncok@redhat.com> - 2.9.1-7
- Rebuilt for Python 3.7
* Tue May 15 2018 Miro Hrončok <mhroncok@redhat.com> - 2.9.1-6
- Remove the python2 version once again
- Stop recommending python33 (it's retired)
* Mon May 07 2018 Miro Hrončok <mhroncok@redhat.com> - 2.9.1-5
- Add python2 back, see #1575667
* Mon Apr 30 2018 Miro Hrončok <mhroncok@redhat.com> - 2.9.1-4
- Remove the python2 version
* Thu Mar 15 2018 Miro Hrončok <mhroncok@redhat.com> - 2.9.1-3
- Switch to automatic dependency generator (also fixes #1556164)
- Recommend python37
* Fri Feb 09 2018 Fedora Release Engineering <releng@fedoraproject.org> - 2.9.1-2
- Rebuilt for https://fedoraproject.org/wiki/Fedora_28_Mass_Rebuild
* Mon Jan 29 2018 Matthias Runge <mrunge@redhat.com> - 2.9.1-1
- update to 2.9.1
* 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
- update to 2.3.1
* Thu Feb 04 2016 Fedora Release Engineering <releng@fedoraproject.org> - 2.1.1-4
- Rebuilt for https://fedoraproject.org/wiki/Fedora_24_Mass_Rebuild
* Thu Nov 12 2015 Kalev Lember <klember@redhat.com> - 2.1.1-3
- Rebuilt for https://fedoraproject.org/wiki/Changes/python3.5
* Tue Aug 25 2015 Matthias Runge <mrunge@redhat.com> - 2.1.1-2
- add requirement: python-pluggy
* Tue Aug 18 2015 Matthias Runge <mrunge@redhat.com> - 2.1.1-1
- update to 2.1.1
* Thu Jun 18 2015 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 1.8.1-2
- Rebuilt for https://fedoraproject.org/wiki/Fedora_23_Mass_Rebuild
* 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 * Wed Aug 13 2014 Matthias Runge <mrunge@redhat.com> - 1.7.1-3
- Fix ConfigError: ConfigError: substitution key 'posargs' not found - Fix ConfigError: ConfigError: substitution key 'posargs' not found
(rhbz#1127961, rhbz#1128562) (rhbz#1127961, rhbz#1128562)
+1 -1
View File
@@ -1 +1 @@
SHA512 (tox-3.15.2.tar.gz) = 2a93f8141986d967d090eaf9d327e418e42357028540cb140da6a6430749a4b41e7f82c9ae57378995b7f3be060b7480d770416a6a21583e06b83b7248ceacf8 ec85bbfc7bd29600e91aa0e9754645d0 tox-1.7.1.tar.gz
-76
View File
@@ -1,76 +0,0 @@
---
- hosts: localhost
tags:
- classic
tasks:
- dnf:
name: "*"
state: latest
- hosts: localhost
tags:
- classic
pre_tasks:
- import_role:
name: standard-test-source
vars:
fetch_only: True
roles:
- role: standard-test-basic
repositories:
- repo: "https://src.fedoraproject.org/tests/python.git"
dest: "python"
- repo: "https://src.fedoraproject.org/rpms/pyproject-rpm-macros.git"
dest: "pyproject-rpm-macros"
tests:
- rpmbuild:
dir: .
run: "dnf -y build-dep --define '_with_internet 1' {{ tenv_workdir }}/python-tox.spec && rpmbuild --define '_sourcedir {{ tenv_workdir }}' --with internet -ba {{ tenv_workdir }}/python-tox.spec"
- smoke27:
dir: python/smoke
run: VERSION=2.7 METHOD=virtualenv ./venv.sh
- smoke34:
dir: python/smoke
run: VERSION=3.4 ./venv.sh
- smoke35:
dir: python/smoke
run: VERSION=3.5 ./venv.sh
- smoke36:
dir: python/smoke
run: VERSION=3.6 ./venv.sh
- smoke37:
dir: python/smoke
run: VERSION=3.7 ./venv.sh
- smoke38:
dir: python/smoke
run: VERSION=3.8 ./venv.sh
- smoke39:
dir: python/smoke
run: VERSION=3.9 ./venv.sh
- pyproject_pytest:
dir: pyproject-rpm-macros/tests
run: ./mocktest.sh python-pytest
- pyproject_pluggy:
dir: pyproject-rpm-macros/tests
run: ./mocktest.sh python-pluggy
- pyproject_openqa_client:
dir: pyproject-rpm-macros/tests
run: ./mocktest.sh python-openqa_client
required_packages:
- gcc
- virtualenv
- python27
- python34
- python35
- python36
- python37
- python38
- python39
- python2-devel
- python3-devel
- python3-tox
- dnf
- mock
- rpmdevtools
- rpm-build