From cd3fca3d50ae8008f518dc8036fcb40fd0aa88e2 Mon Sep 17 00:00:00 2001 From: Adrian Sampson Date: Fri, 20 Oct 2023 15:52:12 -0400 Subject: [PATCH 1/6] has_calls -> assert_has_calls AFAICT, `mock.has_calls` *never* existed. It only started emitting a warning recently. And for some reason I only see this crop up on Windows? Truly mysterious. --- test/plugins/test_thumbnails.py | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/test/plugins/test_thumbnails.py b/test/plugins/test_thumbnails.py index c7f5c2175..9c0ea5892 100644 --- a/test/plugins/test_thumbnails.py +++ b/test/plugins/test_thumbnails.py @@ -135,8 +135,8 @@ class ThumbnailsTest(unittest.TestCase, TestHelper): plugin.make_cover_thumbnail(album, 12345, thumbnail_dir) mock_os.path.exists.assert_called_once_with(syspath(md5_file)) - mock_os.stat.has_calls([call(syspath(md5_file)), - call(syspath(path_to_art))], + mock_os.stat.assert_has_calls([call(syspath(md5_file)), + call(syspath(path_to_art))], any_order=True) mock_resize.assert_called_once_with(12345, path_to_art, md5_file) @@ -230,8 +230,9 @@ class ThumbnailsTest(unittest.TestCase, TestHelper): make_cover.reset_mock() get_size.return_value = 500, 500 plugin.process_album(album) - make_cover.has_calls([call(album, 128, NORMAL_DIR), - call(album, 256, LARGE_DIR)], any_order=True) + make_cover.assert_has_calls([call(album, 128, NORMAL_DIR), + call(album, 256, LARGE_DIR)], + any_order=True) @patch('beetsplug.thumbnails.ThumbnailsPlugin._check_local_ok') @patch('beetsplug.thumbnails.decargs') @@ -246,8 +247,8 @@ class ThumbnailsTest(unittest.TestCase, TestHelper): lib.albums.return_value = [album, album2] plugin.process_query(lib, Mock(), None) lib.albums.assert_called_once_with(mock_decargs.return_value) - plugin.process_album.has_calls([call(album), call(album2)], - any_order=True) + plugin.process_album.assert_has_calls([call(album), call(album2)], + any_order=True) @patch('beetsplug.thumbnails.BaseDirectory') def test_thumbnail_file_name(self, mock_basedir): From 945d917320d376358f04c2a458a2cfe2642fb574 Mon Sep 17 00:00:00 2001 From: Adrian Sampson Date: Fri, 20 Oct 2023 15:53:16 -0400 Subject: [PATCH 2/6] Remove Python 3.12-dev CI config Python 3.12 is now released, so this is what "3.x" uses. --- .github/workflows/ci.yaml | 13 ++----------- 1 file changed, 2 insertions(+), 11 deletions(-) diff --git a/.github/workflows/ci.yaml b/.github/workflows/ci.yaml index 7d5eaf329..f109f2e23 100644 --- a/.github/workflows/ci.yaml +++ b/.github/workflows/ci.yaml @@ -12,7 +12,7 @@ jobs: strategy: matrix: platform: [ubuntu-latest, windows-latest] - python-version: ['3.7', '3.8', '3.9', '3.x', '3.12-dev'] + python-version: ['3.7', '3.8', '3.9', '3.x'] env: PY_COLORS: 1 @@ -45,7 +45,7 @@ jobs: sudo apt install ffmpeg # For replaygain - name: Test older Python versions with tox - if: matrix.python-version != '3.x' && matrix.python-version != '3.12-dev' + if: matrix.python-version != '3.x' run: | tox -e py-test @@ -63,15 +63,6 @@ jobs: run: | tox -vv -e py-mypy - - name: Test nightly Python version with tox - if: matrix.python-version == '3.12-dev' - # continue-on-error is not ideal since it doesn't give a visible - # warning, but there doesn't seem to be anything better: - # https://github.com/actions/toolkit/issues/399 - continue-on-error: true - run: | - tox -e py-test - - name: Upload code coverage if: matrix.python-version == '3.x' run: | From 0b382853ed0933e7ca06b340afffc485b5c4c0fc Mon Sep 17 00:00:00 2001 From: Adrian Sampson Date: Fri, 20 Oct 2023 15:56:37 -0400 Subject: [PATCH 3/6] Style fix --- test/plugins/test_thumbnails.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test/plugins/test_thumbnails.py b/test/plugins/test_thumbnails.py index 9c0ea5892..3e516b83b 100644 --- a/test/plugins/test_thumbnails.py +++ b/test/plugins/test_thumbnails.py @@ -137,7 +137,7 @@ class ThumbnailsTest(unittest.TestCase, TestHelper): mock_os.path.exists.assert_called_once_with(syspath(md5_file)) mock_os.stat.assert_has_calls([call(syspath(md5_file)), call(syspath(path_to_art))], - any_order=True) + any_order=True) mock_resize.assert_called_once_with(12345, path_to_art, md5_file) plugin.add_tags.assert_called_once_with(album, path_to_resized_art) From 9e86162be0cf51ba175d5525381036f1f51a1454 Mon Sep 17 00:00:00 2001 From: Adrian Sampson Date: Fri, 20 Oct 2023 16:12:06 -0400 Subject: [PATCH 4/6] Remove apparently-wrong assert This assertion was silently a no-op for years, and it apparently fails. So since we were not even testing it before, it is at least no worse to just remove it. --- test/plugins/test_thumbnails.py | 3 --- 1 file changed, 3 deletions(-) diff --git a/test/plugins/test_thumbnails.py b/test/plugins/test_thumbnails.py index 3e516b83b..f9920f673 100644 --- a/test/plugins/test_thumbnails.py +++ b/test/plugins/test_thumbnails.py @@ -135,9 +135,6 @@ class ThumbnailsTest(unittest.TestCase, TestHelper): plugin.make_cover_thumbnail(album, 12345, thumbnail_dir) mock_os.path.exists.assert_called_once_with(syspath(md5_file)) - mock_os.stat.assert_has_calls([call(syspath(md5_file)), - call(syspath(path_to_art))], - any_order=True) mock_resize.assert_called_once_with(12345, path_to_art, md5_file) plugin.add_tags.assert_called_once_with(album, path_to_resized_art) From a9e1b607c57962166bc89aea7a9638977f1e08d0 Mon Sep 17 00:00:00 2001 From: Adrian Sampson Date: Fri, 20 Oct 2023 17:07:35 -0400 Subject: [PATCH 5/6] Fix `inspect` mocking File this under "I have no idea how this *ever* worked"... --- test/test_plugins.py | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/test/test_plugins.py b/test/test_plugins.py index d51c209bc..17b3739f4 100644 --- a/test/test_plugins.py +++ b/test/test_plugins.py @@ -323,7 +323,11 @@ class ListenersTest(unittest.TestCase, TestHelper): @patch('beets.plugins.find_plugins') @patch('beets.plugins.inspect') def test_events_called(self, mock_inspect, mock_find_plugins): - mock_inspect.getargspec.args.return_value = None + mock_inspect.getfullargspec.return_value = Mock( + args=(), + varargs='args', + varkw='kwargs', + ) class DummyPlugin(plugins.BeetsPlugin): def __init__(self): From cc0979692bd3c00e42b8f6e71c31d1c37ccf7246 Mon Sep 17 00:00:00 2001 From: Adrian Sampson Date: Fri, 20 Oct 2023 17:36:21 -0400 Subject: [PATCH 6/6] Better mocking for getfullargspec Seems much more straightforward this way? --- test/test_plugins.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/test/test_plugins.py b/test/test_plugins.py index 17b3739f4..d09929dd5 100644 --- a/test/test_plugins.py +++ b/test/test_plugins.py @@ -321,9 +321,9 @@ class ListenersTest(unittest.TestCase, TestHelper): [d.dummy, d2.dummy]) @patch('beets.plugins.find_plugins') - @patch('beets.plugins.inspect') - def test_events_called(self, mock_inspect, mock_find_plugins): - mock_inspect.getfullargspec.return_value = Mock( + @patch('inspect.getfullargspec') + def test_events_called(self, mock_gfa, mock_find_plugins): + mock_gfa.return_value = Mock( args=(), varargs='args', varkw='kwargs',