[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Bug#922833: lxml breaks python-mechanicalsoup autopkgtest

Source: lxml, python-mechanicalsoup
Control: found -1 lxml/4.3.1-1
Control: found -1 python-mechanicalsoup/0.10.0-2
Severity: important
X-Debbugs-CC: debian-ci@lists.debian.org
User: debian-ci@lists.debian.org
Usertags: breaks needs-update

Dear maintainers,

With a recent upload of lxml the autopkgtest of python-mechanicalsoup
fails in testing when that autopkgtest is run with the binary packages
of lxml from unstable. It passes when run with only packages from
testing. In tabular form:
                       pass            fail
lxml                   from testing    4.3.1-1
python-mechanicalsoup  from testing    0.10.0-2
versioned deps [0]     from testing    from unstable
all others             from testing    from testing

I copied some of the output at the bottom of this report. I can't judge
the first error, the second error smells like the reference data needs
an update in python-mechanicalsoup.

Currently this regression is blocking the migration of lxml to testing
[1]. Due to the nature of this issue, I filed this bug report against
both packages. Can you please investigate the situation and reassign the
bug to the right package? If needed, please change the bug's severity.

More information about this bug and the reason for filing it can be found on


[0] You can see what packages were added from the second line of the log
file quoted below. The migration software adds source package from
unstable to the list if they are needed to install packages from
lxml/4.3.1-1. I.e. due to versioned dependencies or breaks/conflicts.
[1] https://qa.debian.org/excuses.php?package=lxml


=================================== FAILURES
______________________________ test_submit_online

httpbin = <utils.HttpbinRemote object at 0x7f205a9f5780>

    def test_submit_online(httpbin):
        """Complete and submit the pizza form at
http://httpbin.org/forms/post """
        browser = mechanicalsoup.StatefulBrowser()
        browser.set_user_agent('testing MechanicalSoup')
        for link in browser.links():
            if link["href"] == "/":
        assert browser.get_url() == httpbin + "/forms/post"
        browser["custname"] = "Customer Name Here"
        browser["size"] = "medium"
        browser["topping"] = ("cheese", "bacon")
        # Change our mind to make sure old boxes are unticked
        browser["topping"] = ("cheese", "onion")
        browser["comments"] = "Some comment here"
        browser.get_current_form().set("nosuchfield", "new value", True)
        response = browser.submit_selected()
        json = response.json()
        data = json["form"]
        assert data["custname"] == "Customer Name Here"
        assert data["custtel"] == ""  # web browser submits "" for input
left blank
        assert data["size"] == "medium"
        assert set(data["topping"]) == set(("cheese", "onion"))
        assert data["comments"] == "Some comment here"
        assert data["nosuchfield"] == "new value"

        assert json["headers"]["User-Agent"] == 'testing MechanicalSoup'
        # Ensure we haven't blown away any regular headers
        expected_headers = ('Content-Length', 'Host', 'Content-Type',
                            'Accept', 'User-Agent', 'Accept-Encoding')
>       assert set(expected_headers).issubset(json["headers"].keys())
E       AssertionError: assert False
E        +  where False = <built-in method issubset of set object at
0x7f205a9b7ba8>(dict_keys(['Accept', 'Accept-Encoding',
'Content-Length', 'Content-Type', 'Host', 'Referer', 'User-Agent']))
E        +    where <built-in method issubset of set object at
0x7f205a9b7ba8> = {'Accept', 'Accept-Encoding', 'Connection',
'Content-Length', 'Content-Type', 'Host', ...}.issubset
E        +      where {'Accept', 'Accept-Encoding', 'Connection',
'Content-Length', 'Content-Type', 'Host', ...} = set(('Content-Length',
'Host', 'Content-Type', 'Connection', 'Accept', 'User-Agent', ...))
E        +    and   dict_keys(['Accept', 'Accept-Encoding',
'Content-Length', 'Content-Type', 'Host', 'Referer', 'User-Agent']) =
<built-in method keys of dict object at 0x7f205a85ec60>()
E        +      where <built-in method keys of dict object at
0x7f205a85ec60> = {'Accept': '*/*', 'Accept-Encoding': 'gzip, deflate',
'Content-Length': '147', 'Content-Type':
'application/x-www-form-urlencoded', ...}.keys

tests/test_stateful_browser.py:60: AssertionError
______________________________ test_open_relative

httpbin = <utils.HttpbinRemote object at 0x7f205a931a90>

    def test_open_relative(httpbin):
        # Open an arbitrary httpbin page to set the current URL
        browser = mechanicalsoup.StatefulBrowser()
        browser.open(httpbin + "/html")

        # Open a relative page and make sure remote host and browser
agree on URL
        resp = browser.open_relative("/get")
>       assert resp.json()['url'] == httpbin + "/get"
E       AssertionError: assert 'https://httpbin.org/get' ==
E         - https://httpbin.org/get
E         ?     -
E         + http://httpbin.org/get

tests/test_stateful_browser.py:90: AssertionError

Attachment: signature.asc
Description: OpenPGP digital signature

Reply to: