Thomas Scholtes
ecb9ba97be
Add SingletonImportTask
...
The goal of this class is to eliminate all checks for `task.is_album`. This is
already accomplished for the methods. Next, we want to tackle the plugin
stages.
2014-04-19 17:02:36 +02:00
Thomas Scholtes
a09b2d4760
Test that duplicate files are removed
2014-04-19 17:02:20 +02:00
Thomas Scholtes
4677c55c4f
Remove DuplicateCheckTest
...
Superseded by `ImportDuplicate*Test`.
2014-04-19 15:50:49 +02:00
Thomas Scholtes
efee81cda7
Refactor ImportDuplicateAlbumTest
2014-04-19 15:49:39 +02:00
Thomas Scholtes
52e3413c5b
Test import singleton duplicates
2014-04-19 15:44:20 +02:00
Thomas Scholtes
0518d4e265
Add tests for duplicate album imports
2014-04-19 15:23:01 +02:00
Adrian Sampson
337b1f8610
tests: use Windows config location on Windows
...
Only 10 test failures remain on my system!
2014-04-18 15:57:57 -07:00
Adrian Sampson
5f4a9c6446
fix Windows path manipulation in importfeeds
2014-04-18 15:52:23 -07:00
Adrian Sampson
eee2213099
Merge pull request #696 from ayberk/master
...
Fixed #453 and added test cases
2014-04-18 15:38:27 -07:00
Adrian Sampson
309c5c1a58
fix #705 : unicode in SoundCheck fields
2014-04-17 18:10:16 -07:00
Thomas Scholtes
bd047ec6c8
Add tests for resumed import
2014-04-17 21:56:15 +02:00
Yevgeny Bezman
bbb1f7a295
tests: made all tests pass on cygwin. Fixes #655
2014-04-17 19:50:59 +03:00
Thomas Scholtes
a6aed22ddd
Flake8 fixes
2014-04-17 12:25:59 +02:00
Thomas Scholtes
ea04344560
Test and fix unicode issues in logs. Fixes #699
...
The helper functions for creating test fixtures now include unicode characters.
2014-04-17 12:12:49 +02:00
Ayberk Yilmaz
f67ace610a
Fixed #453 and added test cases
2014-04-16 23:16:04 +03:00
Thomas Scholtes
d02dec8364
Test albums and singletons simultaneously
2014-04-16 14:50:57 +02:00
Thomas Scholtes
b8687999e2
Query string for computed fields. Fixes #693
2014-04-16 14:18:07 +02:00
Thomas Scholtes
8057830c01
Test mbsync plugin
...
Exposes bug from #693
2014-04-16 14:01:00 +02:00
Thomas Scholtes
1f742130c4
Catch all archive extract errors and skip tests without unrar
2014-04-15 18:26:35 +02:00
Thomas Scholtes
68595ee09d
Import rar archives
2014-04-15 18:24:09 +02:00
Thomas Scholtes
e3acdd0cc8
Import tar archives
...
Also refactors the importer code to make better use of ArchiveImportTask.
2014-04-15 18:24:08 +02:00
Thomas Scholtes
b783097329
Import zip archives
...
`beet import archive.zip` extracts the archive to a temporary directory and
imports the content.
The code is very hacky. To make it cleaner the `importer` module needs some
refactoring. One thing the code hints at is extending the `ImportTask` class.
2014-04-15 18:24:08 +02:00
Thomas Scholtes
770bee3583
Extract check for thrird party programs in tests
2014-04-15 18:23:55 +02:00
Thomas Scholtes
4b012e5ddf
Import tests use TestHelper
...
Removes duplicate code, increases speed and makes some files clake8 clean.
2014-04-15 14:57:01 +02:00
Adrian Sampson
02036dd480
Merge pull request #686 from mook/master
...
`beet modify`: Treat arguments with : before = as queries, not modifications
2014-04-14 10:39:43 -07:00
Mook
12a5215afa
beet modify: Add simple argument parsing tests.
2014-04-13 21:24:45 -07:00
Adrian Sampson
2f3ed3e450
avoid extra output in test mp3gain run
2014-04-13 20:41:58 -07:00
Adrian Sampson
77af4ce040
more test isolation ( #670 )
...
Doing test-specific cleanup in tearDown before general sandbox deletion helps
avoiding contamination of global state between tests when cleanup fails.
Current Windows status:
Ran 1106 tests in 72.373s
FAILED (SKIP=10, errors=13, failures=15)
Closer!
2014-04-13 13:57:22 -07:00
Adrian Sampson
8555fa7640
skip pyechonest tests when library not installed
2014-04-13 13:26:51 -07:00
Adrian Sampson
9dd4ad96bd
syspath: correctly prefix Windows UNC paths
...
Identified while tackling #670 , but this should actually solve some legitimate
problems with cataloging music on a network drive.
2014-04-13 13:19:03 -07:00
Adrian Sampson
77eddaa2d1
properly sandbox all tests
...
All filesystem writes are now to temporary directories. (Long ago, the policy
was to put temporary stuff in _RSRC, but that was a pretty bad idea.)
2014-04-12 19:29:29 -07:00
Adrian Sampson
5477a5d039
better tolerance in RG tests
...
The first fix avoids contaminating all future tests if the plugin fails to
load. The second skips the CLI backend tests when the appropriate tool is not
available (just as we do with the GStreamer tests).
2014-04-12 19:04:01 -07:00
Adrian Sampson
ed8002bed5
tests: close databases to avoid errors on Windows
...
Fixes #655 and makes progress on #670 .
2014-04-12 15:00:17 -07:00
Adrian Sampson
e5d28e2171
lyrics is flake8-clean
2014-04-12 13:32:46 -07:00
Adrian Sampson
7fcd7daf7c
lyrics: minor style/doc cleanup
2014-04-12 13:08:24 -07:00
Adrian Sampson
2dafaa2f0c
Merge branch 'KraYmer-lyrics-enh-tests'
2014-04-12 12:58:20 -07:00
Adrian Sampson
7639267f8f
Pythonic names for test helpers
2014-04-12 11:24:47 -07:00
Thomas Scholtes
650b49795b
Add keyfinder plugin
...
Closes #662 and #279 .
2014-04-12 18:44:38 +02:00
Thomas Scholtes
e5104784c6
Add captureStdout helper and mocks to some tests
2014-04-12 16:49:54 +02:00
Thomas Scholtes
65fcb8a28c
Allow CLI tests to use :memory: db
...
This significantly increases performance
2014-04-12 16:08:57 +02:00
Fabrice Laporte
9a32ed5864
add lyrics plugin unit tests file
2014-04-12 12:30:15 +02:00
Thomas Scholtes
c01fc542ed
Support for initial_key with EchoNest
2014-04-11 21:03:11 +02:00
Thomas Scholtes
1670cb4565
Flake8 fixes
2014-04-11 16:05:08 +02:00
Thomas Scholtes
6705c123cf
Use helper for replaygain tests
2014-04-11 15:14:13 +02:00
Thomas Scholtes
75da27729c
Zero also tests deleting rg_track_gain
2014-04-11 15:12:47 +02:00
Thomas Scholtes
287428e805
Use only valid media files as fixtures
2014-04-11 00:06:59 +02:00
Thomas Scholtes
7b954d9999
Remove null normalization for replaygain.
...
A `None` value for replagain fields is different from a `0.0` value [1].
[1]: https://github.com/sampsyo/beets/issues/157#issuecomment-39521322
2014-04-10 22:02:24 +02:00
geigerzaehler
2be1bdeb1f
Merge pull request #660 from geigerzaehler/mediafile-delete-tags
...
Delete and handle nonexistant tags
2014-04-10 20:35:19 +02:00
Thomas Scholtes
f6f974ec87
Remove ITEM_* constants
...
We might consider renaming `Item._fields` to `Item.fields` since other parts of
beets use it as a replacement for `ITEM_KEYS`.
See also #650 .
2014-04-10 17:11:21 +02:00
Thomas Scholtes
52dc84f43a
Set literal not available in py26
2014-04-09 23:28:11 +02:00
Thomas Scholtes
a6839603cd
Return None for missing tags.
...
Instead of returning a special "None value" if a tag does not exist, we return
none directly.
2014-04-09 23:28:11 +02:00
Thomas Scholtes
a114b67974
Remove all tags from empty.wma
2014-04-09 23:28:11 +02:00
Thomas Scholtes
663d91c4b2
Delete tags from media files
2014-04-09 23:28:11 +02:00
Thomas Scholtes
9d9f1b539f
More robust tests for converted files
2014-04-09 20:41:58 +02:00
Adrian Sampson
323be89d4d
fold OrderedEnum into autotag module
...
This puts the OrderedEnum generic class next to where it is actually used. It
also refers to the recipe it is taken from on docs.python.org. I also took the
opportunity to give this a capitalized name (since it's a proper type).
2014-04-08 17:10:50 -07:00
Adrian Sampson
443b8089d5
remove unnecessary IndexableEnum
...
This is not really critical since list(Type)[i] works just as well. This fixes
a couple other problems from the enum transition:
- The name of TYPES was not really consistent with its new role as an enum
type. Renamed this ImageType.
- Fix a rather egregious bug in embedart (undefined reference to Image).
2014-04-08 16:59:50 -07:00
Adrian Sampson
1eb6ccf0ab
Merge pull request #642 from ktkonrad/enum34
...
use the new python enum instead of hand-rolled version
2014-04-08 15:24:04 -07:00
Adrian Sampson
9a21f555be
MediaFile.update() no longer writes files
...
You now call update() followed by save(). This is mainly because the
implementation no longer performs lazy updates, so the need to pair tag
setting and writing together was diminished. Benefits in cleanliness:
- No need to duplicate the id3v2 option.
- Exception handling can be more precise.
- More closely resembles dict.update().
2014-04-07 20:34:48 -07:00
Adrian Sampson
b3f31cbc0a
rename Item.media_fields to _media_fields
...
Following the convention of the other field sets and such. This helps avoid
any confusion with user-specified fields (although it's unlikely people will
want to name a flexible field "media_fields" :).
2014-04-07 20:21:20 -07:00
Thomas Scholtes
43f94ab7e6
Test convert on import
2014-04-08 01:22:02 +02:00
Thomas Scholtes
55e5381bbd
Merge branch 'extendable-mediafile'
...
Conflicts:
beets/library.py
docs/dev/plugins.rst
2014-04-07 23:49:29 +02:00
Thomas Scholtes
6eb497b21b
Remove pathlib dependency
2014-04-07 18:33:12 +02:00
Thomas Scholtes
651bdf0acc
Refactor convert plugin
...
* `encode()` raises an error when the command returns with non-zero exit
status. We catch that in the higher-level conversion functions and skip to
the next item without writing tags.
* Simplified the handling of the `keep_new` flag.
2014-04-07 18:24:59 +02:00
Thomas Scholtes
9d87a7fc02
Make convert --keep-new work again
...
Iincludes some more tests for the convert plugin. The test use the extended
TestHelper class and the new pathlib (see #621 ).
2014-04-07 18:07:43 +02:00
Yevgeny Bezman
2a6e5c7273
Merge branch 'replaygain-backends'
...
Conflicts:
tox.ini
2014-04-06 08:45:35 +03:00
Adrian Sampson
c09bac603f
dbcore: types translate null values on assignment
...
In preparation for #660 , where we will allow MediaFile to expose None values
when tags are missing (and consume None to remove tags). This makes it
possible to hide nullness in the rest of beets by translating None to a
suitable zero-ish value on field assignment.
Types can of course opt out of this to preserve a distinct null value. We do
this now for the album_id field, which needs to be null to indicate
singletons.
Type.normalize() also enables more sophisticated translations (e.g., an
integer field could round off float values assigned into it) in the future.
2014-04-05 16:27:07 -07:00
Thomas Scholtes
0a08696add
Test convert error during import
...
When the conversion of an audio file fails during import the original should be
imported. See #659
2014-04-05 21:09:12 +02:00
Thomas Scholtes
41708865f5
Add helper for high-level tests
2014-04-05 21:09:12 +02:00
Thomas Scholtes
6286bc0b0f
Include site-packages on travis and skip tests otherwise
2014-04-04 22:43:08 +02:00
Thomas Scholtes
5b277eedf8
Add replaygain test for command backend
2014-04-04 22:42:17 +02:00
Yevgeny Bezman
b47e6dd4d4
replaygain: added a test for skipping already calculated items
2014-04-04 22:01:59 +03:00
Thomas Scholtes
5d666fa4e7
Reset config and plugins after tests
2014-04-04 19:52:39 +02:00
Thomas Scholtes
81f53fb0d2
Add basic cli tests for replaygain
2014-04-04 19:44:16 +02:00
Thomas Scholtes
4970c1de5a
Add tests for item.write() custom path
2014-04-04 15:19:32 +02:00
Thomas Scholtes
e62d36aa69
Remove lazy update from MediaFile
2014-04-04 13:40:10 +02:00
Thomas Scholtes
eb4c323bcb
Plugins can now extend MediaField
2014-04-04 00:48:29 +02:00
Thomas Scholtes
3c7dd13b72
Add Item.media_fields
...
This new property controls which fields to read from a media file.
2014-04-03 23:35:33 +02:00
Adrian Sampson
ac99622ec7
Merge branch 'single-files'
...
Conflicts:
docs/changelog.rst
2014-04-03 13:20:53 -07:00
Adrian Sampson
7f9e301428
fix tests for cached weights loading
2014-04-03 13:17:38 -07:00
Thomas Scholtes
2011156f8b
Add test case for single file import
2014-04-03 22:13:31 +02:00
Kyle Konrad
7f3092ce5a
four space indentation and assertGreater for __gt__ coverage
2014-04-03 12:04:51 -07:00
Thomas Scholtes
c4f0928bf5
Read custom fields into database
2014-04-03 14:01:56 +02:00
Thomas Scholtes
b262edd972
Migrate ITEM_KEYS_META
2014-04-03 14:01:56 +02:00
Thomas Scholtes
43ae730a6a
Use readable_fields() to replace ITEM_KEYS_META
2014-04-03 14:01:56 +02:00
Thomas Scholtes
863b9fb4af
MediaFile can be extended with custom fields
2014-04-03 14:01:55 +02:00
Thomas Scholtes
a2a8b244d7
Add LazySave tests for MediaFile
2014-04-03 14:01:55 +02:00
Thomas Scholtes
bedad53c27
Test that we can migrate ITEM_KEYS_WRITABLE
...
The test show that we can replace the hard-coded `ITEM_KEYS_WRITABLE` constant
with the computed value derived from `MediaField.fields()` and ITEM_KEYS. This
will be done in the next commit.
2014-04-03 14:01:55 +02:00
Thomas Scholtes
bcb72becf8
Add MediaFile.update() method to supersede save()
2014-04-03 14:01:55 +02:00
Thomas Scholtes
b026d60c31
Add MediaFile.fields() method
2014-04-03 14:01:55 +02:00
Kyle Konrad
142374925f
add util test file with tests for enumerations. fix super() bug
2014-04-02 15:31:28 -07:00
Thomas Scholtes
100b3d4d65
Make mediafile tests independent of image order
...
For MP3s mutagen stores image tags in a hash with the `APIC:...` key. The order
of the images is therefore not well defined. A similar issue occurs with WMAs.
2014-04-02 22:15:00 +02:00
Bruno Tournay
cd70e92b7f
Modify command: ability to delete/reset an attribute (beet modify field!)
2014-04-01 22:38:33 +02:00
Filipe Fortes
ea90321226
Update tests given new alias behavior
2014-03-26 13:01:42 -07:00
geigerzaehler
3ac2c7a1d7
Merge pull request #603 from geigerzaehler/write-exception-handling
...
Exception handling for item writes
2014-03-24 17:55:48 +01:00
Thomas Scholtes
574903e986
Add FileOperationError and handling in item.write()
2014-03-24 14:22:27 +01:00
Thomas Scholtes
d21406dcb0
Use nose to capture logs during test
...
Set the loglevel of beets to `DEBUG` but capture all logging statements with
nose. The logs are only printed when a test fails. This gives us more
information when tests fail while being completely silent on success.
2014-03-23 21:12:08 +01:00
Adrian Sampson
ddddbbb919
some more thorough documentation for #614
2014-03-21 17:51:50 -07:00
Adrian Sampson
3b403937d6
Merge pull request #614 from asutherland/survive-bad-dates
...
Return 0 dates instead of throwing on bad dates.
2014-03-21 17:43:30 -07:00
Thomas Scholtes
b131922b90
Add failing importfeed tests for albums with slashes
...
Isolates bug in #610
2014-03-19 17:26:11 +01:00
Andrew Sutherland
e290f8dfad
Use _safe_cast to avoid dying on illegal dates.
2014-03-18 01:38:04 -04:00