mirror of
https://github.com/beetbox/beets.git
synced 2025-12-14 20:43:41 +01:00
Instead of recording only the most recently imported path and assuming that all previous path have also been imported, we record all imported paths and skip recorded paths when resuming the import. This fixes an issue where parallelism would screw up the import order and reimport some files. It also allows us to record singleton items. We can apply the same strategy can be applied for incremental imports.
50 lines
1.7 KiB
Python
50 lines
1.7 KiB
Python
"""Tests for the 'ihate' plugin"""
|
|
|
|
from _common import unittest
|
|
from beets import importer
|
|
from beets.library import Item
|
|
from beetsplug.ihate import IHatePlugin
|
|
|
|
|
|
class IHatePluginTest(unittest.TestCase):
|
|
|
|
def test_hate(self):
|
|
|
|
match_pattern = {}
|
|
test_item = Item(
|
|
genre='TestGenre',
|
|
album=u'TestAlbum',
|
|
artist=u'TestArtist')
|
|
task = importer.SingletonImportTask(None, test_item)
|
|
|
|
# Empty query should let it pass.
|
|
self.assertFalse(IHatePlugin.do_i_hate_this(task, match_pattern))
|
|
|
|
# 1 query match.
|
|
match_pattern = ["artist:bad_artist","artist:TestArtist"]
|
|
self.assertTrue(IHatePlugin.do_i_hate_this(task, match_pattern))
|
|
|
|
# 2 query matches, either should trigger.
|
|
match_pattern = ["album:test","artist:testartist"]
|
|
self.assertTrue(IHatePlugin.do_i_hate_this(task, match_pattern))
|
|
|
|
# Query is blocked by AND clause.
|
|
match_pattern = ["album:notthis genre:testgenre"]
|
|
self.assertFalse(IHatePlugin.do_i_hate_this(task, match_pattern))
|
|
|
|
# Both queries are blocked by AND clause with unmatched condition.
|
|
match_pattern = ["album:notthis genre:testgenre",
|
|
"artist:testartist album:notthis"]
|
|
self.assertFalse(IHatePlugin.do_i_hate_this(task, match_pattern))
|
|
|
|
# Only one query should fire.
|
|
match_pattern = ["album:testalbum genre:testgenre",
|
|
"artist:testartist album:notthis"]
|
|
self.assertTrue(IHatePlugin.do_i_hate_this(task, match_pattern))
|
|
|
|
|
|
def suite():
|
|
return unittest.TestLoader().loadTestsFromName(__name__)
|
|
|
|
if __name__ == '__main__':
|
|
unittest.main(defaultTest='suite')
|