From a751bb4f618998fc99361ac4270729183365f29d Mon Sep 17 00:00:00 2001 From: Anna Schumaker Date: Mon, 11 Mar 2019 09:39:32 -0400 Subject: [PATCH] curds: Add a way to cancel notifications I expect this will mostly get used by testing code as we create and delete a bunch of different objects. Signed-off-by: Anna Schumaker --- curds/playlist/playlist.py | 5 +++++ curds/playlist/test_playlist.py | 10 ++++++++++ 2 files changed, 15 insertions(+) diff --git a/curds/playlist/playlist.py b/curds/playlist/playlist.py index 5cb6cd6..f6692d7 100644 --- a/curds/playlist/playlist.py +++ b/curds/playlist/playlist.py @@ -11,6 +11,11 @@ class Playlist(list): self.append(track) self.notify("on-add", track) + def never_mind(name, func): + cb = Playlist.notifications.get(name, []) + if func in cb: + cb.remove(func) + def notify_me(name, func): Playlist.notifications.setdefault(name, []).append(func) diff --git a/curds/playlist/test_playlist.py b/curds/playlist/test_playlist.py index e646600..f851e07 100644 --- a/curds/playlist/test_playlist.py +++ b/curds/playlist/test_playlist.py @@ -80,3 +80,13 @@ class TestPlaylist(unittest.TestCase): plist.add(None) self.assertEqual(self.cb_plist, plist) self.assertEqual(self.cb_track, track) + + self.cb_plist = None + self.cb_track = None + track = tags.Track.add(os.path.join(path, "02 - Test Track 02.ogg")) + playlist.Playlist.never_mind("on-add", self.on_add1) + self.assertEqual(len(playlist.Playlist.notifications["on-add"]), 1) + playlist.Playlist.never_mind("on-add", self.on_add1) + plist.add(track) + self.assertIsNone(self.cb_plist) + self.assertEqual(self.cb_track, track)