aboutsummaryrefslogtreecommitdiffstats
path: root/test/plugin_cover.mk
blob: 11fec5c723720daf921e269953672c68c009734b (plain) (blame)
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
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
# Common Test plugin.

COVER_CASES = ct eunit report-and-merge
COVER_TARGETS = $(addprefix cover-,$(COVER_CASES))

.PHONY: cover $(COVER_TARGETS)

cover: $(COVER_TARGETS)

cover-ct: build clean

	$i "Bootstrap a new OTP application named $(APP)"
	$t mkdir $(APP)/
	$t cp ../erlang.mk $(APP)/
	$t $(MAKE) -C $(APP) -f erlang.mk bootstrap-lib $v

	$i "Generate a Common Test suite"
	$t mkdir $(APP)/test
	$t printf "%s\n" \
		"-module($(APP)_SUITE)." \
		"-export([all/0, ok/1])." \
		"all() -> [ok]." \
		"ok(_) -> ok." > $(APP)/test/$(APP)_SUITE.erl

	$i "Run Common Test with code coverage enabled"
	$t $(MAKE) -C $(APP) ct COVER=1 $v

	$i "Check that the generated files exist"
	$t test -f $(APP)/ct.coverdata
	$t test -f $(APP)/test/ct.cover.spec

	$i "Check that the generated files are removed on clean"
	$t $(MAKE) -C $(APP) clean $v
	$t test ! -e $(APP)/ct.coverdata
	$t test ! -e $(APP)/test/ct.cover.spec

cover-eunit: build clean

	$i "Bootstrap a new OTP application named $(APP)"
	$t mkdir $(APP)/
	$t cp ../erlang.mk $(APP)/
	$t $(MAKE) -C $(APP) -f erlang.mk bootstrap-lib $v

	$i "Generate a module containing EUnit tests"
	$t printf "%s\n" \
		"-module($(APP))." \
		"-ifdef(TEST)." \
		"-include_lib(\"eunit/include/eunit.hrl\")." \
		"ok_test() -> ok." \
		"-endif." > $(APP)/src/$(APP).erl

	$i "Run EUnit with code coverage enabled"
	$t $(MAKE) -C $(APP) eunit COVER=1 $v

	$i "Check that the generated file exists"
	$t test -f $(APP)/eunit.coverdata

	$i "Check that the generated file is removed on clean"
	$t $(MAKE) -C $(APP) clean $v
	$t test ! -e $(APP)/eunit.coverdata

cover-report-and-merge: build clean

	$i "Bootstrap a new OTP application named $(APP)"
	$t mkdir $(APP)/
	$t cp ../erlang.mk $(APP)/
	$t $(MAKE) -C $(APP) -f erlang.mk bootstrap-lib $v

	$i "Generate a Common Test suite"
	$t mkdir $(APP)/test
	$t printf "%s\n" \
		"-module($(APP)_SUITE)." \
		"-export([all/0, ok/1])." \
		"all() -> [ok]." \
		"ok(_) -> ok." > $(APP)/test/$(APP)_SUITE.erl

	$i "Generate a module containing EUnit tests"
	$t printf "%s\n" \
		"-module($(APP))." \
		"-ifdef(TEST)." \
		"-include_lib(\"eunit/include/eunit.hrl\")." \
		"ok_test() -> ok." \
		"-endif." > $(APP)/src/$(APP).erl

	$i "Run tests with code coverage enabled"
	$t $(MAKE) -C $(APP) tests COVER=1 $v

	$i "Check that the generated files exist"
	$t test -f $(APP)/cover/$(APP).COVER.html
	$t test -f $(APP)/cover/index.html
	$t test -f $(APP)/ct.coverdata
	$t test -f $(APP)/eunit.coverdata
	$t test -f $(APP)/test/ct.cover.spec

	$i "Merge coverdata files into all.coverdata"
	$t $(MAKE) -C $(APP) all.coverdata $v
	$t test -f $(APP)/all.coverdata

	$i "Check that the generated files are removed on clean"
	$t $(MAKE) -C $(APP) clean $v
	$t test ! -e $(APP)/all.coverdata
	$t test ! -e $(APP)/ct.coverdata
	$t test ! -e $(APP)/eunit.coverdata
	$t test ! -e $(APP)/test/ct.cover.spec

	$i "Check that the cover report is removed on distclean"
	$t $(MAKE) -C $(APP) distclean $v
	$t test ! -e $(APP)/cover/