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
|
-module(rebar_edoc_SUITE).
-include_lib("common_test/include/ct.hrl").
-include_lib("eunit/include/eunit.hrl").
-compile(export_all).
all() -> [multiapp, error_survival].
init_per_testcase(multiapp, Config) ->
application:load(rebar),
DataDir = ?config(data_dir, Config),
PrivDir = ?config(priv_dir, Config),
Name = rebar_test_utils:create_random_name("multiapp"),
AppsDir = filename:join([PrivDir, rebar_test_utils:create_random_name(Name)]),
ec_file:copy(filename:join([DataDir, "foo"]), AppsDir, [recursive]),
Verbosity = rebar3:log_level(),
rebar_log:init(command_line, Verbosity),
State = rebar_state:new([{base_dir, filename:join([AppsDir, "_build"])}
,{root_dir, AppsDir}]),
[{apps, AppsDir}, {state, State}, {name, Name} | Config];
init_per_testcase(error_survival, Config) ->
application:load(rebar),
DataDir = ?config(data_dir, Config),
PrivDir = ?config(priv_dir, Config),
Name = rebar_test_utils:create_random_name("error_survival"),
AppsDir = filename:join([PrivDir, rebar_test_utils:create_random_name(Name)]),
ec_file:copy(filename:join([DataDir, "bad"]), AppsDir, [recursive]),
Verbosity = rebar3:log_level(),
rebar_log:init(command_line, Verbosity),
State = rebar_state:new([{base_dir, filename:join([AppsDir, "_build"])}
,{root_dir, AppsDir}]),
[{apps, AppsDir}, {state, State}, {name, Name} | Config].
end_per_testcase(_, Config) ->
Config.
multiapp(Config) ->
%% With an empty config (no `dir'), links are being processed
RebarConfig = [],
rebar_test_utils:run_and_check(Config, RebarConfig, ["edoc"], {ok, []}),
%% validate that all doc entries are generated and links work
AppsDir = ?config(apps, Config),
ct:pal("AppsDir: ~s", [AppsDir]),
?assert(file_content_matches(
filename:join([AppsDir, "apps", "bar1", "doc", "bar1.html"]),
"barer1")),
?assert(file_content_matches(
filename:join([AppsDir, "apps", "bar2", "doc", "bar2.html"]),
"barer2")),
%% Links are in place for types
?assert(file_content_matches(
filename:join([AppsDir, "apps", "foo", "doc", "foo.html"]),
"barer1")),
?assert(file_content_matches(
filename:join([AppsDir, "apps", "foo", "doc", "foo.html"]),
"apps/bar1/doc/bar1.html")).
error_survival(Config) ->
RebarConfig = [],
rebar_test_utils:run_and_check(
Config, RebarConfig, ["edoc"],
{error,{rebar_prv_edoc,{app_failed,"bad_bar2"}}}
),
ok.
file_content_matches(Path, Regex) ->
case file:read_file(Path) of
{ok, Bin} ->
nomatch =/= re:run(Bin, Regex);
{error, Reason} ->
Reason
end.
|