Hello community,

here is the log from the commit of package python-pytest-randomly for 
openSUSE:Factory checked in at 2019-09-10 00:03:14
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/python-pytest-randomly (Old)
 and      /work/SRC/openSUSE:Factory/.python-pytest-randomly.new.7948 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "python-pytest-randomly"

Tue Sep 10 00:03:14 2019 rev:5 rq:729484 version:3.1.0

Changes:
--------
--- 
/work/SRC/openSUSE:Factory/python-pytest-randomly/python-pytest-randomly.changes
    2019-06-03 18:57:09.756388968 +0200
+++ 
/work/SRC/openSUSE:Factory/.python-pytest-randomly.new.7948/python-pytest-randomly.changes
  2019-09-10 00:03:18.465208207 +0200
@@ -1,0 +2,9 @@
+Mon Sep  9 09:20:12 UTC 2019 - Tomáš Chvátal <tchva...@suse.com>
+
+- Update to 3.1.0:
+  * Add plugins via entry points pytest_randomly.random_seeder to allow
+    outside packages to register additional random generators to seed.
+    This has added a dependency on the entrypoints package.
+- Drop patch tests-restore-python2.7.patch
+
+-------------------------------------------------------------------

Old:
----
  pytest-randomly-3.0.0.tar.gz
  tests-restore-python2.7.patch

New:
----
  pytest-randomly-3.1.0.tar.gz

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

Other differences:
------------------
++++++ python-pytest-randomly.spec ++++++
--- /var/tmp/diff_new_pack.pyyeyX/_old  2019-09-10 00:03:19.773208119 +0200
+++ /var/tmp/diff_new_pack.pyyeyX/_new  2019-09-10 00:03:19.777208119 +0200
@@ -16,26 +16,27 @@
 #
 
 
+%define skip_python2 1
 %{?!python_module:%define python_module() python-%{**} python3-%{**}}
 Name:           python-pytest-randomly
-Version:        3.0.0
+Version:        3.1.0
 Release:        0
 Summary:        Pytest plugin to randomly order tests and control random.seed
 License:        BSD-3-Clause
 Group:          Development/Languages/Python
 URL:            https://github.com/adamchainz/pytest-randomly
 Source:         
https://files.pythonhosted.org/packages/source/p/pytest-randomly/pytest-randomly-%{version}.tar.gz
-# Reverse of https://github.com/pytest-dev/pytest-randomly/commit/7ca48ad.patch
-Patch0:         tests-restore-python2.7.patch
 BuildRequires:  %{python_module setuptools}
 BuildRequires:  fdupes
 BuildRequires:  python-rpm-macros
+Requires:       python-entrypoints
 Requires:       python-pytest
 Recommends:     python-Faker
 Suggests:       python-numpy
 BuildArch:      noarch
 # SECTION test requirements
 BuildRequires:  %{python_module Faker}
+BuildRequires:  %{python_module entrypoints}
 BuildRequires:  %{python_module factory_boy}
 BuildRequires:  %{python_module numpy}
 BuildRequires:  %{python_module pytest}
@@ -65,7 +66,6 @@
 
 %prep
 %setup -q -n pytest-randomly-%{version}
-%patch0 -p1
 # Disregard Python 3.4+ restriction
 sed -i '/python_requires/d' setup.py
 
@@ -78,7 +78,8 @@
 
 %check
 export PYTHONDONTWRITEBYTECODE=true
-%pytest
+# test_entrypoint_injection needs installed module for pytest to use
+%pytest -k 'not test_entrypoint_injection'
 
 %files %{python_files}
 %doc AUTHORS.rst README.rst

++++++ pytest-randomly-3.0.0.tar.gz -> pytest-randomly-3.1.0.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/pytest-randomly-3.0.0/HISTORY.rst 
new/pytest-randomly-3.1.0/HISTORY.rst
--- old/pytest-randomly-3.0.0/HISTORY.rst       2019-04-05 11:31:58.000000000 
+0200
+++ new/pytest-randomly-3.1.0/HISTORY.rst       2019-08-25 13:54:27.000000000 
+0200
@@ -8,6 +8,13 @@
 
 .. Insert new release notes below this line
 
+3.1.0 (2019-08-25)
+------------------
+
+* Add plugins via entry points ``pytest_randomly.random_seeder`` to allow
+  outside packages to register additional random generators to seed. This has
+  added a dependency on the ``entrypoints`` package.
+
 3.0.0 (2019-04-05)
 ------------------
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/pytest-randomly-3.0.0/PKG-INFO 
new/pytest-randomly-3.1.0/PKG-INFO
--- old/pytest-randomly-3.0.0/PKG-INFO  2019-04-05 11:32:22.000000000 +0200
+++ new/pytest-randomly-3.1.0/PKG-INFO  2019-08-25 13:54:38.000000000 +0200
@@ -1,11 +1,12 @@
 Metadata-Version: 1.2
 Name: pytest-randomly
