summaryrefslogtreecommitdiff
path: root/test/runner.erl
blob: f2522d2d0941dad5d0dbc604803fc29d16ec2165 (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
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
% 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(runner).

-export([run/0]).
-include("couch_config_test.erl").
-include("couch_config_writer_test.erl").

%% Test Runner
run() ->
    % mochiweb tests
    % case mochiweb:test() of
    %     ok ->
    %         io:format("Mochiweb Tests PASSED~n");
    %     _ ->
    %         io:format("Mochiweb Tests FAILED~n")
    % end,

    % CouchDB tests
    Tests = lists:flatten([
        couch_config_test(),
        couch_config_writer_test()
    ]),
    run_tests(Tests),

    % we're done, get out of here
    halt().

run_test(TestFun) ->
    io:format("  ~s        ", [proplists:get_value(
                                 name,
                                 erlang:fun_info(TestFun))]),
    try TestFun() of
        _ ->
            io:format("[PASSED]~n", []),
            passed
    catch
        _:{skipped, Reason} ->
            io:format("[SKIPPED]~n", []),
            io:format("      reason: ~s~n", [Reason]),
            skipped;
        _:X ->
            io:format("[FAILED]~n", []),
            io:format("ERROR: ~n======~n~p ~n======~n~n",
                      [{X, erlang:get_stacktrace()}]),
            failed
    end.

run_tests(List) ->
    io:format("Running ~p tests...~n", [lists:flatlength(List)]),

    Results = lists:map(fun run_test/1, List),

    Passed = lists:filter(
               fun (Result) -> Result =:= passed end,
               Results),

    Failed = lists:filter(
               fun (Result) -> Result =:= failed end,
               Results),

    Skipped = lists:filter(
                fun(Result) -> Result =:= skipped end,
                Results),

    io:format("PASSED: ~p, FAILED: ~p, SKIPPED: ~p ~n",
              [lists:flatlength(Passed),
               lists:flatlength(Failed),
               lists:flatlength(Skipped)]).