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
|
-module(rebar_discover_SUITE).
-compile(export_all).
-include_lib("common_test/include/ct.hrl").
-include_lib("eunit/include/eunit.hrl").
all() ->
[empty_app_src, bad_app_src, invalid_app_src].
%% note: invalid .app files without a .app.src also present
%% has rebar3 just ignoring the directory as not OTP-related.
init_per_testcase(_, Config) ->
NewConfig = rebar_test_utils:init_rebar_state(Config, "discover_app_"),
AppDir = ?config(apps, NewConfig),
Name = rebar_test_utils:create_random_name("app1"),
Vsn = rebar_test_utils:create_random_vsn(),
rebar_test_utils:create_app(AppDir, Name, Vsn, [kernel, stdlib]),
[{app_names, [Name]}, {vsns, [Vsn]}|NewConfig].
end_per_testcase(_, Config) ->
Config.
empty_app_src() ->
[{doc, "when there's an empty .app.src file, exit with a good error "
"message rather than an uncaught exception"}].
empty_app_src(Config) ->
AppDir = ?config(apps, Config),
[Name] = ?config(app_names, Config),
AppSrc = filename:join([AppDir, "src", Name ++ ".app.src"]),
ok = file:write_file(AppSrc, ""),
?assertEqual(
{error, {rebar_app_discover, {cannot_read_app_file, AppSrc}}},
rebar_test_utils:run_and_check(Config, [], ["compile"], return)
),
ok.
bad_app_src() ->
[{doc, "when there's a syntactically invalid "
".app.src file, exit with a good error "
"message rather than an uncaught exception"}].
bad_app_src(Config) ->
AppDir = ?config(apps, Config),
[Name] = ?config(app_names, Config),
AppSrc = filename:join([AppDir, "src", Name ++ ".app.src"]),
ok = file:write_file(AppSrc, "bad term file :("),
?assertMatch(
{error, {rebar_app_discover, {bad_term_file, AppSrc, _}}},
rebar_test_utils:run_and_check(Config, [], ["compile"], return)
),
ok.
invalid_app_src() ->
[{doc, "when there's a syntactically valid but semantically invalid "
".app.src file, exit with a good error "
"message rather than an uncaught exception"}].
invalid_app_src(Config) ->
AppDir = ?config(apps, Config),
[Name] = ?config(app_names, Config),
AppSrc = filename:join([AppDir, "src", Name ++ ".app.src"]),
ok = file:write_file(AppSrc, "{applications, name_but_no_args}."),
?assertEqual(
{error, {rebar_app_discover, {cannot_read_app_file, AppSrc}}},
rebar_test_utils:run_and_check(Config, [], ["compile"], return)
),
ok.
|