couchdb-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From dav...@apache.org
Subject svn commit: r826692 - in /couchdb/trunk: share/www/script/test/list_views.js src/couchdb/couch_httpd_show.erl
Date Mon, 19 Oct 2009 14:49:50 GMT
Author: davisp
Date: Mon Oct 19 14:49:50 2009
New Revision: 826692

URL: http://svn.apache.org/viewvc?rev=826692&view=rev
Log:
Fix bug when lists use two design docs.

The language was being pulled from the wrong doc in the pair. Also removed some
unused variables. Added a test in list_views.js


Modified:
    couchdb/trunk/share/www/script/test/list_views.js
    couchdb/trunk/src/couchdb/couch_httpd_show.erl

Modified: couchdb/trunk/share/www/script/test/list_views.js
URL: http://svn.apache.org/viewvc/couchdb/trunk/share/www/script/test/list_views.js?rev=826692&r1=826691&r2=826692&view=diff
==============================================================================
--- couchdb/trunk/share/www/script/test/list_views.js (original)
+++ couchdb/trunk/share/www/script/test/list_views.js Mon Oct 19 14:49:50 2009
@@ -177,6 +177,23 @@
       }
     }
   };
+  var erlListDoc = {
+    _id: "_design/erlang",
+    language: "erlang",
+    lists: {
+        simple:
+            'fun(Head, {Req}) -> ' +
+            '  Send(<<"[">>), ' +
+            '  Fun = fun({Row}, Sep) -> ' +
+            '    Val = proplists:get_value(<<"key">>, Row, 23), ' +
+            '    Send(list_to_binary(Sep ++ integer_to_list(Val))), ' +
+            '    {ok, ","} ' +
+            '  end, ' +
+            '  {ok, _} = FoldRows(Fun, ""), ' +
+            '  Send(<<"]">>) ' +
+            'end.'
+    }
+  };
 
   T(db.save(designDoc).ok);
 
@@ -373,10 +390,33 @@
 
   // Test we can run lists and views from separate docs.
   T(db.save(viewOnlyDesignDoc).ok);
-  xhr = CouchDB.request("GET", "/test_suite_db/_design/lists/_list/simpleForm/views/basicView?startkey=-3");
-  T(xhr.status == 200, "with query params");
+  var url = "/test_suite_db/_design/lists/_list/simpleForm/views/basicView" +
+                "?startkey=-3";
+  xhr = CouchDB.request("GET", url); 
+  T(xhr.status == 200, "multiple design docs.");
   T(/Total Rows/.test(xhr.responseText));
   T(!(/Key: -4/.test(xhr.responseText)));
   T(/FirstKey: -3/.test(xhr.responseText));
   T(/LastKey: 0/.test(xhr.responseText));
+
+  var erlViewTest = function() {
+    T(db.save(erlListDoc).ok);
+    var url = "/test_suite_db/_design/erlang/_list/simple/views/basicView" +
+                "?startkey=-3";
+    xhr = CouchDB.request("GET", url);
+    T(xhr.status == 200, "multiple languages in design docs.");
+    var list = JSON.parse(xhr.responseText);
+    T(list.length == 4);
+    for(var i = 0; i < list.length; i++)
+    {
+        T(list[i] + 3 == i);
+    }
+  };
+
+  run_on_modified_server([{
+    section: "native_query_servers",
+    key: "erlang",
+    value: "{couch_native_process, start_link, []}"
+  }], erlViewTest);
+
 };

Modified: couchdb/trunk/src/couchdb/couch_httpd_show.erl
URL: http://svn.apache.org/viewvc/couchdb/trunk/src/couchdb/couch_httpd_show.erl?rev=826692&r1=826691&r2=826692&view=diff
==============================================================================
--- couchdb/trunk/src/couchdb/couch_httpd_show.erl (original)
+++ couchdb/trunk/src/couchdb/couch_httpd_show.erl Mon Oct 19 14:49:50 2009
@@ -124,16 +124,14 @@
     #doc{body={ListProps}} = couch_httpd_db:couch_doc_open(Db, ListDesignId, nil, []),
     if
     ViewDesignName == ListDesignName ->
-        ViewProps = ListProps,
         ViewDesignId = ListDesignId;
     true ->
-        ViewDesignId = <<"_design/", ViewDesignName/binary>>,
-        #doc{body={ViewProps}} = couch_httpd_db:couch_doc_open(Db, ViewDesignId, nil, [])
+        ViewDesignId = <<"_design/", ViewDesignName/binary>>
     end,
 
-    ViewLang = proplists:get_value(<<"language">>, ViewProps, <<"javascript">>),
+    ListLang = proplists:get_value(<<"language">>, ListProps, <<"javascript">>),
     ListSrc = couch_util:get_nested_json_value({ListProps}, [<<"lists">>, ListName]),
-    send_view_list_response(ViewLang, ListSrc, ViewName, ViewDesignId, Req, Db, Keys).
+    send_view_list_response(ListLang, ListSrc, ViewName, ViewDesignId, Req, Db, Keys).
 
 
 send_view_list_response(Lang, ListSrc, ViewName, DesignId, Req, Db, Keys) ->



Mime
View raw message