diff --git a/anki/sync.py b/anki/sync.py index 4803341ad..725cff79a 100644 --- a/anki/sync.py +++ b/anki/sync.py @@ -547,7 +547,7 @@ class MediaSyncer(object): while 1: runHook("mediaSync", "stream") zip = self.server.files() - if self.addFiles(zip=zip): + if self.addFiles(zip=zip) != "continue": break # step 3: stream files to the server runHook("mediaSync", "client") @@ -555,7 +555,7 @@ class MediaSyncer(object): runHook("mediaSync", "stream") zip = self.files() usn = self.server.addFiles(zip=zip) - if usn: + if usn != "continue": # when server has run out of files, it returns bumped usn break self.deck.media.setUsn(usn) diff --git a/tests/test_sync.py b/tests/test_sync.py index 2c52e83b0..4f9e03baa 100644 --- a/tests/test_sync.py +++ b/tests/test_sync.py @@ -358,8 +358,17 @@ def test_media(): assert server.mediatest("count") == 0 # we should be able to add it again time.sleep(1) - p = os.path.join(deck1.media.dir(), "foo.jpg") open(p, "wb").write("foo") client.sync() assert len(os.listdir(deck1.media.dir())) == 1 assert server.mediatest("count") == 1 + # if we modify it, it should get sent too. also we set the zip size very + # low here, so that we can test splitting into multiple zips + import anki.media; anki.media.SYNC_ZIP_SIZE = 1 + time.sleep(1) + open(p, "wb").write("bar") + open(p+"2", "wb").write("baz") + assert len(os.listdir(deck1.media.dir())) == 2 + client.sync() + assert len(os.listdir(deck1.media.dir())) == 2 + assert server.mediatest("count") == 2