summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorFred Hebert <mononcqc@ferd.ca>2019-07-04 11:39:15 -0400
committerFred Hebert <mononcqc@ferd.ca>2019-07-04 11:45:48 -0400
commit44ab2dfd1ab5627496b04cafd56e8a494a926cc2 (patch)
tree198bb81de415fda684d925302ff729c387e35155
parent0d9e5bb37d82a116975be7925ae7a4ca8c8d12bb (diff)
Ensure EDoc opts in umbrella apps are respected
This adds an additional loading and merging of options for EDoc using the values from the top-level along with those specified in the rebar.config of an umbrella application. The app-specific config values are prepended to the global ones; this can likely cause some problems with manual path handling, but is unlikely to happen in practice and the rest seems to work fine based on order Fixes the issue in #2114
-rw-r--r--src/rebar_prv_edoc.erl5
-rw-r--r--test/rebar_edoc_SUITE.erl10
-rw-r--r--test/rebar_edoc_SUITE_data/foo/apps/foo/rebar.config1
-rw-r--r--test/rebar_edoc_SUITE_data/foo/rebar.config1
4 files changed, 15 insertions, 2 deletions
diff --git a/src/rebar_prv_edoc.erl b/src/rebar_prv_edoc.erl
index c78296a..5e563ab 100644
--- a/src/rebar_prv_edoc.erl
+++ b/src/rebar_prv_edoc.erl
@@ -45,7 +45,10 @@ do(State) ->
AppName = rebar_utils:to_list(rebar_app_info:name(AppInfo)),
?INFO("Running edoc for ~ts", [AppName]),
AppDir = rebar_app_info:dir(AppInfo),
- AppRes = (catch edoc:application(list_to_atom(AppName), AppDir, EdocOptsAcc)),
+ AppOpts = rebar_app_info:opts(AppInfo),
+ %% order of the merge is important to allow app opts overrides
+ AppEdocOpts = rebar_opts:get(AppOpts, edoc_opts, []) ++ EdocOptsAcc,
+ AppRes = (catch edoc:application(list_to_atom(AppName), AppDir, AppEdocOpts)),
rebar_hooks:run_all_hooks(Cwd, post, ?PROVIDER, Providers, AppInfo, State),
case {AppRes, ShouldAccPaths} of
{ok, true} ->
diff --git a/test/rebar_edoc_SUITE.erl b/test/rebar_edoc_SUITE.erl
index 64ec0c8..2f0fad0 100644
--- a/test/rebar_edoc_SUITE.erl
+++ b/test/rebar_edoc_SUITE.erl
@@ -52,7 +52,15 @@ multiapp(Config) ->
"barer1")),
?assert(file_content_matches(
filename:join([AppsDir, "apps", "foo", "doc", "foo.html"]),
- "apps/bar1/doc/bar1.html")).
+ "apps/bar1/doc/bar1.html")),
+ %% Options such from rebar.config in the app themselves are
+ %% respected
+ ?assert(file_content_matches(
+ filename:join([AppsDir, "apps", "foo", "doc", "overview-summary.html"]),
+ "foo_custom_title"
+ )),
+ ok.
+
error_survival(Config) ->
RebarConfig = [],
diff --git a/test/rebar_edoc_SUITE_data/foo/apps/foo/rebar.config b/test/rebar_edoc_SUITE_data/foo/apps/foo/rebar.config
new file mode 100644
index 0000000..970d4e2
--- /dev/null
+++ b/test/rebar_edoc_SUITE_data/foo/apps/foo/rebar.config
@@ -0,0 +1 @@
+{edoc_opts, [{title, "foo_custom_title"}]}.
diff --git a/test/rebar_edoc_SUITE_data/foo/rebar.config b/test/rebar_edoc_SUITE_data/foo/rebar.config
new file mode 100644
index 0000000..b5d44fa
--- /dev/null
+++ b/test/rebar_edoc_SUITE_data/foo/rebar.config
@@ -0,0 +1 @@
+{edoc_opts, [{title, "forced wrong title to be overridden"}]}.