Merge lp:~pedronis/u1db/parse-sync-stream-buglet into lp:u1db

Proposed by Samuele Pedroni
Status: Merged
Approved by: Samuele Pedroni
Approved revision: 405
Merged at revision: 406
Proposed branch: lp:~pedronis/u1db/parse-sync-stream-buglet
Merge into: lp:u1db
Diff against target: 36 lines (+8/-1)
2 files modified
u1db/remote/http_target.py (+2/-1)
u1db/tests/test_remote_sync_target.py (+6/-0)
To merge this branch: bzr merge lp:~pedronis/u1db/parse-sync-stream-buglet
Reviewer Review Type Date Requested Status
Samuele Pedroni Approve
Review via email: mp+125553@code.launchpad.net

Commit message

[trivial] test and fix for small issue in _parse_sync_stream with a broken stream

To post a comment you must log in.
Revision history for this message
Samuele Pedroni (pedronis) :
review: Approve

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
1=== modified file 'u1db/remote/http_target.py'
2--- u1db/remote/http_target.py 2012-08-14 14:31:45 +0000
3+++ u1db/remote/http_target.py 2012-09-20 17:29:36 +0000
4@@ -60,6 +60,7 @@
5 if not parts or parts[0] != '[':
6 raise BrokenSyncStream
7 data = parts[1:-1]
8+ comma = False
9 if data:
10 line, comma = utils.check_and_strip_comma(data[0])
11 res = json.loads(line)
12@@ -79,7 +80,7 @@
13 if isinstance(partdic, dict):
14 self._error(partdic)
15 raise BrokenSyncStream
16- if comma: # bad extra comma
17+ if not data or comma: # no entries or bad extra comma
18 raise BrokenSyncStream
19 return res
20
21
22=== modified file 'u1db/tests/test_remote_sync_target.py'
23--- u1db/tests/test_remote_sync_target.py 2012-09-04 13:45:35 +0000
24+++ u1db/tests/test_remote_sync_target.py 2012-09-20 17:29:36 +0000
25@@ -72,6 +72,12 @@
26 '[\r\n{}\r\n{"id": "i", "rev": "r", '
27 '"content": "c", "gen": 3}\r\n]', None)
28
29+ def test_no_entries(self):
30+ tgt = http_target.HTTPSyncTarget("http://foo/foo")
31+
32+ self.assertRaises(errors.BrokenSyncStream,
33+ tgt._parse_sync_stream, "[\r\n]", None)
34+
35 def test_extra_comma(self):
36 tgt = http_target.HTTPSyncTarget("http://foo/foo")
37

Subscribers

People subscribed via source and target branches