Commit graph

2541 commits

Author SHA1 Message Date
J0J0 Todos
94d00418b4 Fix test_albuminfo_change_artist_does_not_change_items
by adding (inherit=True) to fit with the new behaviour of the store() method
and add a second test that checks the opposite.
2023-08-23 06:34:16 +02:00
luzpaz
8419149c7a
Fix various typos 2023-08-09 21:26:15 -04:00
Adrian Sampson
af0df4ca03
Missed a couple of cases in tests 2023-07-31 10:26:59 -07:00
J0J0 Todos
e18b9432a5 Use f-string in test_importfeeds
Quickfix a thing ment for #4863
2023-07-28 07:04:06 +02:00
J0J0 Todos
546e1b8751 Add test for #4863 importfeeds m3u_session feature 2023-07-27 07:56:55 +02:00
wisp3rwind
3965858ac1 replaygain: apply review feedback: fixup previous refactor, improve tests
by adding files which are not completely silent, thus hitting a different
code path in some calculations

The sample files were generated using
> sox -n whitenoise.flac synth 00:00:02 whitenoise
> ffmpeg -i whitenoise.flac whitenoise.opus
> ffmpeg -i whitenoise.flac whitenoise.mp3
2023-07-22 12:47:19 +02:00
Benedikt
fc05a85c3b
Merge pull request #4850 from wisp3rwind/pr_add_syspath_4
tests: make use of our custom filesystem assertions for conciseness
2023-07-18 22:02:48 +02:00
wisp3rwind
9af9eb9b31 tests: make use of our custom filesystem assertions for conciseness
this replaces assertions of the form
    self.assertTrue(os.path.exists(syspath(path)))
by
    self.assertExists(path)
which includes the syspath conversion and is much easier to read.

Occurences where located using
    git grep -E 'assert(True|False).*(isdir|isfile|exist)'
2023-07-16 10:42:47 +02:00
wisp3rwind
29c21860a9 add missing syspath conversions (2/3, beetsplug) 2023-07-16 10:17:40 +02:00
Boris-Chengbiao Zhou
dcaac12860 Handle missing release-relation-list field during pseudo-release lookup
Some pseudo-releases (erroneously) lack the relation to the actual
release which previously would've caused a crash.
2023-06-29 23:39:19 +02:00
Adrian Sampson
16a30f4d74
Merge pull request #4714 from TypicalFence/gh-654
resolve transl-tracklisting relations for pseudo releases
2023-06-26 14:40:28 -07:00
wisp3rwind
1ef6b90786 add missing syspath conversions (1/3, tests)
these are mostly in the tests, which didn't cause issues since the
affected directories usually have nice ASCII paths. For consistency, it
is nicer to always invoke syspath. That also avoids deprecation warnings
for the bytestring interfaces on Python <= 3.5. The bytestring
interfaces were undeprecated with PEP 529 in Python 3.6, such that we
didn't observe any actual failures.
2023-06-24 14:52:46 +02:00
wisp3rwind
09d2c87f29 typings: corrections for dbcore/queryparse
- Add NamedQuery abstract class to be able to express the expectation
  that a query should be such a query (and have a specific constructor
  signature) in construct_query_part
- slightly (and probably completely irrelevantly) improve Query.__hash__
- also, sprinkle some ABC/abstractmethod around to clarify things
2023-06-23 10:59:51 +02:00
fence
dccc62443d fix tests 2023-06-19 20:13:16 +02:00
fence
e992b82bdf resolve transl-tracklisting relations for pseudo releases 2023-06-19 19:27:25 +02:00
Adrian Sampson
5e8d605749
Don't require reflink to run tests
A small change, as discussed in #4798, to avoid depending on the reflink
library to run *all* tests. The library seems to be unmaintained and it
may be annoying to install.
2023-05-30 21:15:34 -07:00
wisp3rwind
7169ac81f5 tests: close library in ParentalDirCreation test 2023-05-07 18:43:43 +02:00
wisp3rwind
5de1d12610 tests: address some warnings
- some helper functions were incorrectly detected as being tests due to
  their name
