1
0

Accepting request 744731 from devel:languages:python

- Add pytest4-mhroncok.patch by Miro Hroncok from
  gh#html5lib/html5lib-python#414 to make testsuite passing under
  pytest4+.

- Replace %fdupes with plain %fdupes; hardlinks are better.

OBS-URL: https://build.opensuse.org/request/show/744731
OBS-URL: https://build.opensuse.org/package/show/openSUSE:Factory/python-html5lib?expand=0&rev=17
This commit is contained in:
Dominique Leuenberger 2019-11-04 16:14:15 +00:00 committed by Git OBS Bridge
commit 5d31c17e80
3 changed files with 163 additions and 5 deletions

143
pytest4-mhroncok.patch Normal file
View File

@ -0,0 +1,143 @@
From dd117cc62d961573e9867d79ae1c3461a42e6167 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Miro=20Hron=C4=8Dok?= <miro@hroncok.cz>
Date: Thu, 28 Mar 2019 01:45:43 +0100
Subject: [PATCH] Support pytest 4
Fixes https://github.com/html5lib/html5lib-python/issues/411
---
html5lib/tests/test_encoding.py | 4 ++--
html5lib/tests/test_sanitizer.py | 14 +++++++-------
html5lib/tests/test_serializer.py | 2 +-
html5lib/tests/test_stream.py | 7 ++++---
html5lib/tests/test_treewalkers.py | 2 +-
requirements-test.txt | 2 +-
tox.ini | 2 +-
7 files changed, 17 insertions(+), 16 deletions(-)
--- a/html5lib/tests/test_encoding.py
+++ b/html5lib/tests/test_encoding.py
@@ -94,13 +94,13 @@ def runPreScanEncodingTest(data, encodin
assert encoding == stream.charEncoding[0].name, errorMessage(data, encoding, stream.charEncoding[0].name)
-
+@pytest.mark.skip(reason="broken under pytest4")
def test_encoding():
for filename in get_data_files("encoding"):
tests = _TestData(filename, b"data", encoding=None)
for test in tests:
- yield (runParserEncodingTest, test[b'data'], test[b'encoding'])
- yield (runPreScanEncodingTest, test[b'data'], test[b'encoding'])
+ runParserEncodingTest(test[b'data'], test[b'encoding'])
+ runPreScanEncodingTest(test[b'data'], test[b'encoding'])
# pylint:disable=wrong-import-position
--- a/html5lib/tests/test_sanitizer.py
+++ b/html5lib/tests/test_sanitizer.py
@@ -67,19 +67,19 @@ def test_sanitizer():
'tfoot', 'th', 'thead', 'tr', 'select']:
continue # TODO
if tag_name == 'image':
- yield (runSanitizerTest, "test_should_allow_%s_tag" % tag_name,
+ runSanitizerTest("test_should_allow_%s_tag" % tag_name,
"<img title=\"1\"/>foo &lt;bad&gt;bar&lt;/bad&gt; baz",
"<%s title='1'>foo <bad>bar</bad> baz</%s>" % (tag_name, tag_name))
elif tag_name == 'br':
- yield (runSanitizerTest, "test_should_allow_%s_tag" % tag_name,
+ runSanitizerTest("test_should_allow_%s_tag" % tag_name,
"<br title=\"1\"/>foo &lt;bad&gt;bar&lt;/bad&gt; baz<br/>",
"<%s title='1'>foo <bad>bar</bad> baz</%s>" % (tag_name, tag_name))
elif tag_name in constants.voidElements:
- yield (runSanitizerTest, "test_should_allow_%s_tag" % tag_name,
+ runSanitizerTest("test_should_allow_%s_tag" % tag_name,
"<%s title=\"1\"/>foo &lt;bad&gt;bar&lt;/bad&gt; baz" % tag_name,
"<%s title='1'>foo <bad>bar</bad> baz</%s>" % (tag_name, tag_name))
else:
- yield (runSanitizerTest, "test_should_allow_%s_tag" % tag_name,
+ runSanitizerTest("test_should_allow_%s_tag" % tag_name,
"<%s title=\"1\">foo &lt;bad&gt;bar&lt;/bad&gt; baz</%s>" % (tag_name, tag_name),
"<%s title='1'>foo <bad>bar</bad> baz</%s>" % (tag_name, tag_name))
@@ -93,7 +93,7 @@ def test_sanitizer():
attribute_value = 'foo'
if attribute_name in sanitizer.attr_val_is_uri:
attribute_value = '%s://sub.domain.tld/path/object.ext' % sanitizer.allowed_protocols[0]
- yield (runSanitizerTest, "test_should_allow_%s_attribute" % attribute_name,
+ runSanitizerTest("test_should_allow_%s_attribute" % attribute_name,
"<p %s=\"%s\">foo &lt;bad&gt;bar&lt;/bad&gt; baz</p>" % (attribute_name, attribute_value),
"<p %s='%s'>foo <bad>bar</bad> baz</p>" % (attribute_name, attribute_value))
@@ -101,7 +101,7 @@ def test_sanitizer():
rest_of_uri = '//sub.domain.tld/path/object.ext'
if protocol == 'data':
rest_of_uri = 'image/png;base64,aGVsbG8gd29ybGQ='
- yield (runSanitizerTest, "test_should_allow_uppercase_%s_uris" % protocol,
+ runSanitizerTest("test_should_allow_uppercase_%s_uris" % protocol,
"<img src=\"%s:%s\">foo</a>" % (protocol, rest_of_uri),
"""<img src="%s:%s">foo</a>""" % (protocol, rest_of_uri))
@@ -110,7 +110,7 @@ def test_sanitizer():
if protocol == 'data':
rest_of_uri = 'image/png;base64,aGVsbG8gd29ybGQ='
protocol = protocol.upper()
- yield (runSanitizerTest, "test_should_allow_uppercase_%s_uris" % protocol,
+ runSanitizerTest("test_should_allow_uppercase_%s_uris" % protocol,
"<img src=\"%s:%s\">foo</a>" % (protocol, rest_of_uri),
"""<img src="%s:%s">foo</a>""" % (protocol, rest_of_uri))
--- a/html5lib/tests/test_serializer.py
+++ b/html5lib/tests/test_serializer.py
@@ -222,4 +222,4 @@ def test_serializer():
with open(filename) as fp:
tests = json.load(fp)
for test in tests['tests']:
- yield runSerializerTest, test["input"], test["expected"], test.get("options", {})
+ runSerializerTest(test["input"], test["expected"], test.get("options", {}))
--- a/html5lib/tests/test_stream.py
+++ b/html5lib/tests/test_stream.py
@@ -308,9 +308,10 @@ def test_invalid_codepoints(inp, num):
("'\\uD800\\uD800\\uD800'", 3),
("'a\\uD800a\\uD800a\\uD800a'", 3),
("'\\uDFFF\\uDBFF'", 2),
- pytest.mark.skipif(sys.maxunicode == 0xFFFF,
- ("'\\uDBFF\\uDFFF'", 2),
- reason="narrow Python")])
+ pytest.param(
+ "'\\uDBFF\\uDFFF'", 2,
+ marks=pytest.mark.skipif(sys.maxunicode == 0xFFFF,
+ reason="narrow Python"))])
def test_invalid_codepoints_surrogates(inp, num):
inp = eval(inp) # pylint:disable=eval-used
fp = StringIO(inp)
--- a/html5lib/tests/test_treewalkers.py
+++ b/html5lib/tests/test_treewalkers.py
@@ -99,7 +99,7 @@ def test_treewalker_six_mix():
for tree in sorted(treeTypes.items()):
for intext, attrs, expected in sm_tests:
- yield runTreewalkerEditTest, intext, expected, attrs, tree
+ runTreewalkerEditTest(intext, expected, attrs, tree)
@pytest.mark.parametrize("tree,char", itertools.product(sorted(treeTypes.items()), ["x", "\u1234"]))
--- a/requirements-test.txt
+++ b/requirements-test.txt
@@ -4,7 +4,7 @@ tox
flake8<3.0
-pytest==3.2.5
+pytest>=4.3,<4.4
coverage
pytest-expect>=1.1,<2.0
mock
--- a/tox.ini
+++ b/tox.ini
@@ -1,5 +1,5 @@
[tox]
-envlist = {py27,py33,py34,py35,py36,pypy}-{base,six19,optional}
+envlist = {py27,py34,py35,py36,py37,py38,pypy}-{base,six19,optional}
[testenv]
deps =

View File

@ -1,3 +1,15 @@
-------------------------------------------------------------------
Fri Nov 1 11:50:36 CET 2019 - Matej Cepl <mcepl@suse.com>
- Add pytest4-mhroncok.patch by Miro Hroncok from
gh#html5lib/html5lib-python#414 to make testsuite passing under
pytest4+.
-------------------------------------------------------------------
Mon Oct 14 13:39:22 UTC 2019 - Matej Cepl <mcepl@suse.com>
- Replace %fdupes with plain %fdupes; hardlinks are better.
-------------------------------------------------------------------
Fri Jul 19 12:28:28 UTC 2019 - Tomáš Chvátal <tchvatal@suse.com>

View File

@ -22,16 +22,18 @@ Version: 1.0.1
Release: 0
Summary: HTML parser based on the WHAT-WG Web Applications 1
License: MIT
Group: Development/Languages/Python
URL: https://github.com/html5lib/html5lib-python
Source: https://files.pythonhosted.org/packages/source/h/html5lib/html5lib-%{version}.tar.gz
# PATCH-{FIX|FEATURE}-{OPENSUSE|SLE|UPSTREAM} name-of-file.patch gh#html5lib/html5lib-python#414 mcepl@suse.com
# This patch makes testsuite pass with pytest4
Patch0: pytest4-mhroncok.patch
BuildRequires: %{python_module Genshi}
BuildRequires: %{python_module datrie}
BuildRequires: %{python_module lxml}
BuildRequires: %{python_module mock}
BuildRequires: %{python_module pytest-expect}
# https://github.com/html5lib/html5lib-python/issues/411
BuildRequires: %{python_module pytest < 4.0}
BuildRequires: %{python_module pytest-expect}
BuildRequires: %{python_module pytest}
BuildRequires: %{python_module setuptools >= 18.5}
BuildRequires: %{python_module six >= 1.9}
BuildRequires: %{python_module webencodings}
@ -56,16 +58,17 @@ simple custom format
%prep
%setup -q -n html5lib-%{version}
%autopatch -p1
%build
%python_build
%install
%python_install
%python_expand %fdupes -s %{buildroot}%{$python_sitelib}
%python_expand %fdupes %{buildroot}%{$python_sitelib}
%check
%python_expand %python_exec %{_bindir}/py.test --tb=short
%pytest --tb=short
%files %{python_files}
%license LICENSE