-Version: 3.0.0
+Version: 3.1.0
 Summary: Pytest plugin to randomly order tests and control random.seed.
 Home-page: https://github.com/pytest-dev/pytest-randomly
 Author: Adam Johnson
 Author-email: m...@adamj.eu
 License: BSD
+Project-URL: Changelog, 
https://github.com/pytest-dev/pytest-randomly/blob/master/HISTORY.rst
 Description: ===============
         pytest-randomly
         ===============
@@ -16,6 +17,9 @@
         .. image:: https://img.shields.io/pypi/v/pytest-randomly.svg
                 :target: https://pypi.python.org/pypi/pytest-randomly
         
+        .. image:: https://img.shields.io/badge/code%20style-black-000000.svg
+            :target: https://github.com/python/black
+        
         .. figure:: 
https://raw.githubusercontent.com/pytest-dev/pytest-randomly/master/logo.png
            :scale: 50%
            :alt: Randomness power.
@@ -44,6 +48,11 @@
           data in tests - factory boy uses faker for lots of data.
         * If `numpy <http://www.numpy.org/>`_ is installed, its random state 
is reset
           at the start of every test.
+        * If additional random generators are used, they can be registered 
under the
+          ``pytest_randomly.random_seeder``
+          `entry point 
<https://packaging.python.org/specifications/entry-points/>`_ and
+          will have their seed reset at the start of every test. Register a 
function
+          that takes the current seed value.
         
         About
         -----
@@ -133,6 +142,13 @@
         
         .. Insert new release notes below this line
         
+        3.1.0 (2019-08-25)
+        ------------------
+        
+        * Add plugins via entry points ``pytest_randomly.random_seeder`` to 
allow
+          outside packages to register additional random generators to seed. 
This has
+          added a dependency on the ``entrypoints`` package.
+        
         3.0.0 (2019-04-05)
         ------------------
         
@@ -210,6 +226,7 @@
 Classifier: Intended Audience :: Developers
 Classifier: License :: OSI Approved :: BSD License
 Classifier: Natural Language :: English
+Classifier: Programming Language :: Python :: 3 :: Only
 Classifier: Programming Language :: Python :: 3
 Classifier: Programming Language :: Python :: 3.5
 Classifier: Programming Language :: Python :: 3.6
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/pytest-randomly-3.0.0/README.rst 
new/pytest-randomly-3.1.0/README.rst
--- old/pytest-randomly-3.0.0/README.rst        2019-03-26 21:10:58.000000000 
+0100
+++ new/pytest-randomly-3.1.0/README.rst        2019-08-25 13:54:07.000000000 
+0200
@@ -8,6 +8,9 @@
 .. image:: https://img.shields.io/pypi/v/pytest-randomly.svg
         :target: https://pypi.python.org/pypi/pytest-randomly
 
+.. image:: https://img.shields.io/badge/code%20style-black-000000.svg
+    :target: https://github.com/python/black
+
 .. figure:: 
https://raw.githubusercontent.com/pytest-dev/pytest-randomly/master/logo.png
    :scale: 50%
    :alt: Randomness power.
@@ -36,6 +39,11 @@
   data in tests - factory boy uses faker for lots of data.
 * If `numpy <http://www.numpy.org/>`_ is installed, its random state is reset
   at the start of every test.
+* If additional random generators are used, they can be registered under the
+  ``pytest_randomly.random_seeder``
+  `entry point <https://packaging.python.org/specifications/entry-points/>`_ 
and
+  will have their seed reset at the start of every test. Register a function
+  that takes the current seed value.
 
 About
 -----
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/pytest-randomly-3.0.0/pytest_randomly.egg-info/PKG-INFO 
new/pytest-randomly-3.1.0/pytest_randomly.egg-info/PKG-INFO
--- old/pytest-randomly-3.0.0/pytest_randomly.egg-info/PKG-INFO 2019-04-05 
11:32:21.000000000 +0200
+++ new/pytest-randomly-3.1.0/pytest_randomly.egg-info/PKG-INFO 2019-08-25 
13:54:38.000000000 +0200
@@ -1,11 +1,12 @@
 Metadata-Version: 1.2
 Name: pytest-randomly
