Package: soupsieve
Severity: serious
Tags: ftbfs
Justification: fails to build from source (but built successfully in the past)

Dear Maintainer,

soupsieve FTBFS due to test suite failures (see attached logs in the end
of this message).

As per upstream's bug report [1], we arrive at [2] to understand the root cause 
is due to lxml being built against libxml2 >= 2.9.11, where CDATA is no longer 
stripped, causing parsing inconsistencies in BeautifulSoup.

[3] has been reported for lxml and, once it is fixed, rebuilding this package 
should be enough to close this bug. In the meanwhile, skipping the tests based 
on the libxml2 version as suggested in [1] should be safe, if needed.

[1] https://github.com/facelessuser/soupsieve/issues/220
[2] https://bugs.launchpad.net/beautifulsoup/+bug/1930164
[3] https://bugs.launchpad.net/lxml/+bug/1930224

Failed tests report:

=================================== FAILURES ===================================
__________________ TestSoupContains.test_contains_cdata_html ___________________

self = <tests.test_extra.test_soup_contains.TestSoupContains 
testMethod=test_contains_cdata_html>

    def test_contains_cdata_html(self):
        """Test contains CDATA in HTML5."""

        markup = """
        <body><div id="1">Testing that <span 
id="2"><![CDATA[that]]></span>contains works.</div></body>
        """

> self.assert_selector(
            markup,
            'body *:-soup-contains("that")',
            ['1'],
            flags=util.HTML
        )

tests/test_extra/test_soup_contains.py:154:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
tests/util.py:122: in assert_selector
    self.assertEqual(sorted(ids), sorted(expected_ids))
E AssertionError: Lists differ: ['1', '2'] != ['1']
E
E First list contains 1 additional elements.
E First extra element 1:
E '2'
E
E - ['1', '2']
E + ['1']
----------------------------- Captured stdout call -----------------------------
----Running Selector Test----
PATTERN: body *:-soup-contains("that")
## PARSING: 'body *:-soup-contains("that")'
TOKEN: 'tag' --> 'body' at position 0
TOKEN: 'combine' --> ' ' at position 4
TOKEN: 'tag' --> '*' at position 5
TOKEN: 'pseudo_contains' --> ':-soup-contains("that")' at position 6
## END PARSING

====PARSER: html5lib
TAG: div

====PARSER: lxml
TAG: div
TAG: span
_______________ TestSoupContainsOwn.test_contains_own_cdata_html _______________

self = <tests.test_extra.test_soup_contains_own.TestSoupContainsOwn 
testMethod=test_contains_own_cdata_html>

    def test_contains_own_cdata_html(self):
        """Test contains CDATA in HTML5."""

        markup = """
        <body><div id="1">Testing that <span 
id="2"><![CDATA[that]]></span>contains works.</div></body>
        """

> self.assert_selector(
            markup,
            'body *:-soup-contains-own("that")',
            ['1'],
            flags=util.HTML
        )

tests/test_extra/test_soup_contains_own.py:45:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
tests/util.py:122: in assert_selector
    self.assertEqual(sorted(ids), sorted(expected_ids))
E AssertionError: Lists differ: ['1', '2'] != ['1']
E
E First list contains 1 additional elements.
E First extra element 1:
E '2'
E
E - ['1', '2']
E + ['1']
----------------------------- Captured stdout call -----------------------------
----Running Selector Test----
PATTERN: body *:-soup-contains-own("that")
## PARSING: 'body *:-soup-contains-own("that")'
TOKEN: 'tag' --> 'body' at position 0
TOKEN: 'combine' --> ' ' at position 4
TOKEN: 'tag' --> '*' at position 5
TOKEN: 'pseudo_contains' --> ':-soup-contains-own("that")' at position 6
## END PARSING

====PARSER: html5lib
TAG: div

====PARSER: lxml
TAG: div
TAG: span
=========================== short test summary info ============================
FAILED 
tests/test_extra/test_soup_contains.py::TestSoupContains::test_contains_cdata_html
FAILED 
tests/test_extra/test_soup_contains_own.py::TestSoupContainsOwn::test_contains_own_cdata_html

-- 
Athos Ribeiro

Reply via email to