- use of the deprecated assertEquals alias
2023-05-07 18:43:43 +02:00
wisp3rwind
0d1fa172de tests: explicitly close sqlite3 connections
on Python 3.11, the Windows CI started crashing due to the database file
remainig open unexpectly in test shutdown; this attemps to fix that
2023-05-07 18:43:43 +02:00
J0J0 Todos
2bcf16b10c Fix linter error in test_embedart 2023-04-22 08:23:38 +02:00
J0J0 Todos
8af31058e8 Fix a typo in test_embedart 2023-04-21 21:56:42 +02:00
J0J0 Todos
f6b0311221
Merge pull request #4719 from arsaboo/embedart_url
Added option to embedart using an image URL [small PR]
2023-04-21 21:52:04 +02:00
J0J0 Todos
56adba719b Fix text/html file ending in embedart -u test
Makes it more clear what we are doing.
2023-04-21 21:22:27 +02:00
J0J0 Todos
f3d4929638 Fix embedart -u test names
and shorten second and third test a little by providing -y cli flag. Enough to
test with interactive input once. Move all 3 tests to the very bottom of the
test class.
2023-04-21 20:12:16 +02:00
Alok Saboo
47cb11bad7 Add test for invalid URL 2023-04-21 08:31:36 -04:00
Alok Saboo
919f326400 Add test for png image 2023-04-21 08:23:12 -04:00
J0J0 Todos
3dd32c93dc Add test for embedart -u fetching jpeg from url 2023-04-21 07:59:16 +02:00
J0J0 Todos
efc88193f9 Add test_reimported_album_not_preserves_flexattr
Checks if a reimported album flexible attribute "data_source" will be updated
correctly from the match being applied.
2023-04-11 07:11:20 +02:00
Šarūnas Nejus
724b06a77d
Define SingletonQuery to perform filtering through SQL
This slightly speeds up the queries and there's a nice side-effect where
`singleton:1` and `singleton:0` now work fine!

This is ultimately building towards replacing as many python-only
queries with SQL equivalents.
2023-04-08 06:15:04 +01:00
J0J0 Todos
99231160a7 convert: playlist: M3U read as bytes
- M3UFile.read() method reads in rb mode.
- M3UFile.read() method handles removal of (platform specific) line endings.
- Playlist contents and EXTM3U header is handled as bytes.
- Fix test_playlist*read* tests to encode playlist UTF-8 assert strings to
  bytes using bytestring_path() before comparision.
  - Fixture playlist_windows.m3u8 is now actually Windows formatted (\r\n + BOM)
2023-03-29 07:46:08 +02:00
J0J0 Todos
a4d03ef586 convert: playlist: M3U write + contents as bytes
Make sure we stay with the beets standard of handling everything internally as
bytes.

- M3UFile.write() method writes in wb mode.
- Playlist contents and EXTM3U header is handled as bytes.
  - item.destination() gives us unicode string paths, we tranlate to bytes
    using util.bytestring_path().
- Fix test_playlist*write* tests to encode UTF-8 assert strings as bytes using
  bytestring_path() before comparision.