-Version: 3.0.0
+Version: 3.1.0
 Summary: Pytest plugin to randomly order tests and control random.seed.
 Home-page: https://github.com/pytest-dev/pytest-randomly
 Author: Adam Johnson
 Author-email: m...@adamj.eu
 License: BSD
+Project-URL: Changelog, 
https://github.com/pytest-dev/pytest-randomly/blob/master/HISTORY.rst
 Description: ===============
         pytest-randomly
         ===============
@@ -16,6 +17,9 @@
         .. image:: https://img.shields.io/pypi/v/pytest-randomly.svg
                 :target: https://pypi.python.org/pypi/pytest-randomly
         
+        .. image:: https://img.shields.io/badge/code%20style-black-000000.svg
+            :target: https://github.com/python/black
+        
         .. figure:: 
https://raw.githubusercontent.com/pytest-dev/pytest-randomly/master/logo.png
            :scale: 50%
            :alt: Randomness power.
@@ -44,6 +48,11 @@
           data in tests - factory boy uses faker for lots of data.
         * If `numpy <http://www.numpy.org/>`_ is installed, its random state 
is reset
           at the start of every test.
+        * If additional random generators are used, they can be registered 
under the
+          ``pytest_randomly.random_seeder``
+          `entry point 
<https://packaging.python.org/specifications/entry-points/>`_ and
+          will have their seed reset at the start of every test. Register a 
function
+          that takes the current seed value.
         
         About
         -----
@@ -133,6 +142,13 @@
         
         .. Insert new release notes below this line
         
+        3.1.0 (2019-08-25)
+        ------------------
+        
+        * Add plugins via entry points ``pytest_randomly.random_seeder`` to 
allow
+          outside packages to register additional random generators to seed. 
This has
+          added a dependency on the ``entrypoints`` package.
+        
         3.0.0 (2019-04-05)
         ------------------
         
@@ -210,6 +226,7 @@
 Classifier: Intended Audience :: Developers
 Classifier: License :: OSI Approved :: BSD License
 Classifier: Natural Language :: English
+Classifier: Programming Language :: Python :: 3 :: Only
 Classifier: Programming Language :: Python :: 3
 Classifier: Programming Language :: Python :: 3.5
 Classifier: Programming Language :: Python :: 3.6
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/pytest-randomly-3.0.0/pytest_randomly.egg-info/requires.txt 
new/pytest-randomly-3.1.0/pytest_randomly.egg-info/requires.txt
--- old/pytest-randomly-3.0.0/pytest_randomly.egg-info/requires.txt     
2019-04-05 11:32:21.000000000 +0200
+++ new/pytest-randomly-3.1.0/pytest_randomly.egg-info/requires.txt     
2019-08-25 13:54:38.000000000 +0200
@@ -1 +1,2 @@
+entrypoints
 pytest
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/pytest-randomly-3.0.0/pytest_randomly.py 
new/pytest-randomly-3.1.0/pytest_randomly.py
--- old/pytest-randomly-3.0.0/pytest_randomly.py        2019-04-05 
11:31:55.000000000 +0200
+++ new/pytest-randomly-3.1.0/pytest_randomly.py        2019-08-25 
13:54:16.000000000 +0200
@@ -2,16 +2,19 @@
 import random
 import time
 
+import entrypoints
 from pytest import Collector
 
 # factory-boy
 try:
     from factory.random import set_random_state as factory_set_random_state
+
     have_factory_boy = True
 except ImportError:
     # old versions
     try:
         from factory.fuzzy import set_random_state as factory_set_random_state
+
         have_factory_boy = True
     except ImportError:
         have_factory_boy = False
@@ -19,6 +22,7 @@
 # faker
 try:
     from faker.generator import random as faker_random
+
     have_faker = True
 except ImportError:
     have_faker = False
@@ -26,19 +30,20 @@
 # numpy
 try:
     from numpy import random as np_random
+
     have_numpy = True
 except ImportError:
     have_numpy = False
 
 
-__version__ = '3.0.0'
+__version__ = "3.1.0"
 
 
 default_seed = int(time.time())
 
 
 def seed_type(string):
-    if string == 'last':
+    if string == "last":
         return string
     try:
         return int(string)
@@ -49,26 +54,33 @@
 
 
 def pytest_addoption(parser):
