diff --git a/mopidy/scanner.py b/mopidy/scanner.py index e8c0c6ba..914f431e 100644 --- a/mopidy/scanner.py +++ b/mopidy/scanner.py @@ -29,14 +29,15 @@ class Scanner(object): def process_tags(self, bus, message): data = message.parse_tag() - self.data_callback(dict([(k, data[k]) for k in data.keys()])) + uri = self.uribin.get_property('uri') + self.data_callback(uri, dict([(k, data[k]) for k in data.keys()])) self.next_uri() def process_error(self, bus, message): if self.error_callback: uri = self.uribin.get_property('uri') - error = message.parse_error() - self.error_callback(uri, *error) + errors = message.parse_error() + self.error_callback(uri, errors) self.next_uri() def next_uri(self): diff --git a/tests/scanner.py b/tests/scanner.py new file mode 100644 index 00000000..5374e856 --- /dev/null +++ b/tests/scanner.py @@ -0,0 +1,45 @@ +import unittest + +from mopidy.scanner import Scanner + +from tests import data_folder + +class ScannerTest(unittest.TestCase): + def setUp(self): + self.errors = {} + self.data = {} + + def scan(self, path): + scanner = Scanner(data_folder(path), + self.data_callback, self.error_callback) + scanner.start() + + def data_callback(self, uri, data): + uri = uri.lstrip('file://') + uri = uri.lstrip(data_folder('')) + self.data[uri] = data + + def error_callback(self, uri, errors): + uri = uri.lstrip('file://') + uri = uri.lstrip(data_folder('')) + self.errors[uri] = errors + + def test_data_is_set(self): + self.scan('blank.mp3') + self.assert_(self.data) + + def test_errors_is_not_set(self): + self.scan('blank.mp3') + self.assert_(not self.errors) + + def test_artist_is_set(self): + self.scan('blank.mp3') + self.assertEqual(self.data['blank.mp3']['artist'], 'artist') + + def test_album_is_set(self): + self.scan('blank.mp3') + self.assertEqual(self.data['blank.mp3']['album'], 'album') + + def test_track_is_set(self): + self.scan('blank.mp3') + self.assertEqual(self.data['blank.mp3']['title'], 'title')