Hello community,

here is the log from the commit of package python-pytest-services for 
openSUSE:Factory checked in at 2019-11-18 20:06:14
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/python-pytest-services (Old)
 and      /work/SRC/openSUSE:Factory/.python-pytest-services.new.26869 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "python-pytest-services"

Mon Nov 18 20:06:14 2019 rev:2 rq:748853 version:2.0.1

Changes:
--------
--- 
/work/SRC/openSUSE:Factory/python-pytest-services/python-pytest-services.changes
    2019-03-19 09:57:51.100115992 +0100
+++ 
/work/SRC/openSUSE:Factory/.python-pytest-services.new.26869/python-pytest-services.changes
 2019-11-18 20:06:16.821716748 +0100
@@ -1,0 +2,11 @@
+Fri Nov 15 10:37:18 UTC 2019 - Tomáš Chvátal <tchva...@suse.com>
+
+- Update to 2.0.1:
+  * #23: Rely on zc.lockfile for lockfile behavior.
+  * #28: Fixtures now supports later versions of mysql and no longer support 
versions of mysql prior to mysql --initialize support.
+  * #29: Fix issues with later versions of mysql where mysql_defaults_file 
fixture would prevent startup of mysql.
+  * Fixed issue in test suite where mysql fixture was not tested.
+  * Removed pytest_services.locks.lock_file.
+  * #20: Added workaround for issue with SysLogHandler.
+
+-------------------------------------------------------------------

Old:
----
  1.3.1.tar.gz

New:
----
  2.0.1.tar.gz

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Other differences:
------------------
++++++ python-pytest-services.spec ++++++
--- /var/tmp/diff_new_pack.gXtgZj/_old  2019-11-18 20:06:17.837716238 +0100
+++ /var/tmp/diff_new_pack.gXtgZj/_new  2019-11-18 20:06:17.845716235 +0100
@@ -1,7 +1,7 @@
 #
 # spec file for package python-pytest-services
 #
-# Copyright (c) 2019 SUSE LINUX GmbH, Nuernberg, Germany.
+# Copyright (c) 2019 SUSE LLC.
 #
 # All modifications and additions to the file contributed by third parties
 # remain the property of their copyright owners, unless otherwise agreed
@@ -18,20 +18,20 @@
 
 %{?!python_module:%define python_module() python-%{**} python3-%{**}}
 Name:           python-pytest-services
-Version:        1.3.1
+Version:        2.0.1
 Release:        0
 Summary:        Services plugin for pytest testing framework
 License:        MIT
-Group:          Development/Languages/Python
 URL:            https://github.com/pytest-dev/pytest-services
 Source:         
https://github.com/pytest-dev/pytest-services/archive/%{version}.tar.gz
 BuildRequires:  %{python_module mock}
+BuildRequires:  %{python_module mysqlclient}
 BuildRequires:  %{python_module psutil}
+BuildRequires:  %{python_module pylibmc}
 BuildRequires:  %{python_module pytest}
 BuildRequires:  %{python_module requests}
 BuildRequires:  %{python_module setuptools}
-BuildRequires:  %{python_module pylibmc}
-BuildRequires:  %{python_module mysqlclient}
+BuildRequires:  %{python_module zc.lockfile >= 2.0}
 BuildRequires:  fdupes
 BuildRequires:  python-rpm-macros
 BuildRequires:  python-subprocess32
@@ -39,6 +39,7 @@
 Requires:       python-pytest
 Requires:       python-requests
 Requires:       python-setuptools
+Requires:       python-zc.lockfile >= 2.0
 Recommends:     python-pylibmc
 BuildArch:      noarch
 %ifpython2
@@ -62,7 +63,7 @@
 
 %check
 # test_memcached test_mysql test_xvfb - need running X/mysql/memcache servers
-%python_expand PYTHONPATH=%{buildroot}%{$python_sitelib} 
py.test-%{$python_bin_suffix} -v -k 'not (test_memcached or test_mysql or 
test_xvfb)'
+%pytest -k 'not (test_memcached or test_mysql or test_xvfb)'
 
 %files %{python_files}
 %doc CHANGES.rst README.rst

++++++ 1.3.1.tar.gz -> 2.0.1.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/pytest-services-1.3.1/.travis.yml 
new/pytest-services-2.0.1/.travis.yml
--- old/pytest-services-1.3.1/.travis.yml       2018-10-24 14:07:03.000000000 
+0200
+++ new/pytest-services-2.0.1/.travis.yml       2019-11-12 22:04:01.000000000 
+0100
@@ -1,20 +1,28 @@
 sudo: false
 language: python