-    group = parser.getgroup('randomly', 'Randomizes tests')
+    group = parser.getgroup("randomly", "Randomizes tests")
     group._addoption(
-        '--randomly-seed', action='store', dest='randomly_seed',
-        default=str(default_seed), type=seed_type,
+        "--randomly-seed",
+        action="store",
+        dest="randomly_seed",
+        default=str(default_seed),
+        type=seed_type,
         help="""Set the seed that pytest-randomly uses (int), or pass the
                 special value 'last' to reuse the seed from the previous run.
                 Default behaviour: use int(time.time()), so the seed is
-                different on each run."""
+                different on each run.""",
     )
     group._addoption(
-        '--randomly-dont-reset-seed', action='store_false',
-        dest='randomly_reset_seed', default=True,
+        "--randomly-dont-reset-seed",
+        action="store_false",
+        dest="randomly_reset_seed",
+        default=True,
         help="""Stop pytest-randomly from resetting random.seed() at the
                 start of every test context (e.g. TestCase) and individual
-                test."""
+                test.""",
     )
     group._addoption(
-        '--randomly-dont-reorganize', action='store_false',
-        dest='randomly_reorganize', default=True,
-        help="Stop pytest-randomly from randomly reorganizing the test order."
+        "--randomly-dont-reorganize",
+        action="store_false",
+        dest="randomly_reorganize",
+        default=True,
+        help="Stop pytest-randomly from randomly reorganizing the test order.",
     )
 
 
@@ -76,8 +88,12 @@
 np_random_states = {}
 
 
+entrypoint_reseeds = None
+
+
 def _reseed(config, offset=0):
-    seed = config.getoption('randomly_seed') + offset
+    global entrypoint_reseeds
+    seed = config.getoption("randomly_seed") + offset
     if seed not in random_states:
         random.seed(seed)
         random_states[seed] = random.getstate()
@@ -97,36 +113,43 @@
         else:
             np_random.set_state(np_random_states[seed])
 
+    if entrypoint_reseeds is None:
+        entrypoint_reseeds = [
+            e.load() for e in 
entrypoints.get_group_all("pytest_randomly.random_seeder")
+        ]
+    for reseed in entrypoint_reseeds:
+        reseed(seed)
+
 
 def pytest_report_header(config):
-    seed_value = config.getoption('randomly_seed')
-    if seed_value == 'last':
-        seed = config.cache.get('randomly_seed', default_seed)
+    seed_value = config.getoption("randomly_seed")
+    if seed_value == "last":
+        seed = config.cache.get("randomly_seed", default_seed)
     else:
         seed = seed_value
-    config.cache.set('randomly_seed', seed)
+    config.cache.set("randomly_seed", seed)
     config.option.randomly_seed = seed
     _reseed(config)
     return "Using --randomly-seed={0}".format(seed)
 
 
 def pytest_runtest_setup(item):
-    if item.config.getoption('randomly_reset_seed'):
+    if item.config.getoption("randomly_reset_seed"):
         _reseed(item.config, -1)
 
 
 def pytest_runtest_call(item):
-    if item.config.getoption('randomly_reset_seed'):
+    if item.config.getoption("randomly_reset_seed"):
         _reseed(item.config)
 
 
 def pytest_runtest_teardown(item):
-    if item.config.getoption('randomly_reset_seed'):
+    if item.config.getoption("randomly_reset_seed"):
         _reseed(item.config, 1)
 
 
 def pytest_collection_modifyitems(session, config, items):
-    if not config.getoption('randomly_reorganize'):
+    if not config.getoption("randomly_reorganize"):
         return
 
     _reseed(config)
@@ -138,7 +161,7 @@
     for item in items:
 
         try:
-            item_module = getattr(item, 'module', None)
+            item_module = getattr(item, "module", None)
         except (ImportError, Collector.CollectError):
             item_module = None
 
@@ -165,9 +188,9 @@
 
     for item in items:
         if current_cls is None:
-            current_cls = getattr(item, 'cls', None)
+            current_cls = getattr(item, "cls", None)
 
-        if getattr(item, 'cls', None) != current_cls:
+        if getattr(item, "cls", None) != current_cls:
             random.shuffle(current_items)
             class_items.append(current_items)
             current_items = [item]
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/pytest-randomly-3.0.0/setup.cfg 
new/pytest-randomly-3.1.0/setup.cfg
--- old/pytest-randomly-3.0.0/setup.cfg 2019-04-05 11:32:22.000000000 +0200
+++ new/pytest-randomly-3.1.0/setup.cfg 2019-08-25 13:54:38.000000000 +0200
@@ -1,9 +1,14 @@
 [flake8]
-max-line-length = 120
+max-line-length = 80
+select = C,E,F,W,B,B950
+ignore = E203,E501,W503
 
 [isort]
