aboutsummaryrefslogtreecommitdiffstats
path: root/test
diff options
context:
space:
mode:
authorLoïc Hoguin <[email protected]>2017-05-13 15:37:24 +0200
committerLoïc Hoguin <[email protected]>2017-05-13 15:37:24 +0200
commit68bb586e605c62ba9fc7c7bebe14529121dcc53a (patch)
treec26c69abada45dc1ffcff8b2c7f21308539eaf21 /test
parent28ab68285c5e7611ef0e450b5611e666c3253add (diff)
downloaderlang.mk-68bb586e605c62ba9fc7c7bebe14529121dcc53a.tar.gz
erlang.mk-68bb586e605c62ba9fc7c7bebe14529121dcc53a.tar.bz2
erlang.mk-68bb586e605c62ba9fc7c7bebe14529121dcc53a.zip
Convert legacy cover tests and fix a few issues
There are no more legacy tests. Enjoy!
Diffstat (limited to 'test')
-rw-r--r--test/Makefile81
-rw-r--r--test/plugin_cover.mk108
2 files changed, 108 insertions, 81 deletions
diff --git a/test/Makefile b/test/Makefile
index 0640a7d..b5e1747 100644
--- a/test/Makefile
+++ b/test/Makefile
@@ -276,84 +276,3 @@ pkg-$1: build clean
endef
$(foreach pkg,$(PACKAGES),$(eval $(call pkg_target,$(pkg))))
-
-##################
-
-# Test application used for testing.
-app1:
- $(call app1_setup)
-
-# Extra module in app1 used for testing eunit
-define create-module-t
-printf '%s\n' \
- '-module(t).' \
- '-export([succ/1]).' \
- 'succ(N) -> N + 1.' \
- '-ifdef(TEST).' \
- '-include_lib("eunit/include/eunit.hrl").' \
- 'succ_test() ->' \
- ' ?assertEqual(2, succ(1)),' \
- ' os:cmd("echo t >> test-eunit.log").' \
- '-endif.' \
- > app1/src/t.erl
-endef
-
-# Legacy tests.
-#
-# The following tests are slowly being converted.
-# Do NOT use -j with legacy tests.
-
-.PHONY: legacy clean-legacy tests-cover
-
-legacy: clean-legacy tests-cover
-
-clean-legacy:
- $t rm -rf app1
-
-# TODO: do coverage for 'tests' instead of 'eunit ct' when triq is fixed
-tests-cover: app1
- $i "tests-cover: Testing 'eunit' and 'ct' with COVER=1"
- $i "Setting up eunit and ct suites."
- $t $(call create-module-t)
- $t mkdir -p app1/test
- $t printf "%s\n" \
- "-module(m_SUITE)." \
- "-export([all/0, testcase1/1])." \
- "all() -> [testcase1]." \
- "testcase1(_) -> 2 = m:succ(1)." \
- > app1/test/m_SUITE.erl
- $i "Running tests with coverage analysis."
- $t $(MAKE) -C app1 eunit ct COVER=1 $v
- $t [ -e app1/test-eunit.log ]
- $t [ -e app1/eunit.coverdata ]
- $t [ -e app1/ct.coverdata ]
- $i "Generating coverage report."
- $t $(MAKE) -C app1 cover-report COVER=1 $v
- $t [ -e app1/cover/m.COVER.html ]
- $t [ -e app1/cover/t.COVER.html ]
- $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-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
- $i "Test 'tests-cover' passed."
-
-define app1_setup
- $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" \
- "-module(m)." \
- "-export([succ/1])." \
- "succ(N) -> N + 1." \
- > app1/src/m.erl
-endef
diff --git a/test/plugin_cover.mk b/test/plugin_cover.mk
new file mode 100644
index 0000000..11fec5c
--- /dev/null
+++ b/test/plugin_cover.mk
@@ -0,0 +1,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/