Loïc Hoguin 10 лет назад
Родитель
Сommit
72a6157344
4 измененных файлов с 84 добавлено и 3 удалено
  1. 24 3
      README.md
  2. 1 0
      build.config
  3. 30 0
      erlang.mk
  4. 29 0
      plugins/triq.mk

+ 24 - 3
README.md

@@ -450,9 +450,8 @@ EUnit plugin
 This plugin is available by default. It adds the following
 target:
 
-`eunit` which runs all the EUnit tests found in `ebin` and
-any of the additional EUnit directories specified in
-`TEST_DIR`.
+`eunit` which runs all the EUnit tests found in `ebin` or
+the test directory specified in `TEST_DIR`.
 
 `EUNIT_OPTS` can be used to specify EUnit-specific options
 (e.g. `verbose`) that will be used when calling
@@ -499,6 +498,28 @@ For more information please see `erl -man erl`.
 `SHELL_PATH` adds paths to the shell's library search path. By default
 this option sets the paths to `-pa ../$(PROJECT)/ebin $(DEPS_DIR)/*/ebin`.
 
+Triq plugin
+-----------
+
+This plugin is available by default. It adds the following
+target:
+
+`triq` will check all the properties found in `ebin` or
+the test directory specified in `TEST_DIR`.
+
+You can use the `t` variable to give a specific module
+or function to run, for example:
+
+``` bash
+$ make triq t=cow_http_hd
+```
+
+Or:
+
+``` bash
+$ make triq t=cow_http_hd:prop_parse_accept
+```
+
 Contributing
 ------------
 

+ 1 - 0
build.config

@@ -21,3 +21,4 @@ plugins/escript
 plugins/eunit
 plugins/relx
 plugins/shell
+plugins/triq

+ 30 - 0
erlang.mk

@@ -1185,3 +1185,33 @@ build-shell-deps: $(ALL_SHELL_DEPS_DIRS)
 
 shell: build-shell-deps
 	$(gen_verbose) erl $(SHELL_PATH) $(SHELL_OPTS)
+
+# Copyright (c) 2015, Loïc Hoguin <essen@ninenines.eu>
+# This file is part of erlang.mk and subject to the terms of the ISC License.
+
+.PHONY: triq
+
+# Targets.
+
+tests:: triq
+
+define triq_run
+$(ERL) -pa $(CURDIR)/ebin $(DEPS_DIR)/*/ebin \
+	-eval "try $(1) of true -> halt(0); _ -> halt(1) catch error:undef -> io:format(\"Undefined property or module~n\"), halt() end."
+endef
+
+ifdef t
+ifeq (,$(findstring :,$(t)))
+triq: test-build
+	@$(call triq_run,triq:check($(t)))
+else
+triq: test-build
+	@echo Testing $(t)/0
+	@$(call triq_run,triq:check($(t)()))
+endif
+else
+triq: test-build
+	$(eval MODULES := $(shell find ebin -type f -name \*.beam \
+		| sed "s/ebin\//'/;s/\.beam/',/" | sed '$$s/.$$//'))
+	$(gen_verbose) $(call triq_run,[true] =:= lists:usort([triq:check(M) || M <- [$(MODULES)]]))
+endif

+ 29 - 0
plugins/triq.mk

@@ -0,0 +1,29 @@
+# Copyright (c) 2015, Loïc Hoguin <essen@ninenines.eu>
+# This file is part of erlang.mk and subject to the terms of the ISC License.
+
+.PHONY: triq
+
+# Targets.
+
+tests:: triq
+
+define triq_run
+$(ERL) -pa $(CURDIR)/ebin $(DEPS_DIR)/*/ebin \
+	-eval "try $(1) of true -> halt(0); _ -> halt(1) catch error:undef -> io:format(\"Undefined property or module~n\"), halt() end."
+endef
+
+ifdef t
+ifeq (,$(findstring :,$(t)))
+triq: test-build
+	@$(call triq_run,triq:check($(t)))
+else
+triq: test-build
+	@echo Testing $(t)/0
+	@$(call triq_run,triq:check($(t)()))
+endif
+else
+triq: test-build
+	$(eval MODULES := $(shell find ebin -type f -name \*.beam \
+		| sed "s/ebin\//'/;s/\.beam/',/" | sed '$$s/.$$//'))
+	$(gen_verbose) $(call triq_run,[true] =:= lists:usort([triq:check(M) || M <- [$(MODULES)]]))
+endif