-multi_line_output = 5
-not_skip = __init__.py
+include_trailing_comma = True
+force_grid_wrap = 0
+line_length = 88
+multi_line_output = 3
+use_parentheses = True
 
 [metadata]
 license_file = LICENSE
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/pytest-randomly-3.0.0/setup.py 
new/pytest-randomly-3.1.0/setup.py
--- old/pytest-randomly-3.0.0/setup.py  2019-03-26 21:10:58.000000000 +0100
+++ new/pytest-randomly-3.1.0/setup.py  2019-08-25 13:54:07.000000000 +0200
@@ -4,50 +4,51 @@
 
 
 def get_version(filename):
-    with open(filename, 'r') as fp:
+    with open(filename, "r") as fp:
         contents = fp.read()
     return re.search(r"__version__ = ['\"]([^'\"]+)['\"]", contents).group(1)
 
 
-version = get_version('pytest_randomly.py')
+version = get_version("pytest_randomly.py")
 
 
-with open('README.rst', 'r') as readme_file:
+with open("README.rst", "r") as readme_file:
     readme = readme_file.read()
 
-with open('HISTORY.rst', 'r') as history_file:
-    history = history_file.read().replace('.. :changelog:', '')
+with open("HISTORY.rst", "r") as history_file:
+    history = history_file.read().replace(".. :changelog:", "")
 
 setup(
-    name='pytest-randomly',
+    name="pytest-randomly",
     version=version,
-    description="Pytest plugin to randomly order tests and control "
-                "random.seed.",
-    long_description=readme + '\n\n' + history,
+    description="Pytest plugin to randomly order tests and control " 
"random.seed.",
+    long_description=readme + "\n\n" + history,
     author="Adam Johnson",
-    author_email='m...@adamj.eu',
-    url='https://github.com/pytest-dev/pytest-randomly',
-    py_modules=['pytest_randomly'],
+    author_email="m...@adamj.eu",
+    url="https://github.com/pytest-dev/pytest-randomly";,
+    project_urls={
+        "Changelog": (
+            
"https://github.com/pytest-dev/pytest-randomly/blob/master/HISTORY.rst";
+        )
+    },
+    py_modules=["pytest_randomly"],
     include_package_data=True,
-    install_requires=[
-        'pytest',
-    ],
-    python_requires='>=3.5',
+    install_requires=["entrypoints", "pytest"],
+    python_requires=">=3.5",
     license="BSD",
     zip_safe=False,
-    keywords='pytest, random, randomize, randomise, randomly',
-    entry_points={
-        'pytest11': ['randomly = pytest_randomly'],
-    },
+    keywords="pytest, random, randomize, randomise, randomly",
+    entry_points={"pytest11": ["randomly = pytest_randomly"]},
     classifiers=[
-        'Development Status :: 5 - Production/Stable',
-        'Framework :: Pytest',
-        'Intended Audience :: Developers',
-        'License :: OSI Approved :: BSD License',
-        'Natural Language :: English',
-        'Programming Language :: Python :: 3',
-        'Programming Language :: Python :: 3.5',
-        'Programming Language :: Python :: 3.6',
-        'Programming Language :: Python :: 3.7',
+        "Development Status :: 5 - Production/Stable",
+        "Framework :: Pytest",
+        "Intended Audience :: Developers",
+        "License :: OSI Approved :: BSD License",
+        "Natural Language :: English",
+        "Programming Language :: Python :: 3 :: Only",
+        "Programming Language :: Python :: 3",
+        "Programming Language :: Python :: 3.5",
+        "Programming Language :: Python :: 3.6",
+        "Programming Language :: Python :: 3.7",
     ],
 )
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/pytest-randomly-3.0.0/test_pytest_randomly.py 
new/pytest-randomly-3.1.0/test_pytest_randomly.py
--- old/pytest-randomly-3.0.0/test_pytest_randomly.py   2019-04-05 
11:28:59.000000000 +0200
+++ new/pytest-randomly-3.1.0/test_pytest_randomly.py   2019-08-25 
13:54:07.000000000 +0200
@@ -1,13 +1,22 @@
+from unittest.mock import Mock
+
 import pytest
 
-pytest_plugins = ['pytester']
+import pytest_randomly
+
+pytest_plugins = ["pytester"]
+
+
+@pytest.fixture(autouse=True)
+def reset_entrypoints_cache():
+    yield
+    pytest_randomly.entrypoint_reseeds = None
 
 
 @pytest.fixture
 def ourtestdir(testdir):
