summaryrefslogtreecommitdiff
path: root/test/runner.erl
blob: 5cf559f3db76044ee428ad19f630e662a0bc8154 (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
-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)]).