dev-python/pyudev: Restore 0.22-r1 with fixed patch

Closes: https://bugs.gentoo.org/824630
Copyright: Sony Interactive Entertainment Inc.
Package-Manager: Portage-3.0.28, Repoman-3.0.3
Signed-off-by: Patrick McLean <chutzpah@gentoo.org>
This commit is contained in:
Patrick McLean
2021-11-19 16:29:36 -08:00
committed by Patrick McLean
parent 8bfb20fcdd
commit b151db9846
3 changed files with 275 additions and 0 deletions

View File

@@ -0,0 +1,98 @@
diff --git a/tests/_device_tests/_attributes_tests.py b/tests/_device_tests/_attributes_tests.py
index 23fa6da..7baf043 100644
--- a/tests/_device_tests/_attributes_tests.py
+++ b/tests/_device_tests/_attributes_tests.py
@@ -50,7 +50,7 @@ class TestAttributes(object):
"""
@given(_CONTEXT_STRATEGY, strategies.sampled_from(_DEVICE_DATA))
- @settings(max_examples=5)
+ @settings(max_examples=5, deadline=30000)
def test_getitem(self, a_context, device_datum):
"""
Test that attribute value exists and is instance of bytes.
@@ -60,7 +60,7 @@ def test_getitem(self, a_context, device_datum):
for key in device_datum.attributes.keys())
@given(strategies.sampled_from(_DEVICES))
- @settings(max_examples=5)
+ @settings(max_examples=5, deadline=30000)
def test_getitem_nonexisting(self, a_device):
"""
Test behavior when corresponding value is non-existant.
@@ -87,7 +87,7 @@ def test_non_iterable(self, a_device):
a_device.attributes['key']
@given(_CONTEXT_STRATEGY, strategies.sampled_from(_DEVICE_DATA))
- @settings(max_examples=5)
+ @settings(max_examples=5, deadline=30000)
def test_asstring(self, a_context, device_datum):
"""
Test that attribute exists for actual device and is unicode.
@@ -97,7 +97,7 @@ def test_asstring(self, a_context, device_datum):
for key in device_datum.attributes.keys())
@given(_CONTEXT_STRATEGY, strategies.sampled_from(_DEVICE_DATA))
- @settings(max_examples=10)
+ @settings(max_examples=10, deadline=30000)
def test_asint(self, a_context, device_datum):
"""
Test that integer result is an int or ValueError raised.
@@ -111,7 +111,7 @@ def test_asint(self, a_context, device_datum):
device.attributes.asint(key)
@given(_CONTEXT_STRATEGY, strategies.sampled_from(_DEVICE_DATA))
- @settings(max_examples=5)
+ @settings(max_examples=5, deadline=30000)
def test_asbool(self, a_context, device_datum):
"""
Test that bool result is a bool or ValueError raised.
diff --git a/tests/_device_tests/_device_tests.py b/tests/_device_tests/_device_tests.py
index b9a84c6..2ce6751 100644
--- a/tests/_device_tests/_device_tests.py
+++ b/tests/_device_tests/_device_tests.py
@@ -352,7 +352,7 @@ def test_key_subset(self, a_context, device_datum):
frozenset(device.properties.keys())
@given(_CONTEXT_STRATEGY, strategies.sampled_from(_DEVICE_DATA))
- @settings(max_examples=1)
+ @settings(max_examples=1, deadline=30000)
def test_getitem(self, a_context, device_datum):
device = Devices.from_path(a_context, device_datum.device_path)
for prop in device_datum.properties:
@@ -372,7 +372,7 @@ def test_getitem(self, a_context, device_datum):
@pytest.mark.skipif(
len(_device_data) == 0, reason='no device with a DEVNAME property')
@given(_CONTEXT_STRATEGY, strategies.sampled_from(_device_data))
- @settings(max_examples=5)
+ @settings(max_examples=5, deadline=30000)
def test_getitem_devname(self, a_context, device_datum):
device = Devices.from_path(a_context, device_datum.device_path)
data_devname = os.path.join(a_context.device_path,
@@ -382,7 +382,7 @@ def test_getitem_devname(self, a_context, device_datum):
assert device_devname == data_devname
@given(strategies.sampled_from(_DEVICES))
- @settings(max_examples=5)
+ @settings(max_examples=5, deadline=30000)
def test_getitem_nonexisting(self, a_device):
with pytest.raises(KeyError) as excinfo:
# pylint: disable=pointless-statement
@@ -390,7 +390,7 @@ def test_getitem_nonexisting(self, a_device):
assert str(excinfo.value) == repr('a non-existing property')
@given(_CONTEXT_STRATEGY, strategies.sampled_from(_DEVICE_DATA))
- @settings(max_examples=5)
+ @settings(max_examples=5, deadline=30000)
def test_asint(self, a_context, device_datum):
device = Devices.from_path(a_context, device_datum.device_path)
for prop, value in device_datum.properties.items():
@@ -403,7 +403,7 @@ def test_asint(self, a_context, device_datum):
assert device.properties.asint(prop) == value
@given(_CONTEXT_STRATEGY, strategies.sampled_from(_DEVICE_DATA))
- @settings(max_examples=5)
+ @settings(max_examples=5, deadline=30000)
def test_asbool(self, a_context, device_datum):
"""
Test that values of 1 and 0 get properly interpreted as bool

View File

@@ -0,0 +1,126 @@
commit a35c394f7f4eb714eeaab1b8ed7977f822e29fa9
Author: mulhern <amulhern@redhat.com>
Date: Wed May 2 15:50:45 2018 -0400
Get rid of all test_match_attribute_* methods
These tests are rendered flaky by the volatility of attribute values.
Signed-off-by: mulhern <amulhern@redhat.com>
diff --git a/tests/test_enumerate.py b/tests/test_enumerate.py
index f054799..c9c6a67 100644
--- a/tests/test_enumerate.py
+++ b/tests/test_enumerate.py
@@ -200,77 +200,6 @@ def test_match_property_bool(self, context, pair):
for device in devices
)
- @failed_health_check_wrapper
- @given(_CONTEXT_STRATEGY, _ATTRIBUTE_STRATEGY)
- @settings(max_examples=50)
- def test_match_attribute_nomatch_unfulfillable(self, context, pair):
- """
- Match and no match for a key/value gives empty set.
- """
- key, value = pair
- devices = context.list_devices()
- devices.match_attribute(key, value)
- devices.match_attribute(key, value, nomatch=True)
- assert not list(devices)
-
- @failed_health_check_wrapper
- @given(_CONTEXT_STRATEGY, _ATTRIBUTE_STRATEGY)
- @settings(max_examples=50)
- def test_match_attribute_nomatch_complete(self, context, pair):
- """
- Test that w/ respect to the universe of devices returned by
- list_devices() a match and its inverse are complements of each other.
- """
- key, value = pair
- m_devices = frozenset(context.list_devices().match_attribute(
- key, value))
- nm_devices = frozenset(context.list_devices().match_attribute(
- key, value, nomatch=True))
- _test_intersection_and_union(context, m_devices, nm_devices)
-
- @failed_health_check_wrapper
- @given(_CONTEXT_STRATEGY, _ATTRIBUTE_STRATEGY)
- @settings(max_examples=50)
- def test_match_attribute_string(self, context, pair):
- """
- Test that matching attribute as string works.
- """
- key, value = pair
- devices = context.list_devices().match_attribute(key, value)
- assert all(device.attributes.get(key) == value for device in devices)
-
- @failed_health_check_wrapper
- @given(_CONTEXT_STRATEGY,
- _ATTRIBUTE_STRATEGY.filter(lambda x: _is_int(x[1])))
- @settings(max_examples=50)
- def test_match_attribute_int(self, context, pair):
- """
- Test matching integer attribute.
- """
- key, value = pair
- int_value = int(value)
- devices = context.list_devices().match_attribute(key, int_value)
- for device in devices:
- attributes = device.attributes
- assert attributes.get(key) == value
- assert device.attributes.asint(key) == int_value
-
- @failed_health_check_wrapper
- @given(_CONTEXT_STRATEGY,
- _ATTRIBUTE_STRATEGY.filter(lambda x: _is_bool(x[1])))
- @settings(max_examples=50)
- def test_match_attribute_bool(self, context, pair):
- """
- Test matching boolean attribute.
- """
- key, value = pair
- bool_value = True if int(value) == 1 else False
- devices = context.list_devices().match_attribute(key, bool_value)
- for device in devices:
- attributes = device.attributes
- assert attributes.get(key) == value
- assert attributes.asbool(key) == bool_value
-
@_UDEV_TEST(154, "test_match_tag")
@failed_health_check_wrapper
@given(_CONTEXT_STRATEGY, _TAG_STRATEGY)
@@ -335,33 +264,6 @@ def test_combined_property_matches(self, context, ppairs):
)
)
- @given(_CONTEXT_STRATEGY,
- strategies.lists(
- elements=_ATTRIBUTE_STRATEGY,
- min_size=2,
- max_size=3,
- unique_by=lambda p: p[0]))
- @settings(max_examples=20)
- def test_combined_attribute_matches(self, context, apairs):
- """
- Test for conjunction of attributes.
-
- If matching multiple attributes, then the result is the intersection of
- the matching sets, i.e., the resulting filter is a conjunction.
- """
- enumeration = context.list_devices()
-
- for key, value in apairs:
- enumeration.match_attribute(key, value)
-
- _test_direct_and_complement(
- context,
- frozenset(enumeration),
- lambda d: all(
- d.attributes.get(key) == value for key, value in apairs
- )
- )
-
@given(_CONTEXT_STRATEGY,
strategies.lists(
elements=_MATCH_PROPERTY_STRATEGY,

View File

@@ -0,0 +1,51 @@
# Copyright 1999-2021 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2
EAPI=7
PYTHON_COMPAT=( python3_{7..10} )
inherit distutils-r1
DESCRIPTION="Python binding to libudev"
HOMEPAGE="https://pyudev.readthedocs.io/en/latest/ https://github.com/pyudev/pyudev"
SRC_URI="mirror://pypi/${PN:0:1}/${PN}/${P}.tar.gz"
LICENSE="LGPL-2.1"
SLOT="0"
KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~ia64 ~mips ~ppc ~ppc64 ~sparc ~x86"
IUSE="qt5"
RDEPEND="
dev-python/six[${PYTHON_USEDEP}]
virtual/udev
qt5? ( dev-python/PyQt5[${PYTHON_USEDEP}] )
"
DEPEND="${RDEPEND}
dev-python/setuptools[${PYTHON_USEDEP}]
test? (
dev-python/docutils[${PYTHON_USEDEP}]
dev-python/hypothesis[${PYTHON_USEDEP}]
dev-python/mock[${PYTHON_USEDEP}]
)"
DOCS=( CHANGES.rst README.rst )
PATCHES=(
"${FILESDIR}/pyudev-0.22-fix-hypothesis.patch"
)
distutils_enable_tests pytest
python_prepare_all() {
if use test; then
ewarn "If your PORTAGE_TMPDIR is longer in length then '/var/tmp/',"
ewarn "change it to /var/tmp to ensure tests will pass."
fi
# tests are known to pass then fail on alternate runs
# tests: fix run_path
sed -i -e "s|== \('/run/udev'\)|in (\1,'/dev/.udev')|g" \
tests/test_core.py || die
distutils-r1_python_prepare_all
}