-    testdir.tmpdir.join('pytest.ini').write(
-        '[pytest]\n'
-        'console_output_style = classic'
+    testdir.tmpdir.join("pytest.ini").write(
+        "[pytest]\n" "console_output_style = classic"
     )
 
     # Change from default running pytest in-process to running in a subprocess
@@ -33,17 +42,13 @@
 
 def test_it_reports_a_header_when_not_set(simpletestdir):
     out = simpletestdir.runpytest()
-    assert len([
-        x for x in out.outlines if x.startswith('Using --randomly-seed=')
-    ]) == 1
+    assert len([x for x in out.outlines if x.startswith("Using 
--randomly-seed=")]) == 1
 
 
 def test_it_reports_a_header_when_set(simpletestdir):
-    out = simpletestdir.runpytest('--randomly-seed=10')
-    lines = [x for x in out.outlines if x.startswith('Using --randomly-seed=')]
-    assert lines == [
-        'Using --randomly-seed=10'
-    ]
+    out = simpletestdir.runpytest("--randomly-seed=10")
+    lines = [x for x in out.outlines if x.startswith("Using --randomly-seed=")]
+    assert lines == ["Using --randomly-seed=10"]
 
 
 def test_it_reuses_the_same_random_seed_per_test(ourtestdir):
@@ -66,7 +71,7 @@
                 assert test_b.num == test_a.num
         """
     )
-    out = ourtestdir.runpytest('--randomly-dont-reorganize')
+    out = ourtestdir.runpytest("--randomly-dont-reorganize")
     out.assert_outcomes(passed=2, failed=0)
 
 
@@ -79,9 +84,11 @@
     )
     out = ourtestdir.runpytest()
     out.assert_outcomes(passed=1, failed=0)
-    seed_line = [x for x in out.stdout.lines if x.startswith('Using 
--randomly-seed=')][0]
+    seed_line = [x for x in out.stdout.lines if x.startswith("Using 
--randomly-seed=")][
+        0
+    ]
 
-    out = ourtestdir.runpytest('--randomly-seed=last')
+    out = ourtestdir.runpytest("--randomly-seed=last")
     out.assert_outcomes(passed=1, failed=0)
     out.stdout.fnmatch_lines([seed_line])
 
@@ -93,13 +100,13 @@
             pass
         """
     )
-    out = ourtestdir.runpytest('--randomly-seed=33')
+    out = ourtestdir.runpytest("--randomly-seed=33")
     out.assert_outcomes(passed=1, failed=0)
-    out.stdout.fnmatch_lines(['Using --randomly-seed=33'])
+    out.stdout.fnmatch_lines(["Using --randomly-seed=33"])
 
-    out = ourtestdir.runpytest('--randomly-seed=last')
+    out = ourtestdir.runpytest("--randomly-seed=last")
     out.assert_outcomes(passed=1, failed=0)
-    out.stdout.fnmatch_lines(['Using --randomly-seed=33'])
+    out.stdout.fnmatch_lines(["Using --randomly-seed=33"])
 
 
 def test_passing_nonsense_for_randomly_seed(ourtestdir):
@@ -109,11 +116,16 @@
             pass
         """
     )
-    out = ourtestdir.runpytest('--randomly-seed=invalidvalue')
+    out = ourtestdir.runpytest("--randomly-seed=invalidvalue")
     assert out.ret != 0
-    out.stderr.fnmatch_lines([
-        "pytest.py: error: argument --randomly-seed: 'invalidvalue' is not an 
integer or the string 'last'"
-    ])
+    out.stderr.fnmatch_lines(
+        [
+            (
+                "pytest.py: error: argument --randomly-seed: 'invalidvalue' "
+                + "is not an integer or the string 'last'"
+            )
+        ]
+    )
 
 
 def test_it_resets_the_random_seed_at_the_start_of_test_classes(ourtestdir):
@@ -205,7 +217,7 @@
         """
     )
     out = ourtestdir.runpytest(
-        '--randomly-dont-reset-seed', '--randomly-dont-reorganize',
+        "--randomly-dont-reset-seed", "--randomly-dont-reorganize"
     )
     out.assert_outcomes(passed=2, failed=0)
 
@@ -215,22 +227,17 @@
         def test_it():
             pass
     """
-    ourtestdir.makepyfile(
-        test_a=code,
-        test_b=code,
-        test_c=code,
-        test_d=code,
-    )
-    args = ['-v', '--randomly-seed=15']
+    ourtestdir.makepyfile(test_a=code, test_b=code, test_c=code, test_d=code)
+    args = ["-v", "--randomly-seed=15"]
 
     out = ourtestdir.runpytest(*args)
 
     out.assert_outcomes(passed=4, failed=0)
     assert out.outlines[8:12] == [
-        'test_d.py::test_it PASSED',
-        'test_c.py::test_it PASSED',
-        'test_a.py::test_it PASSED',
-        'test_b.py::test_it PASSED',
+        "test_d.py::test_it PASSED",
+        "test_c.py::test_it PASSED",
+        "test_a.py::test_it PASSED",
+        "test_b.py::test_it PASSED",
     ]
 
 
@@ -239,23 +246,18 @@
         def test_it():
             pass
     """
-    ourtestdir.makepyfile(
-        test_a=code,
-        test_b=code,
-        test_c=code,
-        test_d=code,
-    )
-    args = ['-v', '--randomly-seed=15']
+    ourtestdir.makepyfile(test_a=code, test_b=code, test_c=code, test_d=code)
+    args = ["-v", "--randomly-seed=15"]
 
-    args.append('--randomly-dont-reset-seed')
+    args.append("--randomly-dont-reset-seed")
     out = ourtestdir.runpytest(*args)
 
     out.assert_outcomes(passed=4, failed=0)
     assert out.outlines[8:12] == [
-        'test_d.py::test_it PASSED',
-        'test_c.py::test_it PASSED',
-        'test_a.py::test_it PASSED',
-        'test_b.py::test_it PASSED',
+        "test_d.py::test_it PASSED",
+        "test_c.py::test_it PASSED",
+        "test_a.py::test_it PASSED",
+        "test_b.py::test_it PASSED",
     ]
 
 
@@ -285,16 +287,16 @@
                 pass
         """
     )
-    args = ['-v', '--randomly-seed=15']
+    args = ["-v", "--randomly-seed=15"]
 
     out = ourtestdir.runpytest(*args)
 
     out.assert_outcomes(passed=4, failed=0)
     assert out.outlines[8:12] == [
-        'test_one.py::D::test_d PASSED',
-        'test_one.py::C::test_c PASSED',
-        'test_one.py::A::test_a PASSED',
-        'test_one.py::B::test_b PASSED',
+        "test_one.py::D::test_d PASSED",
+        "test_one.py::C::test_c PASSED",
+        "test_one.py::A::test_a PASSED",
+        "test_one.py::B::test_b PASSED",
     ]
 
 
@@ -317,16 +319,16 @@
                 pass
         """
     )
-    args = ['-v', '--randomly-seed=15']
+    args = ["-v", "--randomly-seed=15"]
 
     out = ourtestdir.runpytest(*args)
 
     out.assert_outcomes(passed=4, failed=0)
     assert out.outlines[8:12] == [
-        'test_one.py::T::test_d PASSED',
-        'test_one.py::T::test_c PASSED',
-        'test_one.py::T::test_a PASSED',
-        'test_one.py::T::test_b PASSED',
+        "test_one.py::T::test_d PASSED",
+        "test_one.py::T::test_c PASSED",
+        "test_one.py::T::test_a PASSED",
+        "test_one.py::T::test_b PASSED",
     ]
 
 
@@ -346,16 +348,16 @@
             pass
         """
     )
-    args = ['-v', '--randomly-seed=15']
+    args = ["-v", "--randomly-seed=15"]
 
     out = ourtestdir.runpytest(*args)
 
     out.assert_outcomes(passed=4, failed=0)
     assert out.outlines[8:12] == [
-        'test_one.py::test_d PASSED',
-        'test_one.py::test_c PASSED',
-        'test_one.py::test_a PASSED',
-        'test_one.py::test_b PASSED',
+        "test_one.py::test_d PASSED",
+        "test_one.py::test_c PASSED",
+        "test_one.py::test_a PASSED",
+        "test_one.py::test_b PASSED",
     ]
 
 
@@ -380,16 +382,16 @@
             pass
         """
     )
