summaryrefslogtreecommitdiff
path: root/src/couch/test/eunit/couch_js_tests.erl
blob: d3d92a288196d7188348ffc6c62ec8b5b5134fa1 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
% Licensed under the Apache License, Version 2.0 (the "License"); you may not
% use this file except in compliance with the License. You may obtain a copy of
% the License at
%
%   http://www.apache.org/licenses/LICENSE-2.0
%
% Unless required by applicable law or agreed to in writing, software
% distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
% WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
% License for the specific language governing permissions and limitations under
% the License.

-module(couch_js_tests).
-include_lib("eunit/include/eunit.hrl").


-define(FUNC, <<
  "function(doc) {\n"
  "  var val = \"0123456789ABCDEF\";\n"
  "  while(true) {emit(val, val);}\n"
  "}\n"
>>).


couch_js_test_() ->
    {
        "Test couchjs",
        {
            setup,
            fun test_util:start_couch/0,
            fun test_util:stop_couch/1,
            [
                fun should_exit_on_oom/0
            ]
        }
    }.


should_exit_on_oom() ->
    Proc = couch_query_servers:get_os_process(<<"javascript">>),
    true = couch_query_servers:proc_prompt(Proc, [<<"add_fun">>, ?FUNC]),
    ?assertThrow(
            {os_process_error, {exit_status, 1}},
            couch_query_servers:proc_prompt(Proc, [<<"map_doc">>, <<"{}">>])
        ).