2023-03-29 07:46:08 +02:00
J0J0 T
068208f71e convert: Fix copyright year in test_m3ufile.py 2023-03-29 07:46:08 +02:00
J0J0 T
c28eb95ef2 convert: playlist: Remove debug print winpath
in test.
2023-03-29 07:46:08 +02:00
J0J0 T
ff03ecaa27 convert: playlist: Add another Windows test
Add test_playlist_write_and_read_unicode_windows: Writes 2 media file
paths containing unicode characters, reads them in using M3UFile class
again and tests if the contents is correct.
2023-03-29 07:46:08 +02:00
J0J0 T
39efd23d06 convert: playlist: Fix winpath driveletter in test
Needs to be put including (double) backslash!
2023-03-29 07:46:08 +02:00
J0J0 T
a641fd151e convert: playlist: debug winpath in test 2023-03-29 07:46:08 +02:00
J0J0 T
54d22bea6e convert: playlist: Construct winpath before assert 2023-03-29 07:46:08 +02:00
J0J0 T
31b9e7afeb convert: playlist: Construct Windows path programatically 2023-03-29 07:46:08 +02:00
J0J0 T
004d10a143 convert: playlist: Put actual Windows paths
into fixture file for the Windows unittest.
2023-03-29 07:46:08 +02:00
J0J0 T
bd5335f31f convert: playlist: Separate unicode test for Windows 2023-03-29 07:46:08 +02:00
J0J0 T
2c1163cbc5 convert: playlist: Linter and import fixes
in m3u module and testsuite.
2023-03-29 07:46:08 +02:00
J0J0 T
39e4b90b5c convert: playlist: Add tests checking extm3u and
fix extm3u check in load method.
2023-03-29 07:21:27 +02:00
J0J0 T
68240f6e03 convert: playlist: Add EmptyPlaylistError and test
- Add and Exception class called EmptyPlaylistError ought to be raised
  when playlists without files are loaded or saved.
- Add a test for it in test_m3ufile
- Fix media_files vs. media_list attribute name.
2023-03-29 07:21:27 +02:00
J0J0 T
0cbf91e4d8 convert: playlist: Add test_m3ufile and fixtures
Add several tests checking loading and saving unicode and regular ascii
text playlist files.
2023-03-29 07:21:27 +02:00
J0J0 T
e41525adbc convert: playlist: Remove clutter from test
- Remove comments in tearDown
- Don't test for converted.mp3, it's done in a separate test already, we
  only want to test for the playlist file here.
2023-03-29 07:21:27 +02:00
J0J0 T
9930a5da59 convert: playlist: Test playlist existence
Broken commit around writing a unittest that checks for existence of an
m3u file after convert has been called with --playlist option.
2023-03-29 07:21:27 +02:00
J0J0 Todos
c6746ed399 Add a test for Beatport ID extraction 2023-03-08 18:29:04 +01:00
J0J0 Todos
af600497ee Add a test for Deezer ID extraction 2023-03-08 18:28:41 +01:00
J0J0 Todos
c1299f64a1 Add a test for Spotify metadata ID extraction 2023-03-08 18:22:54 +01:00
J0J0 Todos
0175a9aed8 Introduce new module beets.util.id_extractors
- We introduce a new submodule of beets.util named id_extractors.
- Parts of the ID extraction utilites required by metadata source plugins
  should live there.
- Also this enables future usage of those utilities from the "outside" of
  metadata source plugins.
- Move Discogs ID extractor to the new module and change test_discogs to use
  the new location.
- Add spotify_id_regex variable to the new module.
2023-03-08 18:12:31 +01:00
J0J0 Todos
4908e1ae09 Fix flake8 issues in test_ui.py
that were introduced in 27218a94.
2023-02-28 09:24:30 +01:00
J0J0 Todos
93fa19f493 Fix albumtypes plugin and its tests
The new database type DelimitedString does list to string and vice versa
conversions itself.
2023-02-27 13:43:03 +01:00
Jonathan Matthews
27218a9490 Mark albumtype/s expected test failure as fixed 2023-02-27 13:43:03 +01:00
Benedikt
22ca6eff82
Merge pull request #4374 from wisp3rwind/pr_drop_old_python
Drop Python 3.6, some Python 2 + Python <= 3.6 cleanup
2023-02-19 10:19:36 +01:00
wisp3rwind
e6fd038b0e tests: robustify path query / case_sensitive tests
- samefile exists on all platforms for recent python
- don't rely on monkey-patching os/os.path and on specifics on the
  implementation: as a result of doing so, the tests start failing in
  obscure ways as soon as the implementation (and its usage of
  os.path.exists and os.path.samefile) is changed
2023-02-12 16:16:43 +01:00
wisp3rwind
12173d30a8 permissions: Move syspath conversion to the actual API boundary 2023-02-12 14:04:24 +01:00
Katelyn Dickey
f0359007a5
Code style fixes 2023-01-31 11:26:22 -05:00
Katelyn Dickey
2c43adf463
Fix album store method to cascade flex field deletions to items 2023-01-31 01:31:53 -05:00
wisp3rwind
a6d74686d8 test: separate case_sensitive unit tests from PathQueryTest
- move tests for case_sensitive to test_util.py, since this is not
  really the concern of PathQueryTest
