From db6c33efaab3f16495e439fc01ccd5f55a0ece43 Mon Sep 17 00:00:00 2001 From: John Christopher Anderson Date: Sun, 15 Mar 2009 00:15:40 +0000 Subject: error message on invalid rev format. another replication test. git-svn-id: https://svn.apache.org/repos/asf/couchdb/trunk@754563 13f79535-47bb-0310-9956-ffa450edef68 --- share/www/script/test/replication.js | 22 ++++++++++++++++++++++ src/couchdb/couch_doc.erl | 9 ++++++--- 2 files changed, 28 insertions(+), 3 deletions(-) diff --git a/share/www/script/test/replication.js b/share/www/script/test/replication.js index 944c8e47..f069dc89 100644 --- a/share/www/script/test/replication.js +++ b/share/www/script/test/replication.js @@ -72,6 +72,7 @@ couchTests.replication = function(debug) { }, deletes_test: new function () { + // make sure deletes are replicated this.init = function(dbA, dbB) { T(dbA.save({_id:"foo1",value:"a"}).ok); }; @@ -90,6 +91,27 @@ couchTests.replication = function(debug) { }; }, + deleted_test : new function() { + // docs created and deleted on a single node are also replicated + this.init = function(dbA, dbB) { + T(dbA.save({_id:"del1",value:"a"}).ok); + var docA = dbA.open("del1"); + dbA.deleteDoc(docA); + }; + + this.afterAB1 = function(dbA, dbB) { + var rows = dbB.allDocsBySeq().rows; + var rowCnt = 0; + for (var i=0; i < rows.length; i++) { + if (rows[i].id == "del1") { + rowCnt += 1; + T(rows[i].value.deleted == true); + } + }; + T(rowCnt == 1); + }; + }, + slashes_in_ids_test: new function () { // make sure docs with slashes in id replicate properly this.init = function(dbA, dbB) { diff --git a/src/couchdb/couch_doc.erl b/src/couchdb/couch_doc.erl index fc817d56..3c4fd98c 100644 --- a/src/couchdb/couch_doc.erl +++ b/src/couchdb/couch_doc.erl @@ -129,9 +129,12 @@ from_json_obj(_Other) -> parse_rev(Rev) when is_binary(Rev) -> parse_rev(?b2l(Rev)); parse_rev(Rev) -> - {Pos, [$- | RevId]} = lists:splitwith(fun($-) -> false; (_) -> true end, Rev), - {list_to_integer(Pos), ?l2b(RevId)}. - + SplitRev = lists:splitwith(fun($-) -> false; (_) -> true end, Rev), + case SplitRev of + {Pos, [$- | RevId]} -> {list_to_integer(Pos), ?l2b(RevId)}; + _Else -> throw({bad_request, <<"Invalid rev format">>}) + end. + parse_revs([]) -> []; parse_revs([Rev | Rest]) -> -- cgit v1.2.3