From 89f45c8c9466c392504f75985e3bb4759e22820da23730fea7bf8d697b119332 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mark=C3=A9ta=20Machov=C3=A1?= Date: Wed, 31 Mar 2021 14:00:36 +0000 Subject: [PATCH] Accepting request 882035 from home:bnavigator:branches:devel:languages:python - Add h2-pr1248-disable-hypothesis-healthcheck.patch to disable hypthesis health check failures. Thanks to the Fedora maintainer. gh#python-hyper/h2#1248 OBS-URL: https://build.opensuse.org/request/show/882035 OBS-URL: https://build.opensuse.org/package/show/devel:languages:python/python-h2?expand=0&rev=30 --- ...r1248-disable-hypothesis-healthcheck.patch | 109 ++++++++++++++++++ python-h2.changes | 7 ++ python-h2.spec | 7 +- 3 files changed, 120 insertions(+), 3 deletions(-) create mode 100644 h2-pr1248-disable-hypothesis-healthcheck.patch diff --git a/h2-pr1248-disable-hypothesis-healthcheck.patch b/h2-pr1248-disable-hypothesis-healthcheck.patch new file mode 100644 index 0000000..046657c --- /dev/null +++ b/h2-pr1248-disable-hypothesis-healthcheck.patch @@ -0,0 +1,109 @@ +From 0646279dab694a89562846c810202ce2c0b49be3 Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Miro=20Hron=C4=8Dok?= +Date: Mon, 8 Mar 2021 19:16:26 +0100 +Subject: [PATCH] Workaround the issues with hypothesis 6.6 + +Hypothesis 6.6 will produce: + + E hypothesis.errors.FailedHealthCheck: test/test_flow_control_window.py::TestAutomaticFlowControl::test_mixing_update_forms uses the 'frame_factory' fixture, which is reset between function calls but not between test cases generated by `@given(...)`. You can change it to a module- or session-scoped fixture if it is safe to reuse; if not we recommend using a context manager inside your test function. See https://docs.pytest.org/en/latest/fixture.html#sharing-test-data for details on fixture scope. + E See https://hypothesis.readthedocs.io/en/latest/healthchecks.html for more information about this. If you want to disable just this health check, add HealthCheck.function_scoped_fixture to the suppress_health_check settings for this test. + +Since the tests already workaround the problem, +acknowledging https://github.com/HypothesisWorks/hypothesis-python/issues/377, +we can safely disable the check. + +Hypothesis 5.49 introduced the function_scoped_fixture health check value, +hence it is now the lowest required version of hypothesis. +--- + test/test_basic_logic.py | 3 ++- + test/test_flow_control_window.py | 7 ++++++- + tox.ini | 2 +- + 3 files changed, 9 insertions(+), 3 deletions(-) + +diff --git a/test/test_basic_logic.py b/test/test_basic_logic.py +index fb54fe50..8c8f3b7d 100644 +--- a/test/test_basic_logic.py ++++ b/test/test_basic_logic.py +@@ -21,7 +21,7 @@ + + from . import helpers + +-from hypothesis import given ++from hypothesis import given, settings, HealthCheck + from hypothesis.strategies import integers + + +@@ -790,6 +790,7 @@ def test_headers_are_lowercase(self, frame_factory): + assert c.data_to_send() == expected_frame.serialize() + + @given(frame_size=integers(min_value=2**14, max_value=(2**24 - 1))) ++ @settings(suppress_health_check=[HealthCheck.function_scoped_fixture]) + def test_changing_max_frame_size(self, frame_factory, frame_size): + """ + When the user changes the max frame size and the change is ACKed, the +diff --git a/test/test_flow_control_window.py b/test/test_flow_control_window.py +index 24b345aa..7a445af1 100644 +--- a/test/test_flow_control_window.py ++++ b/test/test_flow_control_window.py +@@ -7,7 +7,7 @@ + """ + import pytest + +-from hypothesis import given ++from hypothesis import given, settings, HealthCheck + from hypothesis.strategies import integers + + import h2.config +@@ -715,6 +715,7 @@ def _setup_connection_and_send_headers(self, frame_factory): + return c + + @given(stream_id=integers(max_value=0)) ++ @settings(suppress_health_check=[HealthCheck.function_scoped_fixture]) + def test_must_acknowledge_for_stream(self, frame_factory, stream_id): + """ + Flow control acknowledgements must be done on a stream ID that is +@@ -740,6 +741,7 @@ def test_must_acknowledge_for_stream(self, frame_factory, stream_id): + ) + + @given(size=integers(max_value=-1)) ++ @settings(suppress_health_check=[HealthCheck.function_scoped_fixture]) + def test_cannot_acknowledge_less_than_zero(self, frame_factory, size): + """ + The user must acknowledge at least 0 bytes. +@@ -837,6 +839,7 @@ def test_acknowledging_streams_we_never_saw(self, frame_factory): + c.acknowledge_received_data(2048, stream_id=101) + + @given(integers(min_value=1025, max_value=DEFAULT_FLOW_WINDOW)) ++ @settings(suppress_health_check=[HealthCheck.function_scoped_fixture]) + def test_acknowledging_1024_bytes_when_empty_increments(self, + frame_factory, + increment): +@@ -873,6 +876,7 @@ def test_acknowledging_1024_bytes_when_empty_increments(self, + # This test needs to use a lower cap, because otherwise the algo will + # increment the stream window anyway. + @given(integers(min_value=1025, max_value=(DEFAULT_FLOW_WINDOW // 4) - 1)) ++ @settings(suppress_health_check=[HealthCheck.function_scoped_fixture]) + def test_connection_only_empty(self, frame_factory, increment): + """ + If the connection flow control window is empty, but the stream flow +@@ -916,6 +920,7 @@ def test_connection_only_empty(self, frame_factory, increment): + assert c.data_to_send() == expected_data + + @given(integers(min_value=1025, max_value=DEFAULT_FLOW_WINDOW)) ++ @settings(suppress_health_check=[HealthCheck.function_scoped_fixture]) + def test_mixing_update_forms(self, frame_factory, increment): + """ + If the user mixes ackowledging data with manually incrementing windows, +diff --git a/tox.ini b/tox.ini +index 69291df6..1f5e538b 100644 +--- a/tox.ini ++++ b/tox.ini +@@ -15,7 +15,7 @@ deps = + pytest==6.0.2 + pytest-cov==2.10.1 + pytest-xdist==2.1.0 +- hypothesis>=5.5,<6 ++ hypothesis>=5.49,<7 + commands = + pytest --cov-report=xml --cov-report=term --cov=h2 {posargs} + diff --git a/python-h2.changes b/python-h2.changes index d99dce5..63f941b 100644 --- a/python-h2.changes +++ b/python-h2.changes @@ -1,3 +1,10 @@ +------------------------------------------------------------------- +Mon Mar 29 19:50:36 UTC 2021 - Ben Greiner + +- Add h2-pr1248-disable-hypothesis-healthcheck.patch to disable + hypthesis health check failures. Thanks to the Fedora maintainer. + gh#python-hyper/h2#1248 + ------------------------------------------------------------------- Sat Nov 21 17:07:56 UTC 2020 - John Vandenberg diff --git a/python-h2.spec b/python-h2.spec index ccbc52d..2bcc5db 100644 --- a/python-h2.spec +++ b/python-h2.spec @@ -1,7 +1,7 @@ # # spec file for package python-h2 # -# Copyright (c) 2020 SUSE LLC +# Copyright (c) 2021 SUSE LLC # # All modifications and additions to the file contributed by third parties # remain the property of their copyright owners, unless otherwise agreed @@ -25,9 +25,10 @@ Summary: HTTP/2 State-Machine based protocol implementation License: MIT URL: https://github.com/python-hyper/hyper-h2 Source0: https://files.pythonhosted.org/packages/source/h/h2/h2-%{version}.tar.gz +Patch0: https://github.com/python-hyper/h2/pull/1248.patch#/h2-pr1248-disable-hypothesis-healthcheck.patch BuildRequires: %{python_module hpack >= 2.3} BuildRequires: %{python_module hyperframe >= 6.0} -BuildRequires: %{python_module hypothesis} +BuildRequires: %{python_module hypothesis >= 5.49} BuildRequires: %{python_module pytest} BuildRequires: fdupes BuildRequires: python-rpm-macros @@ -43,7 +44,7 @@ you choose to use, ensuring that you can speak HTTP/2 regardless of your programming paradigm. %prep -%setup -q -n h2-%{version} +%autosetup -p1 -n h2-%{version} %build %python_build