diff --git a/beets/autotag/match.py b/beets/autotag/match.py index db90481ff..58d40bbd6 100644 --- a/beets/autotag/match.py +++ b/beets/autotag/match.py @@ -192,8 +192,10 @@ def assign_items(items, tracks): # Produce the output matching. mapping = dict((items[i], tracks[j]) for (i, j) in matching) - extra_items = set(items) - set(mapping.keys()) - extra_tracks = set(tracks) - set(mapping.values()) + extra_items = list(set(items) - set(mapping.keys())) + extra_items.sort(key=lambda i: (i.disc, i.track, i.title)) + extra_tracks = list(set(tracks) - set(mapping.values())) + extra_tracks.sort(key=lambda t: (t.index, t.title)) return mapping, extra_items, extra_tracks def track_index_changed(item, track_info): diff --git a/test/test_autotag.py b/test/test_autotag.py index 43c2f2ce5..11e7c7f46 100644 --- a/test/test_autotag.py +++ b/test/test_autotag.py @@ -409,8 +409,8 @@ class AssignmentTest(unittest.TestCase): trackinfo.append(TrackInfo(u'three', None)) mapping, extra_items, extra_tracks = \ match.assign_items(items, trackinfo) - self.assertEqual(extra_items, set()) - self.assertEqual(extra_tracks, set()) + self.assertEqual(extra_items, []) + self.assertEqual(extra_tracks, []) self.assertEqual(mapping, { items[0]: trackinfo[0], items[1]: trackinfo[2], @@ -428,8 +428,8 @@ class AssignmentTest(unittest.TestCase): trackinfo.append(TrackInfo(u'three', None)) mapping, extra_items, extra_tracks = \ match.assign_items(items, trackinfo) - self.assertEqual(extra_items, set()) - self.assertEqual(extra_tracks, set()) + self.assertEqual(extra_items, []) + self.assertEqual(extra_tracks, []) self.assertEqual(mapping, { items[0]: trackinfo[0], items[1]: trackinfo[2], @@ -446,8 +446,8 @@ class AssignmentTest(unittest.TestCase): trackinfo.append(TrackInfo(u'three', None)) mapping, extra_items, extra_tracks = \ match.assign_items(items, trackinfo) - self.assertEqual(extra_items, set()) - self.assertEqual(extra_tracks, set([trackinfo[1]])) + self.assertEqual(extra_items, []) + self.assertEqual(extra_tracks, [[trackinfo[1]]]) self.assertEqual(mapping, { items[0]: trackinfo[0], items[1]: trackinfo[2], @@ -463,8 +463,8 @@ class AssignmentTest(unittest.TestCase): trackinfo.append(TrackInfo(u'three', None)) mapping, extra_items, extra_tracks = \ match.assign_items(items, trackinfo) - self.assertEqual(extra_items, set([items[1]])) - self.assertEqual(extra_tracks, set()) + self.assertEqual(extra_items, [[items[1]]]) + self.assertEqual(extra_tracks, []) self.assertEqual(mapping, { items[0]: trackinfo[0], items[2]: trackinfo[1], @@ -513,8 +513,8 @@ class AssignmentTest(unittest.TestCase): mapping, extra_items, extra_tracks = \ match.assign_items(items, trackinfo) - self.assertEqual(extra_items, set()) - self.assertEqual(extra_tracks, set()) + self.assertEqual(extra_items, []) + self.assertEqual(extra_tracks, []) for item, info in mapping.iteritems(): self.assertEqual(items.index(item), trackinfo.index(info))