| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139 |
- ## shallow clone for speed
- REBAR_GIT_CLONE_OPTIONS += --depth 1
- export REBAR_GIT_CLONE_OPTIONS
- SUITES_FILES := $(shell find test -name '*_SUITE.erl' | sort)
- CT_SUITES := $(foreach value,$(SUITES_FILES),$(shell val=$$(basename $(value) .erl); echo $${val%_*}))
- CT_NODE_NAME = emqxct@127.0.0.1
- RUN_NODE_NAME = emqxdebug@127.0.0.1
- .PHONY: all
- all: compile
- .PHONY: tests
- tests: eunit ct
- .PHONY: run
- run: run_setup unlock
- @rebar3 as test get-deps
- @rebar3 as test auto --name $(RUN_NODE_NAME) --script scripts/run_emqx.escript
- .PHONY: run_setup
- run_setup:
- @erl -noshell -eval \
- "{ok, [[HOME]]} = init:get_argument(home), \
- FilePath = HOME ++ \"/.config/rebar3/rebar.config\", \
- case file:consult(FilePath) of \
- {ok, Term} -> \
- NewTerm = case lists:keyfind(plugins, 1, Term) of \
- false -> [{plugins, [rebar3_auto]} | Term]; \
- {plugins, OldPlugins} -> \
- NewPlugins0 = OldPlugins -- [rebar3_auto], \
- NewPlugins = [rebar3_auto | NewPlugins0], \
- lists:keyreplace(plugins, 1, Term, {plugins, NewPlugins}) \
- end, \
- ok = file:write_file(FilePath, [io_lib:format(\"~p.\n\", [I]) || I <- NewTerm]); \
- _Enoent -> \
- os:cmd(\"mkdir -p ~/.config/rebar3/ \"), \
- NewTerm=[{plugins, [rebar3_auto]}], \
- ok = file:write_file(FilePath, [io_lib:format(\"~p.\n\", [I]) || I <- NewTerm]) \
- end, \
- halt(0)."
- .PHONY: shell
- shell:
- @rebar3 as test auto
- compile: unlock
- @rebar3 compile
- unlock:
- @rebar3 unlock
- clean: distclean
- ## Cuttlefish escript is built by default when cuttlefish app (as dependency) was built
- CUTTLEFISH_SCRIPT := _build/default/lib/cuttlefish/cuttlefish
- .PHONY: cover
- cover:
- @rebar3 cover
- .PHONY: coveralls
- coveralls:
- @rebar3 as test coveralls send
- .PHONY: xref
- xref:
- @rebar3 xref
- .PHONY: dialyzer
- dialyzer:
- @rebar3 dialyzer
- .PHONY: proper
- proper:
- @rebar3 proper -d test/props -c
- .PHONY: deps
- deps:
- @rebar3 get-deps
- .PHONY: eunit
- eunit:
- @rebar3 eunit -v
- .PHONY: ct_setup
- ct_setup:
- rebar3 as test compile
- @mkdir -p data
- @if [ ! -f data/loaded_plugins ]; then touch data/loaded_plugins; fi
- @ln -s -f '../../../../etc' _build/test/lib/emqx/
- @ln -s -f '../../../../data' _build/test/lib/emqx/
- .PHONY: ct
- ct: ct_setup
- @rebar3 ct -v --name $(CT_NODE_NAME) --suite=$(shell echo $(foreach var,$(CT_SUITES),test/$(var)_SUITE) | tr ' ' ',')
- ## Run one single CT with rebar3
- ## e.g. make ct-one-suite suite=emqx_bridge
- .PHONY: $(SUITES:%=ct-%)
- $(CT_SUITES:%=ct-%): ct_setup
- @rebar3 ct -v --readable=false --name $(CT_NODE_NAME) --suite=$(@:ct-%=%)_SUITE --cover
- .PHONY: app.config
- app.config: $(CUTTLEFISH_SCRIPT) etc/gen.emqx.conf
- $(CUTTLEFISH_SCRIPT) -l info -e etc/ -c etc/gen.emqx.conf -i priv/emqx.schema -d data/
- $(CUTTLEFISH_SCRIPT):
- @rebar3 get-deps
- @if [ ! -f cuttlefish ]; then make -C _build/default/lib/cuttlefish; fi
- bbmustache:
- @git clone https://github.com/soranoba/bbmustache.git && cd bbmustache && ./rebar3 compile && cd ..
- # This hack is to generate a conf file for testing
- # relx overlay is used for release
- etc/gen.emqx.conf: bbmustache etc/emqx.conf
- @erl -noshell -pa bbmustache/_build/default/lib/bbmustache/ebin -eval \
- "{ok, Temp} = file:read_file('etc/emqx.conf'), \
- {ok, Vars0} = file:consult('vars'), \
- Vars = [{atom_to_list(N), list_to_binary(V)} || {N, V} <- Vars0], \
- Targ = bbmustache:render(Temp, Vars), \
- ok = file:write_file('etc/gen.emqx.conf', Targ), \
- halt(0)."
- .PHONY: gen-clean
- gen-clean:
- @rm -rf bbmustache
- @rm -f etc/gen.emqx.conf etc/emqx.conf.rendered
- .PHONY: distclean
- distclean: gen-clean
- @rm -rf Mnesia.*
- @rm -rf _build cover deps logs log data
- @rm -f rebar.lock compile_commands.json cuttlefish erl_crash.dump
|