-python: "3.4"
-env:
-  matrix:
-    - TESTENV=linters
-    - TESTENV=py27
-    - TESTENV=py27-xdist
-    - TESTENV=py27-pytest-latest
-    - TESTENV=py34
-    - TESTENV=coveralls
-install:
-  - pip install tox
-script: tox -e $TESTENV
+python: "2.7"
+
+matrix:
+  include:
+  - env: TOXENV=linters
+  - env: TOXENV=py27-pytest39
+  - env: TOXENV=py27-pytest310
+  - env: TOXENV=py27-pytestlatest
+  - env: TOXENV=py27-pytestlatest-xdist
+  - env: TOXENV=py34-pytestlatest
+    python: "3.4"
+  - env: TOXENV=py35-pytestlatest
+    python: "3.5"
+  - env: TOXENV=py36-pytestlatest
+    python: "3.6"
+  - env: TOXENV=py27-pytestlatest-coveralls
+install: pip install tox
+# mysql_install_db will not work if it can't find the my-default.cnf file
+before_script: sudo cp /etc/mysql/my.cnf /usr/share/mysql/my-default.cnf
+script: tox
 branches:
   except:
-    - /^\d/
+  - /^\d/
 notifications:
   email:
   - bubenk...@gmail.com
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/pytest-services-1.3.1/CHANGES.rst 
new/pytest-services-2.0.1/CHANGES.rst
--- old/pytest-services-1.3.1/CHANGES.rst       2018-10-24 14:07:03.000000000 
+0200
+++ new/pytest-services-2.0.1/CHANGES.rst       2019-11-12 22:04:01.000000000 
+0100
@@ -1,6 +1,22 @@
 Changelog
 =========
 
+2.0.1
+-----
+
+- #20: Added workaround for issue with SysLogHandler.
+
+2.0.0
+-----
+
+- #23: Rely on ``zc.lockfile`` for lockfile behavior.
+- #28: Fixtures now supports later versions of mysql and no longer
+  support versions of mysql prior to ``mysql --initialize`` support.
+- #29: Fix issues with later versions of mysql where ``mysql_defaults_file``
+  fixture would prevent startup of mysql.
+- Fixed issue in test suite where mysql fixture was not tested.
+- Removed ``pytest_services.locks.lock_file``.
+
 1.3.1
 -----
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/pytest-services-1.3.1/README.rst 
new/pytest-services-2.0.1/README.rst
--- old/pytest-services-1.3.1/README.rst        2018-10-24 14:07:03.000000000 
+0200
+++ new/pytest-services-2.0.1/README.rst        2019-11-12 22:04:01.000000000 
+0100
@@ -41,7 +41,7 @@
 --------
 
 * run_services
-    Determines whethere services should be run or not. False by default if not 
in distributed environment
+    Determines whether services should be run or not. False by default if not 
in distributed environment
     (without pytest-xdist_). Can be manually set to True by overriding this 
fixture in your test config or
     just by using `--run-services` command line argument (see below).
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/pytest-services-1.3.1/pytest_services/__init__.py 
new/pytest-services-2.0.1/pytest_services/__init__.py
--- old/pytest-services-1.3.1/pytest_services/__init__.py       2018-10-24 
14:07:03.000000000 +0200
+++ new/pytest-services-2.0.1/pytest_services/__init__.py       2019-11-12 
22:04:01.000000000 +0100
@@ -1,2 +1,2 @@
 """pytest-services package."""
-__version__ = '1.3.1'
+__version__ = '2.0.1'
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/pytest-services-1.3.1/pytest_services/locks.py 
new/pytest-services-2.0.1/pytest_services/locks.py
--- old/pytest-services-1.3.1/pytest_services/locks.py  2018-10-24 
14:07:03.000000000 +0200
+++ new/pytest-services-2.0.1/pytest_services/locks.py  2019-11-12 
22:04:01.000000000 +0100
@@ -1,78 +1,33 @@
 """Fixtures for supporting a distributed test run."""
 import contextlib
-import errno
-import fcntl
 import json
 import os
 import socket
-import time
 
 import pytest
+import zc.lockfile
 
 marker = object()
 
 
