aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorLoïc Hoguin <[email protected]>2017-05-13 22:35:11 +0200
committerLoïc Hoguin <[email protected]>2017-05-13 22:35:11 +0200
commitecd4344f3ef7e1b12e6506dd0b5d6e644894b9e0 (patch)
treedb533a100486334ad7b1b2aa639693f9b0f2a5d4
parent613410e9d6c62303673c6b95870bbe4ad60729f3 (diff)
downloaderlang.mk-ecd4344f3ef7e1b12e6506dd0b5d6e644894b9e0.tar.gz
erlang.mk-ecd4344f3ef7e1b12e6506dd0b5d6e644894b9e0.tar.bz2
erlang.mk-ecd4344f3ef7e1b12e6506dd0b5d6e644894b9e0.zip
Add a test for EDOC_SRC_DIRS and tweak the feature a bit
-rw-r--r--plugins/edoc.mk20
-rw-r--r--test/plugin_edoc.mk25
2 files changed, 34 insertions, 11 deletions
diff --git a/plugins/edoc.mk b/plugins/edoc.mk
index f2f4053..b4917cc 100644
--- a/plugins/edoc.mk
+++ b/plugins/edoc.mk
@@ -6,28 +6,28 @@
# Configuration.
EDOC_OPTS ?=
-EDOC_SRC_DIRS ?= $(ALL_APPS_DIRS) $(ALL_DEPS_DIRS)
+EDOC_SRC_DIRS ?=
-# TODO: use double-quote instead of single + atom_to_list
-# The problem is in correctly escaping double-quotes
define edoc.erl
- SrcPaths = lists:foldl(fun (P, Acc) ->
- filelib:wildcard(atom_to_list(P) ++ "/{src,c_src}") ++ Acc
- end, [], [$(call comma_list,$(patsubst %,'%',$(EDOC_SRC_DIRS)))]),
- DefaultOpts = [ {source_path, SrcPaths}
- ,{subpackages, false} ],
+ SrcPaths = lists:foldl(fun(P, Acc) ->
+ filelib:wildcard(atom_to_list(P) ++ "/{src,c_src}") ++ Acc
+ end, [], [$(call comma_list,$(patsubst %,'%',$(EDOC_SRC_DIRS)))]),
+ DefaultOpts = [{source_path, SrcPaths}, {subpackages, false}],
edoc:application($(1), ".", [$(2)] ++ DefaultOpts),
halt(0).
endef
# Core targets.
-docs:: distclean-edoc edoc
+
+ifneq ($(strip $(EDOC_SRC_DIRS)$(wildcard doc/overview.edoc)),)
+docs:: edoc
+endif
distclean:: distclean-edoc
# Plugin-specific targets.
-edoc: doc-deps
+edoc: distclean-edoc doc-deps
$(gen_verbose) $(call erlang,$(call edoc.erl,$(PROJECT),$(EDOC_OPTS)))
distclean-edoc:
diff --git a/test/plugin_edoc.mk b/test/plugin_edoc.mk
index 33f3d0f..2c50098 100644
--- a/test/plugin_edoc.mk
+++ b/test/plugin_edoc.mk
@@ -1,6 +1,6 @@
# EDoc plugin.
-EDOC_CASES = build docs no-overview opts
+EDOC_CASES = build docs no-overview opts src-dirs
EDOC_TARGETS = $(addprefix edoc-,$(EDOC_CASES))
.PHONY: edoc $(EDOC_TARGETS)
@@ -110,3 +110,26 @@ edoc-opts: build clean
$t test -f $(APP)/doc/README.md
$t test -f $(APP)/doc/$(APP)_app.md
$t test -f $(APP)/doc/$(APP)_sup.md
+
+edoc-src-dirs: build clean
+
+ $i "Create a multi application repository with a root application"
+ $t mkdir $(APP)/
+ $t cp ../erlang.mk $(APP)/
+ $t $(MAKE) -C $(APP) -f erlang.mk bootstrap $v
+
+ $i "Create a new application my_app"
+ $t $(MAKE) -C $(APP) new-app in=my_app $v
+
+ $i "Add apps directories to the list of EDoc source directories"
+ $t echo 'EDOC_SRC_DIRS = $$(ALL_APPS_DIRS)' >> $(APP)/Makefile
+
+ $i "Run EDoc"
+ $t $(MAKE) -C $(APP) edoc $v
+
+ $i "Check that the generated documentation includes modules from both apps"
+ $t test -f $(APP)/doc/index.html
+ $t test -f $(APP)/doc/$(APP)_app.html
+ $t test -f $(APP)/doc/$(APP)_sup.html
+ $t test -f $(APP)/doc/my_app_app.html
+ $t test -f $(APP)/doc/my_app_sup.html