mpd_test.TestAsyncioMPD.test_noresponse fails if run
#222 mostly resolved the test failures reported in #214, but if the test suite is run with RUN_SLOW_TESTS=1, test_noresponse still seems to fail:
======================================================================
FAIL: test_noresponse (mpd_test.TestAsyncioMPD.test_noresponse)
----------------------------------------------------------------------
Traceback (most recent call last):
File "/usr/lib/python3.12/unittest/async_case.py", line 90, in _callTestMethod
if self._callMaybeAsync(method) is not None:
^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/lib/python3.12/unittest/async_case.py", line 117, in _callMaybeAsync
return self._asyncioTestContext.run(func, *args, **kwargs)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/tmp/autopkgtest-virt-docker.shared.yo4tw6a0/downtmp/autopkgtest_tmp/mpd_test.py", line 1313, in test_noresponse
with self.assertRaises(mpd.base.ConnectionError):
AssertionError: ConnectionError not raised
(This is mitigated by test_noresponse being skipped by default.)
Hmm. test_oddhello was made async in ddeae97a, but test_noresponse wasn't, despite the fact that they're virtually identical (right down to both using the odd_hello arg) other than which exception they're looking for.
Given that the traceback is in _asyncioTestContext.run(), seems like a good bet that test_noresponse should also have gotten the async / await treatment.
Oh, never mind, test_noresponse was async'd in 9161f30.
Actually, test_noresponse succeeds for me with the current master branch code, on Fedora 40. After patching tox.ini:
diff --git a/tox.ini b/tox.ini
index 69e6e9e..7352e31 100644
--- a/tox.ini
+++ b/tox.ini
@@ -5,6 +5,10 @@ envlist = py38,py39,py310,py311,py312,pypy3
deps = coverage
Twisted
commands = coverage erase
- coverage run -m unittest mpd.tests
+ coverage run -m unittest mpd.tests {posargs}
coverage report
coverage html -d coverage_html/{envname}
+set_env =
+ RUN_SLOW_TESTS={env:RUN_SLOW_TESTS:0}
$ RUN_SLOW_TESTS=1 tox -e py312 -- -vv
.pkg: _optional_hooks> python /usr/lib/python3.12/site-packages/pyproject_api/_backend.py True setuptools.build_meta __legacy__
.pkg: get_requires_for_build_sdist> python /usr/lib/python3.12/site-packages/pyproject_api/_backend.py True setuptools.build_meta __legacy__
.pkg: get_requires_for_build_wheel> python /usr/lib/python3.12/site-packages/pyproject_api/_backend.py True setuptools.build_meta __legacy__
.pkg: prepare_metadata_for_build_wheel> python /usr/lib/python3.12/site-packages/pyproject_api/_backend.py True setuptools.build_meta __legacy__
.pkg: build_sdist> python /usr/lib/python3.12/site-packages/pyproject_api/_backend.py True setuptools.build_meta __legacy__
py312: install_package> python -I -m pip install --force-reinstall --no-deps /home/ferd/rpmbuild/REPOS/python-mpd2/.tox/.tmp/package/6/python_mpd2-3.1.1.tar.gz
py312: commands[0]> coverage erase
py312: commands[1]> coverage run -m unittest mpd.tests -vv
test_albumart (mpd.tests.TestAsyncioMPD.test_albumart) ... ok
test_idle (mpd.tests.TestAsyncioMPD.test_idle) ... ok
test_idle_timeout (mpd.tests.TestAsyncioMPD.test_idle_timeout) ... skipped 'In Python 3.12 we see a timeout error triggering idle instead of the bug described in https://github.com/Mic92/python-mpd2/pull/199'
test_list (mpd.tests.TestAsyncioMPD.test_list) ... ok
test_mocker (mpd.tests.TestAsyncioMPD.test_mocker)
Does the mock server refuse unexpected writes? ... ok
test_noresponse (mpd.tests.TestAsyncioMPD.test_noresponse) ... ok
test_oddhello (mpd.tests.TestAsyncioMPD.test_oddhello) ... ok
test_outputs (mpd.tests.TestAsyncioMPD.test_outputs) ... ok
test_readpicture (mpd.tests.TestAsyncioMPD.test_readpicture) ... ok
test_readpicture_empty (mpd.tests.TestAsyncioMPD.test_readpicture_empty) ... ok
test_status (mpd.tests.TestAsyncioMPD.test_status) ... ok
test_abstract_functions (mpd.tests.TestMPDClient.test_abstract_functions) ... ok
test_add_and_remove_command (mpd.tests.TestMPDClient.test_add_and_remove_command) ... ok
test_broken_pipe_error (mpd.tests.TestMPDClient.test_broken_pipe_error) ... ok
test_client_to_client (mpd.tests.TestMPDClient.test_client_to_client) ... ok
test_command_list (mpd.tests.TestMPDClient.test_command_list) ... ok
test_commands_without_callbacks (mpd.tests.TestMPDClient.test_commands_without_callbacks) ... ok
test_connection_lost (mpd.tests.TestMPDClient.test_connection_lost) ... ok
test_duplicate_tags (mpd.tests.TestMPDClient.test_duplicate_tags) ... ok
test_force_socket_encoding_and_nonbuffering (mpd.tests.TestMPDClient.test_force_socket_encoding_and_nonbuffering) ... ok
test_iterating (mpd.tests.TestMPDClient.test_iterating) ... ok
test_list_group (mpd.tests.TestMPDClient.test_list_group) ... ok
test_metaclass_commands (mpd.tests.TestMPDClient.test_metaclass_commands) ... ok
test_numbers_as_command_args (mpd.tests.TestMPDClient.test_numbers_as_command_args) ... ok
test_parse_changes (mpd.tests.TestMPDClient.test_parse_changes) ... ok
test_parse_database (mpd.tests.TestMPDClient.test_parse_database) ... ok
test_parse_item (mpd.tests.TestMPDClient.test_parse_item) ... ok
test_parse_list (mpd.tests.TestMPDClient.test_parse_list) ... ok
test_parse_list_groups (mpd.tests.TestMPDClient.test_parse_list_groups) ... ok
test_parse_mounts (mpd.tests.TestMPDClient.test_parse_mounts) ... ok
test_parse_neighbors (mpd.tests.TestMPDClient.test_parse_neighbors) ... ok
test_parse_nothing (mpd.tests.TestMPDClient.test_parse_nothing) ... ok
test_parse_object (mpd.tests.TestMPDClient.test_parse_object) ... ok
test_parse_outputs (mpd.tests.TestMPDClient.test_parse_outputs) ... ok
test_parse_playlist (mpd.tests.TestMPDClient.test_parse_playlist) ... ok
test_parse_playlists (mpd.tests.TestMPDClient.test_parse_playlists) ... ok
test_parse_plugins (mpd.tests.TestMPDClient.test_parse_plugins) ... ok
test_parse_raw_sticker_with_special_value (mpd.tests.TestMPDClient.test_parse_raw_sticker_with_special_value) ... ok
test_parse_raw_stickers (mpd.tests.TestMPDClient.test_parse_raw_stickers) ... ok
test_parse_songs (mpd.tests.TestMPDClient.test_parse_songs) ... ok
test_parse_sticker_list (mpd.tests.TestMPDClient.test_parse_sticker_list) ... ok
test_parse_sticket_get_no_sticker (mpd.tests.TestMPDClient.test_parse_sticket_get_no_sticker) ... ok
test_parse_sticket_get_one (mpd.tests.TestMPDClient.test_parse_sticket_get_one) ... ok
test_partitions (mpd.tests.TestMPDClient.test_partitions) ... ok
test_ranges_as_argument (mpd.tests.TestMPDClient.test_ranges_as_argument) ... ok
test_readcomments (mpd.tests.TestMPDClient.test_readcomments) ... ok
test_set_timeout_from_connect (mpd.tests.TestMPDClient.test_set_timeout_from_connect) ... ok
test_set_timeout_on_client (mpd.tests.TestMPDClient.test_set_timeout_on_client) ... ok
test_unicode_as_command_args (mpd.tests.TestMPDClient.test_unicode_as_command_args) ... ok
test_binary_albumart_disconnect_afterchunk (mpd.tests.TestMPDClientSocket.test_binary_albumart_disconnect_afterchunk) ... ok
test_binary_albumart_disconnect_midchunk (mpd.tests.TestMPDClientSocket.test_binary_albumart_disconnect_midchunk) ... ok
test_binary_albumart_emptyresponse (mpd.tests.TestMPDClientSocket.test_binary_albumart_emptyresponse) ... ok
test_binary_albumart_even_multichunk (mpd.tests.TestMPDClientSocket.test_binary_albumart_even_multichunk) ... ok
test_binary_albumart_odd_multichunk (mpd.tests.TestMPDClientSocket.test_binary_albumart_odd_multichunk) ... ok
test_binary_albumart_singlechunk_networkmultiwrite (mpd.tests.TestMPDClientSocket.test_binary_albumart_singlechunk_networkmultiwrite) ... ok
test_binary_albumart_singlechunk_nosize (mpd.tests.TestMPDClientSocket.test_binary_albumart_singlechunk_nosize) ... ok
test_binary_albumart_singlechunk_sizeheader (mpd.tests.TestMPDClientSocket.test_binary_albumart_singlechunk_sizeheader) ... ok
test_binary_readpicture_badheaders (mpd.tests.TestMPDClientSocket.test_binary_readpicture_badheaders) ... ok
test_binary_readpicture_emptyresponse (mpd.tests.TestMPDClientSocket.test_binary_readpicture_emptyresponse) ... ok
test_binary_readpicture_typed (mpd.tests.TestMPDClientSocket.test_binary_readpicture_typed) ... ok
test_binary_readpicture_untyped (mpd.tests.TestMPDClientSocket.test_binary_readpicture_untyped) ... ok
test_readbinary_error (mpd.tests.TestMPDClientSocket.test_readbinary_error) ... ok
test_already_idle (mpd.tests.TestMPDProtocol.test_already_idle) ... ok
test_already_in_command_list (mpd.tests.TestMPDProtocol.test_already_in_command_list) ... ok
test_already_noidle (mpd.tests.TestMPDProtocol.test_already_noidle) ... ok
test_close (mpd.tests.TestMPDProtocol.test_close) ... ok
test_command_list (mpd.tests.TestMPDProtocol.test_command_list) ... ok
test_command_list_failure (mpd.tests.TestMPDProtocol.test_command_list_failure) ... ok
test_command_list_failure_when_default_idle (mpd.tests.TestMPDProtocol.test_command_list_failure_when_default_idle) ... ok
test_command_list_item_is_generator (mpd.tests.TestMPDProtocol.test_command_list_item_is_generator) ... ok
test_command_list_when_default_idle (mpd.tests.TestMPDProtocol.test_command_list_when_default_idle) ... ok
test_create_command (mpd.tests.TestMPDProtocol.test_create_command) ... ok
test_default_idle (mpd.tests.TestMPDProtocol.test_default_idle) ... ok
test_failure (mpd.tests.TestMPDProtocol.test_failure) ... ok
test_invalid_command_in_command_list (mpd.tests.TestMPDProtocol.test_invalid_command_in_command_list) ... ok
test_noidle_when_default_idle (mpd.tests.TestMPDProtocol.test_noidle_when_default_idle) ... ok
test_not_in_command_list (mpd.tests.TestMPDProtocol.test_not_in_command_list) ... ok
test_success (mpd.tests.TestMPDProtocol.test_success) ... ok
----------------------------------------------------------------------
Ran 78 tests in 7.362s
OK (skipped=1)
py312: commands[2]> coverage report
Name Stmts Miss Cover
-------------------------------------
mpd/__init__.py 17 5 71%
mpd/asyncio.py 345 71 79%
mpd/base.py 519 65 87%
mpd/tests.py 717 19 97%
mpd/twisted.py 162 1 99%
-------------------------------------
TOTAL 1760 161 91%
py312: commands[3]> coverage html -d coverage_html/py312
Wrote HTML report to coverage_html/py312/index.html
py312: OK (13.99=setup[5.05]+cmd[0.13,8.16,0.28,0.37] seconds)
congratulations :) (14.11 seconds)
Did your tests run with 9161f30 applied, @smcv ?
No plans to do any more changes/fixes myself for this library beyond merging pull requests.