-def lock_file(filename, content, operation):
-    """Lock given file.
-
-    :param filename: full path to the lockfile
-    :param content: content string to write to the lockfile after successful 
lock
-    :param operation: os operation to use for lock
-    :return: file object of opened locked file. Can be used to write content 
to it
-    """
-    try:
-        handle = os.fdopen(os.open(filename, os.O_RDWR | os.O_CREAT, 0o666), 
'r+')
-    except OSError as e:
-        if e.errno == errno.EACCES:
-            raise Exception('Failed to open/create file. Check permissions on 
containing folder')
-        raise
-    fcntl.flock(handle, operation)
-    if content:
-        handle.write(content)
-    handle.flush()
-    os.fsync(handle.fileno())
+def try_remove(filename):
     try:
-        os.chmod(filename, 0o666)
+        os.unlink(filename)
     except OSError:
         pass
-    return handle
-
-
-def unlock_file(filename, handle, remove=True):
-    """Unlock given file."""
-    fcntl.flock(handle, fcntl.LOCK_UN)
-    handle.close()
-    if remove:
-        try:
-            os.unlink(filename)
-        except OSError:
-            pass
 
 
 @contextlib.contextmanager
-def file_lock(filename, operation=fcntl.LOCK_EX, remove=True, timeout=20):
+def file_lock(filename, remove=True, timeout=20):
     """A lock that is shared across processes.
 
     :param filename: the name of the file that will be locked.
-    :pram operation: the lock operation.
 
     """
-    # http://bservices_log.vmfarms.com/2011/03/cross-process-locking-and.html
-    times = 0
-    while True:
-        try:
-            handle = lock_file(filename, None, operation)
-            break
-        except IOError:
-            if times > timeout:
-                raise Exception('Not able to aquire lock file {0} in 
{1}'.format(filename, timeout))
-            time.sleep(0.5)
-            times += 1
+    with contextlib.closing(zc.lockfile.SimpleLockFile(filename)) as lockfile:
+        yield lockfile._fp
 
-    try:
-        yield handle
-    finally:
-        unlock_file(filename, handle, remove=remove)
+    remove and try_remove(filename)
 
 
 def unlock_resource(name, resource, lock_dir, services_log):
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/pytest-services-1.3.1/pytest_services/log.py 
new/pytest-services-2.0.1/pytest_services/log.py
--- old/pytest-services-1.3.1/pytest_services/log.py    2018-10-24 
14:07:03.000000000 +0200
+++ new/pytest-services-2.0.1/pytest_services/log.py    2019-11-12 
22:04:01.000000000 +0100
@@ -20,12 +20,21 @@
             pass
     logger = logging.getLogger('[{slave_id}] {name}'.format(name=__name__, 
slave_id=slave_id))
     logger.setLevel(logging.DEBUG)
-    if handler:
+    if handler and workaround_issue_20(handler):
         logger.propagate = 0
         logger.addHandler(handler)
     return logger
 
 
+def workaround_issue_20(handler):
+    """
+    Workaround for
+    https://github.com/pytest-dev/pytest-services/issues/20,
+    disabling installation of a broken handler.
+    """
+    return hasattr(handler, 'socket')
+
+
 @contextlib.contextmanager
 def dont_capture(request):
     """Suspend capturing of stdout by pytest."""
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/pytest-services-1.3.1/pytest_services/mysql.py 
new/pytest-services-2.0.1/pytest_services/mysql.py
--- old/pytest-services-1.3.1/pytest_services/mysql.py  2018-10-24 
14:07:03.000000000 +0200
+++ new/pytest-services-2.0.1/pytest_services/mysql.py  2019-11-12 
22:04:01.000000000 +0100
@@ -12,10 +12,12 @@
 
 
 @pytest.fixture(scope='session')
-def mysql_defaults_file(run_services, mysql_data_dir, memory_temp_dir):
+def mysql_defaults_file(
+        run_services, tmp_path_factory, memory_temp_dir, request):
     """MySQL defaults file."""
     if run_services:
-        defaults_path = os.path.join(mysql_data_dir, 'defaults.cnf')
+        cfg = tmp_path_factory.mktemp(request.session.name)
+        defaults_path = str(cfg / 'defaults.cnf')
 
         with open(defaults_path, 'w+') as fd:
             fd.write("""
@@ -28,24 +30,36 @@
 
 
 @pytest.fixture(scope='session')
-def mysql_system_database(run_services, mysql_data_dir, mysql_defaults_file, 
memory_temp_dir, lock_dir, services_log):
-    """Install database to given path."""
-    if run_services:
-        mysql_install_db = find_executable('mysql_install_db')
-        assert mysql_install_db, 'You have to install mysql_install_db script.'
+def mysql_base_dir():
+    my_print_defaults = find_executable('my_print_defaults')
+    assert my_print_defaults, 'You have to install my_print_defaults script.'
+
+    return 
os.path.dirname(os.path.dirname(os.path.realpath(my_print_defaults)))
 
-        my_print_defaults = find_executable('my_print_defaults')
-        assert my_print_defaults, 'You have to install my_print_defaults 
script.'
 
-        mysql_basedir = 
os.path.dirname(os.path.dirname(os.path.realpath(my_print_defaults)))
+@pytest.fixture(scope='session')
+def mysql_system_database(
+        run_services,
+        mysql_data_dir,
+        mysql_base_dir,
+        mysql_defaults_file,
+        memory_temp_dir,
+        lock_dir,
+        services_log,
+):
+    """Install database to given path."""
+    if run_services:
+        mysqld = find_executable('mysqld')
+        assert mysqld, 'You have to install mysqld script.'
 
         try:
-            services_log.debug('Starting mysql_install_db.')
+            services_log.debug('Starting mysqld.')
             check_output([
-                mysql_install_db,
+                mysqld,
                 '--defaults-file={0}'.format(mysql_defaults_file),
+                '--initialize-insecure',
                 '--datadir={0}'.format(mysql_data_dir),
-                '--basedir={0}'.format(mysql_basedir),
+                '--basedir={0}'.format(mysql_base_dir),
                 '--user={0}'.format(os.environ['USER'])
             ])
         except CalledProcessWithOutputError as e:
@@ -54,7 +68,7 @@
                 'Please ensure you disabled apparmor for /run/shm/** or for 
whole mysql'.format(e=e))
             raise
         finally:
-            services_log.debug('mysql_install_db was executed.')
+            services_log.debug('mysqld was executed.')
 
 
 @pytest.fixture(scope='session')
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/pytest-services-1.3.1/pytest_services/service.py 
new/pytest-services-2.0.1/pytest_services/service.py
--- old/pytest-services-1.3.1/pytest_services/service.py        2018-10-24 
14:07:03.000000000 +0200
+++ new/pytest-services-2.0.1/pytest_services/service.py        2019-11-12 
22:04:01.000000000 +0100
@@ -58,10 +58,10 @@
     Add finalizer to properly stop it.
     """
     orig_request = request
+
     def watcher_getter_function(name, arguments=None, kwargs=None, timeout=20, 
checker=None, request=None):
         if request is None:
-            warnings.warn('Omitting the `request` parameter will result in an '
-                         'unstable order of finalizers.')
+            warnings.warn('Omitting the `request` parameter will result in an 
unstable order of finalizers.')
             request = orig_request
         executable = find_executable(name)
         assert executable, 'You have to install {0} executable.'.format(name)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/pytest-services-1.3.1/pytest_services/xvfb.py 
new/pytest-services-2.0.1/pytest_services/xvfb.py
--- old/pytest-services-1.3.1/pytest_services/xvfb.py   2018-10-24 
14:07:03.000000000 +0200
+++ new/pytest-services-2.0.1/pytest_services/xvfb.py   2019-11-12 
22:04:01.000000000 +0100
@@ -1,6 +1,5 @@
 """Fixtures for the GUI environment."""
 import os
-import fcntl
 import socket
 import re
 try:
@@ -71,7 +70,7 @@
         listen_args = []
 
     with file_lock(os.path.join(lock_dir, 
'xvfb_{0}.lock'.format(xvfb_display)),
-                   operation=fcntl.LOCK_EX | fcntl.LOCK_NB):
+                   ):
 
         def checker():
             try:
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/pytest-services-1.3.1/requirements-testing.txt 
new/pytest-services-2.0.1/requirements-testing.txt
--- old/pytest-services-1.3.1/requirements-testing.txt  2018-10-24 
14:07:03.000000000 +0200
+++ new/pytest-services-2.0.1/requirements-testing.txt  2019-11-12 
22:04:01.000000000 +0100
@@ -4,6 +4,4 @@
 mysqlclient
 pylibmc
 pytest-pep8
-pylama
-pylama_pylint
 astroid
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/pytest-services-1.3.1/setup.py 
new/pytest-services-2.0.1/setup.py
--- old/pytest-services-1.3.1/setup.py  2018-10-24 14:07:03.000000000 +0200
+++ new/pytest-services-2.0.1/setup.py  2019-11-12 22:04:01.000000000 +0100
@@ -19,6 +19,7 @@
     'requests',
     'psutil',
     'pytest',
+    'zc.lockfile >= 2.0',
 ]
 
 PY2 = sys.version_info[0] < 3
@@ -52,7 +53,7 @@
         'Topic :: Utilities',
         'Programming Language :: Python :: 2',
         'Programming Language :: Python :: 3',
-    ] + [('Programming Language :: Python :: %s' % x) for x in '2.7 3.0 3.1 
3.2 3.3 3.4'.split()],
+    ] + [('Programming Language :: Python :: %s' % x) for x in '2.7 3.4 3.5 
3.6 3.7'.split()],
     tests_require=['tox'],
     entry_points={'pytest11': [
         'pytest-services=pytest_services.plugin',
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/pytest-services-1.3.1/tests/test_plugin.py 
new/pytest-services-2.0.1/tests/test_plugin.py
--- old/pytest-services-1.3.1/tests/test_plugin.py      2018-10-24 
14:07:03.000000000 +0200
+++ new/pytest-services-2.0.1/tests/test_plugin.py      2019-11-12 
22:04:01.000000000 +0100
@@ -13,13 +13,13 @@
     assert mc.get('some') == 1
 
     # check memcached cleaner
-    request.getfuncargvalue('memcached_clean')
+    request.getfixturevalue('memcached_clean')
     assert mc.get('some') is None
 
 
-def test_mysql(mysql, mysql_connection):
+def test_mysql(mysql, mysql_connection, mysql_socket):
     """Test mysql service."""
-    conn = MySQLdb.connect(user='root')
+    conn = MySQLdb.connect(user='root', unix_socket=mysql_socket)
     assert conn
 
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/pytest-services-1.3.1/tox.ini 
new/pytest-services-2.0.1/tox.ini
--- old/pytest-services-1.3.1/tox.ini   2018-10-24 14:07:03.000000000 +0200
+++ new/pytest-services-2.0.1/tox.ini   2019-11-12 22:04:01.000000000 +0100
@@ -1,59 +1,41 @@
 [tox]
 distshare={homedir}/.tox/distshare
-envlist=linters,py27,py27-xdist,py27-pytest-latest,py34
+envlist=
+    linters
+    py27-pytest{39,310,latest}
+    py{34,35,36}-pytestlatest
+    py27-pytestlatest-xdist
+    py27-pytestlatest-coveralls
 skip_missing_interpreters = true
 
 [testenv]
-commands= py.test tests --junitxml={envlogdir}/junit-{envname}.xml
+commands= py.test tests --junitxml={envlogdir}/junit-{envname}.xml {posargs}
 deps =
-    -e.
+    pytestlatest: pytest
+    pytest310: pytest~=3.10.0
+    pytest39: pytest~=3.9.0
+    xdist: pytest-xdist
     -r{toxinidir}/requirements-testing.txt
 passenv = DISPLAY COVERALLS_REPO_TOKEN USER TRAVIS TRAVIS_JOB_ID TRAVIS_BRANCH
 extras = memcache
 
 [testenv:linters]
 basepython=python2.7
-commands={[testenv]commands} pytest_services --pylama
+commands={[testenv]commands} pytest_services --pep8 -m pep8
 
-[testenv:coveralls]
+[testenv:py27-pytestlatest-coveralls]
+usedevelop = True
 deps =
     {[testenv]deps}
     coveralls
 commands=
-    coverage run --source=pytest_services {envdir}/bin/py.test tests
+    coverage run --source=pytest_services --branch -m pytest tests
     coverage report -m
     coveralls
 
-[testenv:py27-xdist]
-basepython=python2.7
-deps =
-    {[testenv]deps}
-    pytest-xdist
-commands=
-  py.test tests -n1 -rfsxX \
-        --junitxml={envlogdir}/junit-{envname}.xml
-
-[testenv:py27-pytest-latest]
-basepython=python2.7
-deps =
-    {[testenv]deps}
-    git+https://github.com/pytest-dev/py.git@master#egg=py
-    git+https://github.com/pytest-dev/pytest.git@features#egg=pytest
+[testenv:py27-pytestlatest-xdist]
+commands={[testenv]commands} -n1 -rfsxX
 
 [pytest]
+pep8maxlinelength=120
 addopts = -vvl
-
-[pylama]
-format = pep8
-skip = */.tox/*,*/.env/*
-linters = pylint,mccabe,pep8,pep257
-ignore = 
F0401,C0111,E731,D100,W0621,W0108,R0201,W0401,W0614,W0212,C901,R0914,I0011,D211
-
-[pylama:pep8]
-max_line_length = 120
-
-[pylama:pylint]
-max_line_length = 120
-
-[pylama:mccabe]
-max_complexity = 11


Reply via email to