Browse Source

Fix cover tests and use Erlang snippet

Loïc Hoguin 10 years ago
parent
commit
789a4fb6be
2 changed files with 39 additions and 32 deletions
  1. 31 28
      plugins/cover.mk
  2. 8 4
      test/Makefile

+ 31 - 28
plugins/cover.mk

@@ -101,36 +101,39 @@ EUNIT_HRL_MODS = $(subst $(space),$(comma),$(shell \
 	grep -e '^\s*-include.*include/eunit\.hrl"' src/*.erl \
 	| sed "s/^src\/\(.*\)\.erl:.*/'\1'/" | uniq))
 
+define cover_report.erl
+	$(foreach f,$(COVERDATA),cover:import("$(f)") == ok orelse halt(1),)
+	Ms = cover:imported_modules(),
+	[cover:analyse_to_file(M, "$(COVER_REPORT_DIR)/" ++ atom_to_list(M)
+		++ ".COVER.html", [html])  || M <- Ms],
+	Report = [begin {ok, R} = cover:analyse(M, module), R end || M <- Ms],
+	EunitHrlMods = [$(EUNIT_HRL_MODS)],
+	Report1 = [{M, {Y, case lists:member(M, EunitHrlMods) of
+		true -> N - 1; false -> N end}} || {M, {Y, N}} <- Report],
+	TotalY = lists:sum([Y || {_, {Y, _}} <- Report1]),
+	TotalN = lists:sum([N || {_, {_, N}} <- Report1]),
+	TotalPerc = round(100 * TotalY / (TotalY + TotalN)),
+	{ok, F} = file:open("$(COVER_REPORT_DIR)/index.html", [write]),
+	io:format(F, "<!DOCTYPE html><html>~n"
+		"<head><meta charset=\"UTF-8\">~n"
+		"<title>Coverage report</title></head>~n"
+		"<body>~n", []),
+	io:format(F, "<h1>Coverage</h1>~n<p>Total: ~p%</p>~n", [TotalPerc]),
+	io:format(F, "<table><tr><th>Module</th><th>Coverage</th></tr>~n", []),
+	[io:format(F, "<tr><td><a href=\"~p.COVER.html\">~p</a></td>"
+		"<td>~p%</td></tr>~n",
+		[M, M, round(100 * Y / (Y + N))]) || {M, {Y, N}} <- Report1],
+	How = "$(subst $(space),$(comma)$(space),$(basename $(COVERDATA)))",
+	Date = "$(shell date -u "+%Y-%m-%dT%H:%M:%SZ")",
+	io:format(F, "</table>~n"
+		"<p>Generated using ~s and erlang.mk on ~s.</p>~n"
+		"</body></html>", [How, Date]),
+	halt().
+endef
+
 cover-report:
 	$(gen_verbose) mkdir -p $(COVER_REPORT_DIR)
-	$(gen_verbose) $(ERL) -eval ' \
-	$(foreach f,$(COVERDATA),cover:import("$(f)") == ok orelse halt(1),) \
-	Ms = cover:imported_modules(), \
-	[cover:analyse_to_file(M, "$(COVER_REPORT_DIR)/" ++ atom_to_list(M) \
-		++ ".COVER.html", [html])  || M <- Ms], \
-	Report = [begin {ok, R} = cover:analyse(M, module), R end || M <- Ms], \
-	EunitHrlMods = [$(EUNIT_HRL_MODS)], \
-	Report1 = [{M, {Y, case lists:member(M, EunitHrlMods) of \
-		true -> N - 1; false -> N end}} || {M, {Y, N}} <- Report], \
-	TotalY = lists:sum([Y || {_, {Y, _}} <- Report1]), \
-	TotalN = lists:sum([N || {_, {_, N}} <- Report1]), \
-	TotalPerc = round(100 * TotalY / (TotalY + TotalN)), \
-	{ok, F} = file:open("$(COVER_REPORT_DIR)/index.html", [write]), \
-	io:format(F, "<!DOCTYPE html><html>~n" \
-		"<head><meta charset=\"UTF-8\">~n" \
-		"<title>Coverage report</title></head>~n" \
-		"<body>~n", []), \
-	io:format(F, "<h1>Coverage</h1>~n<p>Total: ~p%</p>~n", [TotalPerc]),\
-	io:format(F, "<table><tr><th>Module</th><th>Coverage</th></tr>~n", []), \
-	[io:format(F, "<tr><td><a href=\"~p.COVER.html\">~p</a></td>" \
-		"<td>~p%</td></tr>~n", \
-		[M, M, round(100 * Y / (Y + N))]) || {M, {Y, N}} <- Report1], \
-	How = "$(subst $(space),$(comma)$(space),$(basename $(COVERDATA)))", \
-	Date = "$(shell date -u "+%Y-%m-%dT%H:%M:%SZ")", \
-	io:format(F, "</table>~n" \
-		"<p>Generated using ~s and erlang.mk on ~s.</p>~n" \
-		"</body></html>", [How, Date]), \
-	halt().'
+	$(gen_verbose) $(call erlang,$(cover_report.erl))
 
 endif
 endif # ifneq ($(COVER_REPORT_DIR),)

+ 8 - 4
test/Makefile

@@ -35,7 +35,7 @@ endif
 
 .PHONY: all clean app ct eunit tests-cover docs
 
-all: app ct eunit tests-cover docs clean
+all: clean app ct eunit tests-cover docs
 	$i '+---------------------+'
 	$i '|  All tests passed.  |'
 	$i '+---------------------+'
@@ -161,9 +161,12 @@ tests-cover: app1
 	$t [ -e app1/cover/index.html ]
 	$i "Checking combined coverage from eunit and ct."
 	$t [ `grep 'Total: 100%' app1/cover/index.html | wc -l` -eq 1 ]
-	$i "Checking that cover-clean removes cover data and report."
-	$t make -C app1 cover-clean $v
-	$t [ ! -e app1/cover ] && [ ! -e app1/eunit.coverdata ]
+	$i "Checking that cover-report-clean removes cover report."
+	$t make -C app1 cover-report-clean $v
+	$t [ ! -e app1/cover ]
+	$i "Checking that coverdata-clean removes cover data."
+	$t make -C app1 coverdata-clean $v
+	$t [ ! -e app1/eunit.coverdata ]
 	@# clean up
 	$t rm -rf app1/src/t.erl app1/test app1/test-eunit.log
 	$t make -C app1 clean $v
@@ -196,6 +199,7 @@ docs: app1
 app1:
 	$i "Setting up app."
 	$t mkdir -p app1
+	$t cd .. && make
 	$t cp ../erlang.mk app1/
 	$t make -C app1 -f erlang.mk bootstrap-lib
 	$t printf "%s\n" \