- removes part of the tests, since the tests that patch os.path.samefile
  and os.path.exists are super brittle since they test the
  implementation rather than the functionality of case_sensitive().
  This is a prepartory step for actually changing the implementation,
  which would otherwise break the tests in a confusing way...
2022-12-24 13:36:53 +01:00
wisp3rwind
d24cf69269 remove old Python: remove util.text_string
This was a helper for situations when Python 2 and 3 APIs returned bytes
and unicode, respectively. In these situation, we should nowadays know
which of the two we receive, so there's no need to wrap & hide the
`bytes.decode()` anymore (when it is still required).

Detailed justification:

beets/ui/__init__.py:
- command line options are always parsed to str

beets/ui/commands.py:
- confuse's config.dump always returns str
- open(...) defaults to text mode, read()ing str

beetsplug/keyfinder.py:
- ...

beetsplug/web/__init__.py:
- internally, paths are always bytestrings
- additionally, I took the liberty to slighlty re-arrange the code: it
  makes sense to split off the basename first, since we're only
  interested in the unicode conversion of that part.

test/helper.py:
- capture_stdout() gives a StringIO, which yields str

test/test_ui.py:
- self.io, from _common.TestCase, ultimately contains a
  _common.DummyOut, which appears to be dealing with str (cf.
  DummyOut.get)
2022-12-24 13:09:26 +01:00
wisp3rwind
1c7889b0ba tests: add a (failing) test for issue #4528 2022-12-18 09:10:02 +01:00
wisp3rwind
d5f998b312 tests: fix assertions for empty MediaFile.images
used to work due to inconsistent mediafile implementation, but with
https://github.com/beetbox/mediafile/pull/64 (in mediafile >= 0.11.0)
list fields are None if non-existent, not the empty list
2022-12-18 08:41:42 +01:00
Adrian Sampson
7cfb55b746
Merge pull request #4546 from luharder/master
Force Tekstowo to check result for match, added Tekstowo test suite
2022-11-26 19:17:19 -08:00
Luke Harder
f155d3ba75 bug 4406 fix v5 (tests pass again) 2022-11-22 20:40:13 -05:00
Bootjewolf
2a282116bd Reorder parameters of _make_track function and fix linting errors 2022-11-19 12:39:16 +01:00
Bootjewolf
4918ee6457 Added test for the parsing of the remixer field 2022-11-15 17:42:34 +01:00
Luke Harder
43f1a8412a bug 4406 fix v3 2022-11-10 14:53:50 -05:00
Luke Harder
252121f537 bug 4406 fix 2022-11-10 12:54:45 -05:00
Aidan Epstein
c906e55ba9 Fix recent bug that would not transcode when format was wrong
Bug introduced in c6d623241b, should_transcode would return False even when the format was different.

Also fix up tests and documentation.
2022-10-19 08:55:51 -07:00
Adrian Sampson
1ebcbf6944
Merge branch 'master' into fix_max_bitrate_default 2022-10-03 11:02:07 -07:00
Jordi Ortolá Ankum
95e0161876
Merge branch 'master' into fix_max_bitrate_default 2022-10-03 10:49:51 +02:00
Adrian Sampson
8baf3e302d
Skip an unhelpful test on Windows
On Windows, converting command-line arguments (hopefully!!!) only needs
to deal with valid strings from the OS. So it is not really relevant to
test with non-UTF-8, non-surrogate bytes.
2022-10-01 17:13:57 -07:00
Adrian Sampson
5ae1e0f3c8
Adapt tests to latest Unidecode version
Unidecode 1.3.5 (a yanked PyPI version) changed the behavior of
Unidecode for some specific characters:

> Remove trailing space in replacements for vulgar fractions.