-    args = ['-v', '--randomly-seed=15']
+    args = ["-v", "--randomly-seed=15"]
 
     out = ourtestdir.runpytest(*args)
 
     out.assert_outcomes(passed=4, failed=0)
     assert out.outlines[8:12] == [
-        'test_one.py::test_d PASSED',
-        'test_one.py::test_c PASSED',
-        'test_one.py::test_a PASSED',
-        'test_one.py::test_b PASSED',
+        "test_one.py::test_d PASSED",
+        "test_one.py::test_c PASSED",
+        "test_one.py::test_a PASSED",
+        "test_one.py::test_b PASSED",
     ]
 
 
@@ -411,13 +413,13 @@
             return 9002
         """
     )
-    args = ['-v', '--doctest-modules', '--randomly-seed=5']
+    args = ["-v", "--doctest-modules", "--randomly-seed=5"]
 
     out = ourtestdir.runpytest(*args)
     out.assert_outcomes(passed=2)
     assert out.outlines[8:10] == [
-        'test_one.py::test_one.bar PASSED',
-        'test_one.py::test_one.foo PASSED',
+        "test_one.py::test_one.bar PASSED",
+        "test_one.py::test_one.foo PASSED",
     ]
 
 
@@ -459,28 +461,32 @@
             )
         """
     )
