summaryrefslogtreecommitdiff
path: root/inttest
diff options
context:
space:
mode:
authorFred Hebert <mononcqc@ferd.ca>2015-08-21 08:10:59 -0400
committerFred Hebert <mononcqc@ferd.ca>2015-08-21 08:10:59 -0400
commita197b298e699539366582faba2363b8dd2051b36 (patch)
tree16ef42ee5f057457353393a3e291cd288dafe3c4 /inttest
parentaf12b0e065164165ddf8f54d09214894a3f30aa9 (diff)
parent69802f63120c7bc87ad94eddeb43e1285ca770f9 (diff)
downloadrebar-a197b298e699539366582faba2363b8dd2051b36.tar.gz
Merge pull request #530 from paulo-ferraz-oliveira/fix/code_path_for_behaviors
Allow behaviors defined inside xref_extra_path
Diffstat (limited to 'inttest')
-rw-r--r--inttest/xref_behavior/gen_xref_behavior.erl9
-rw-r--r--inttest/xref_behavior/rebar.config6
-rw-r--r--inttest/xref_behavior/xref_behavior.erl10
-rw-r--r--inttest/xref_behavior/xref_behavior_rt.erl32
4 files changed, 57 insertions, 0 deletions
diff --git a/inttest/xref_behavior/gen_xref_behavior.erl b/inttest/xref_behavior/gen_xref_behavior.erl
new file mode 100644
index 0000000..9ac66d2
--- /dev/null
+++ b/inttest/xref_behavior/gen_xref_behavior.erl
@@ -0,0 +1,9 @@
+-module(gen_xref_behavior).
+
+-export([behaviour_info/1]). -ignore_xref([{behaviour_info, 1}]).
+
+behaviour_info(callbacks) ->
+ [{init,1}, {handle, 1}];
+behaviour_info(_Other) ->
+ undefined.
+
diff --git a/inttest/xref_behavior/rebar.config b/inttest/xref_behavior/rebar.config
new file mode 100644
index 0000000..c2e5af6
--- /dev/null
+++ b/inttest/xref_behavior/rebar.config
@@ -0,0 +1,6 @@
+{xref_warnings, true}.
+
+{xref_checks, [undefined_function_calls, undefined_functions,
+ locals_not_used, exports_not_used,
+ deprecated_function_calls, deprecated_functions]}.
+
diff --git a/inttest/xref_behavior/xref_behavior.erl b/inttest/xref_behavior/xref_behavior.erl
new file mode 100644
index 0000000..30b6959
--- /dev/null
+++ b/inttest/xref_behavior/xref_behavior.erl
@@ -0,0 +1,10 @@
+-module(xref_behavior).
+-behavior(gen_xref_behavior).
+
+% behavior-defined callbacks don't require xref_ignore
+-export([init/1, handle/1]).
+
+init(_Args) -> ok.
+
+handle(_Atom) -> next_event.
+
diff --git a/inttest/xref_behavior/xref_behavior_rt.erl b/inttest/xref_behavior/xref_behavior_rt.erl
new file mode 100644
index 0000000..8536710
--- /dev/null
+++ b/inttest/xref_behavior/xref_behavior_rt.erl
@@ -0,0 +1,32 @@
+-module(xref_behavior_rt).
+
+-export([files/0, run/1]).
+
+files() ->
+ [
+ {copy, "../../rebar", "rebar"},
+ {copy, "rebar.config", "rebar.config"},
+ {copy, "xref_behavior.erl", "src/xref_behavior.erl"},
+ {copy, "gen_xref_behavior.erl", "src/gen_xref_behavior.erl"},
+ {create, "ebin/xref_behavior.app", app(xref_behavior,
+ [xref_behavior,
+ gen_xref_behavior])}
+ ].
+
+run(_Dir) ->
+ {ok, _} = retest_sh:run("./rebar compile", []),
+ {ok, _} = retest_sh:run("./rebar xref", []),
+ ok.
+
+%%
+%% Generate the contents of a simple .app file
+%%
+app(Name, Modules) ->
+ App = {application, Name,
+ [{description, atom_to_list(Name)},
+ {vsn, "1"},
+ {modules, Modules},
+ {registered, []},
+ {applications, [kernel, stdlib]}]},
+ io_lib:format("~p.\n", [App]).
+