As luck would have it, our tests used the 1/2 character specifically to
test the behavior when these characters decoded to contain slashes. We
now pin a sufficiently recent version of Unidecode and adapt the tests
to match the new behavior.
2022-10-01 10:33:26 -07:00
Jordi
c6d623241b Fix beets#4472 - set 'max_bitrate' default param to none 2022-10-01 01:20:30 +02:00
Adrian Sampson
e584b043be
Merge pull request #4199 from jcassette/duplicate
Allow to configure which fields are used to find duplicates
2022-08-21 10:44:31 -07:00
Adrian Sampson
1054b729d3
Merge branch 'master' into duplicate 2022-08-21 10:34:15 -07:00
Adrian Sampson
3c945cba0c
Change config key from "single" to "item"
For consistency with the rest of the terminology in the docs/config.
Also, correct the documentation (which previously only covered albums).
2022-08-21 10:31:45 -07:00
Adrian Sampson
8c84bae689
Remove match_querystring in responses
Quoth the responses documentation:

> querystring is matched by default

Not sure how recent this is, unfortunately---but probably 0.17.0, since
that's the version where `match_querystring` was deprecated.
2022-08-21 08:18:49 -07:00
Adrian Sampson
63b7595bd4
Remove use of imp
The replacements in `importlib.util` have been available since Python
3.5.
2022-08-21 08:13:07 -07:00
Adrian Sampson
7af40db050
Merge branch 'master' into formatted-modify 2022-08-20 16:37:52 -07:00
Adrian Sampson
32ce44f589
One more test fix 2022-08-17 16:25:17 -07:00
Adrian Sampson
495c8accc0
Update exact query prefix tests 2022-08-17 16:11:16 -07:00
Jaime Marquínez Ferrándiz
8d957f35f9 Add path template "sunique" to disambiguate between singleton tracks 2022-08-12 14:19:52 +02:00
vicholp
6803ef3b83 add test to get item file of web plugin 2022-08-03 01:22:45 -04:00
Adrian Sampson
c5e68f5643
Adapt to pycodestyle changes 2022-07-30 19:54:24 -04:00
Jan Holthuis
3e37d0163e test(import): Add test for _paths_from_logfile method 2022-06-28 00:17:34 +02:00
Šarūnas Nejus
72c5302004
Fix lints 2022-05-31 22:45:05 +01:00
Šarūnas Nejus
ba777dda50
Skip implicit paths tests for win32 2022-05-31 22:34:40 +01:00
Šarūnas Nejus
d68ed1adca
Make implicit path queries explicit and simplify their handling 2022-05-31 21:51:47 +01:00
Benedikt
424c47696b
Merge pull request #4345 from qcasey/qcasey-patch-2
Change "first" and "second" in test_lyrics output to "expected" and "result"
2022-05-06 20:43:33 +02:00
Quinn Casey
1320944898
Update test_lyrics.py 2022-05-05 15:33:32 -07:00
Quinn Casey
a09f5e7dfe
Update lyricstext.yaml 2022-05-05 14:04:54 -07:00
olgarrahan
c0bb2ff2a1 Genius lyrics header bug fixed and updated test case for lyrics plugin 2022-04-15 16:37:05 -04:00
alicezou
2886296c86 fix code review comments 2022-03-29 21:24:13 -04:00
alicezou
67e778fec6 switch to control_stdin 2022-03-29 20:04:56 -04:00
alicezou
a0b0028874 working db 2022-03-29 19:58:15 -04:00
alicezou
c0d05f8545 add test cases 2022-03-27 17:09:30 -04:00
wisp3rwind
b76a3fcaa4 artresizer: move ImageMagick/PIL code from thumbnails plugin to ArtResizer
Makes the dispatch to the chosen backend simpler in the thumbnails
plugin. Given that ArtResizer is not only about resizing art anymore,
these methods fit there quite nicely.
2022-03-12 23:34:46 +01:00
wisp3rwind
e44a08eeb6 artresizer: style fixes 2022-03-12 23:34:46 +01:00
wisp3rwind
1b92dea995 artresizer: move deinterlace functions to backend classes 2022-03-12 20:37:20 +01:00