-    args = ['-v']
+    args = ["-v"]
 
     out = ourtestdir.runpytest(*args)
     out.assert_outcomes(passed=2)
 
 
 def test_doctests_in_txt_files_reordered(ourtestdir):
-    ourtestdir.tmpdir.join('test.txt').write('''\
+    ourtestdir.tmpdir.join("test.txt").write(
+        """\
         >>> 2 + 2
         4
-        ''')
-    ourtestdir.tmpdir.join('test2.txt').write('''\
+        """
+    )
+    ourtestdir.tmpdir.join("test2.txt").write(
+        """\
         >>> 2 - 2
         0
-        ''')
-    args = ['-v', '--randomly-seed=1']
+        """
+    )
+    args = ["-v", "--randomly-seed=1"]
 
     out = ourtestdir.runpytest(*args)
     out.assert_outcomes(passed=2)
     assert out.outlines[8:10] == [
-        'test2.txt::test2.txt PASSED',
-        'test.txt::test.txt PASSED',
+        "test2.txt::test2.txt PASSED",
+        "test.txt::test.txt PASSED",
     ]
 
 
@@ -532,14 +538,14 @@
             assert random.getstate() == state_at_seed_two
         """
     )
-    args = ['--randomly-seed=2']
+    args = ["--randomly-seed=2"]
 
     out = ourtestdir.runpytest(*args)
     out.assert_outcomes(passed=2)
 
-    out = ourtestdir.runpytest('-m', 'one', *args)
+    out = ourtestdir.runpytest("-m", "one", *args)
     out.assert_outcomes(passed=1)
-    out = ourtestdir.runpytest('-m', 'two', *args)
+    out = ourtestdir.runpytest("-m", "two", *args)
     out.assert_outcomes(passed=1)
 
 
@@ -564,7 +570,7 @@
         """
     )
 
-    out = ourtestdir.runpytest('--randomly-seed=1')
+    out = ourtestdir.runpytest("--randomly-seed=1")
     out.assert_outcomes(passed=2)
 
 
@@ -583,7 +589,7 @@
         """
     )
 
-    out = ourtestdir.runpytest('--randomly-seed=1')
+    out = ourtestdir.runpytest("--randomly-seed=1")
     out.assert_outcomes(passed=2)
 
 
@@ -600,7 +606,7 @@
         """
     )
 
-    out = ourtestdir.runpytest('--randomly-seed=1')
+    out = ourtestdir.runpytest("--randomly-seed=1")
     out.assert_outcomes(passed=2)
 
 
@@ -616,3 +622,41 @@
     modcol = testdir.getmodulecol("pytest_plugins='xasdlkj',")
     with pytest.raises(ImportError):
         modcol.obj
+
+
+def test_entrypoint_injection(testdir, monkeypatch):
+    """Test that registered entry points are seeded"""
+
+    class _FakeEntryPoint(object):
+        """Minimal surface of Entry point API to allow testing"""
+
+        def __init__(self, name, obj):
+            self.name = name
+            self._obj = obj
+
+        def load(self):
+            return self._obj
+
+    class _FakeEntrypoints(object):
+        """Minimal surface of entrypoints to allow testing"""
+
+        def __init__(self):
+            self._entrypoints = []
+
+        def add_entry_point(self, name, function):
+            self._entrypoints.append(_FakeEntryPoint(name, function))
+
+        def get_group_all(self, name):
+            assert name == "pytest_randomly.random_seeder"
+            return self._entrypoints
+
+    fake_entrypoints = _FakeEntrypoints()
+    monkeypatch.setattr(pytest_randomly, "entrypoints", fake_entrypoints)
+    reseed = Mock()
+    fake_entrypoints.add_entry_point("test_seeder", reseed)
+
+    # Need to run in-process so that monkeypatching works
+    testdir.runpytest("--randomly-seed=1")
+    assert reseed.call_args == ((1,),)
+    testdir.runpytest("--randomly-seed=424242")
+    assert reseed.call_args == ((424242,),)


Reply via email to