diff --git a/beets/ui/commands.py b/beets/ui/commands.py index 176cf9218..afd998042 100644 --- a/beets/ui/commands.py +++ b/beets/ui/commands.py @@ -1349,8 +1349,9 @@ def modify_items(lib, mods, dels, query, write, move, album, confirm): else: extra = '' - if not ui.input_yn('Really modify%s (Y/n)?' % extra): - return + changed = ui.input_select_items( + 'Really modify%s (Y/n)?' % extra, changed, + lambda o: print_modify_item(o, mods, dels)) # Apply changes to database and files with lib.transaction(): diff --git a/test/test_ui.py b/test/test_ui.py index 4a10a7947..480e6ce03 100644 --- a/test/test_ui.py +++ b/test/test_ui.py @@ -231,6 +231,22 @@ class ModifyTest(unittest.TestCase, TestHelper): item.load() self.assertEqual(0, item.mtime) + def test_selective_modify(self): + title = "Tracktitle" + album = "album" + origArtist = "composer" + newArtist = "coverArtist" + for i in range(0, 10): + self.add_item_fixture(title="{0}{1}".format(title, i), + artist=origArtist, + album=album) + self.modify_inp('s\ny\ny\ny\nn\nn\ny\ny\ny\ny\nn', + title, "artist={0}".format(newArtist)) + origItems = self.lib.items("artist:{0}".format(origArtist)) + newItems = self.lib.items("artist:{0}".format(newArtist)) + self.assertEqual(len(list(origItems)), 3) + self.assertEqual(len(list(newItems)), 7) + # Album Tests def test_modify_album(self):