summaryrefslogtreecommitdiff
path: root/inttest
diff options
context:
space:
mode:
authorTomas Abrahamsson <tomas.abrahamsson@gmail.com>2015-01-02 01:36:47 +0100
committerTomas Abrahamsson <tomas.abrahamsson@gmail.com>2015-01-07 18:27:40 +0100
commit2af51af986b26b7f68ecb01377ca759e3b5cb536 (patch)
tree95e6ed2654f51322c60b84487b5b0cdbfa38ff6a /inttest
parent2a0dd5bacfd34aeeb57115c9935d34b038302ef8 (diff)
downloadrebar-2af51af986b26b7f68ecb01377ca759e3b5cb536.tar.gz
Replace inttest external dep to protobuffs with a mock
In inttest/proto_protobuffs, replace the external dependency to erlang_protobuffs, a protocol buffer compiler, with a simple mock. The mock provides enough of what is needed for inttest only, which is to generate some dummy content, but with proper file names.
Diffstat (limited to 'inttest')
-rw-r--r--inttest/proto_protobuffs/mock/protobuffs/src/protobuffs.app.src10
-rw-r--r--inttest/proto_protobuffs/mock/protobuffs/src/protobuffs.erl4
-rw-r--r--inttest/proto_protobuffs/mock/protobuffs/src/protobuffs_compile.erl68
-rw-r--r--inttest/proto_protobuffs/rebar.config4
4 files changed, 83 insertions, 3 deletions
diff --git a/inttest/proto_protobuffs/mock/protobuffs/src/protobuffs.app.src b/inttest/proto_protobuffs/mock/protobuffs/src/protobuffs.app.src
new file mode 100644
index 0000000..8017ba9
--- /dev/null
+++ b/inttest/proto_protobuffs/mock/protobuffs/src/protobuffs.app.src
@@ -0,0 +1,10 @@
+%% -*- erlang-indent-level: 4;indent-tabs-mode: nil -*-
+%% ex: ts=4 sw=4 et
+
+{application, protobuffs,
+ [{description,
+ "Simple mock of erlang_protobuffs, with enough to generate dummy files"},
+ {vsn, "1"},
+ {registered, []},
+ {applications, [kernel, stdlib]},
+ {env, []}]}.
diff --git a/inttest/proto_protobuffs/mock/protobuffs/src/protobuffs.erl b/inttest/proto_protobuffs/mock/protobuffs/src/protobuffs.erl
new file mode 100644
index 0000000..614979d
--- /dev/null
+++ b/inttest/proto_protobuffs/mock/protobuffs/src/protobuffs.erl
@@ -0,0 +1,4 @@
+%% -*- erlang-indent-level: 4;indent-tabs-mode: nil -*-
+%% ex: ts=4 sw=4 et
+
+-module(protobuffs).
diff --git a/inttest/proto_protobuffs/mock/protobuffs/src/protobuffs_compile.erl b/inttest/proto_protobuffs/mock/protobuffs/src/protobuffs_compile.erl
new file mode 100644
index 0000000..9390dcd
--- /dev/null
+++ b/inttest/proto_protobuffs/mock/protobuffs/src/protobuffs_compile.erl
@@ -0,0 +1,68 @@
+%% -*- erlang-indent-level: 4;indent-tabs-mode: nil -*-
+%% ex: ts=4 sw=4 et
+%% -------------------------------------------------------------------
+%%
+%% rebar: Erlang Build Tools
+%%
+%% Copyright (c) 2015 Tomas Abrahamsson (tomas.abrahamsson@gmail.com)
+%%
+%% Permission is hereby granted, free of charge, to any person obtaining a copy
+%% of this software and associated documentation files (the "Software"), to deal
+%% in the Software without restriction, including without limitation the rights
+%% to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+%% copies of the Software, and to permit persons to whom the Software is
+%% furnished to do so, subject to the following conditions:
+%%
+%% The above copyright notice and this permission notice shall be included in
+%% all copies or substantial portions of the Software.
+%%
+%% THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+%% IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+%% FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+%% AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+%% LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+%% OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+%% THE SOFTWARE.
+%% -------------------------------------------------------------------
+-module(protobuffs_compile).
+-export([scan_file/2]).
+
+%% Simulate protobuffs compiling some proto files,
+%% but generate only enough of what's needed for testing -- dummy stuff only.
+scan_file(Proto, _Opts) ->
+ ProtoBase = filename:basename(Proto, ".proto"),
+ ModBase = ProtoBase ++ "_pb",
+ BeamDest = filename:join(get_beam_outdir(), ModBase ++ ".beam"),
+ HrlDest = filename:join(get_hrl_outdir(), ModBase ++ ".hrl"),
+ ok = file:write_file(BeamDest, beam_text(ModBase)),
+ ok = file:write_file(HrlDest, hrl_text(ModBase)).
+
+beam_text(ModBase) ->
+ Mod = list_to_atom(ModBase),
+ Forms = [mk_attr(module, Mod)], % just a -module(...). line
+ {ok, Mod, Bin} = compile:forms(Forms),
+ Bin.
+
+mk_attr(AttrName, AttrValue) ->
+ erl_syntax:revert(
+ erl_syntax:attribute(erl_syntax:atom(AttrName),
+ [erl_syntax:abstract(AttrValue)])).
+
+hrl_text(ModBase) ->
+ io_lib:format(
+ lines(["-ifndef(~s_hrl).",
+ "-define(~s_hrl, true).",
+ "",
+ "%% some record definitions would normally go here...",
+ ""
+ "-endif. %% ~s_hrl"]),
+ [ModBase, ModBase, ModBase]).
+
+get_beam_outdir() ->
+ ".".
+
+get_hrl_outdir() ->
+ ".".
+
+lines(Lines) ->
+ lists:flatten([[L, $\n] || L <- Lines]).
diff --git a/inttest/proto_protobuffs/rebar.config b/inttest/proto_protobuffs/rebar.config
index 6ed3900..86813f3 100644
--- a/inttest/proto_protobuffs/rebar.config
+++ b/inttest/proto_protobuffs/rebar.config
@@ -3,14 +3,12 @@
{erl_opts,
[
- {i, "deps/protobuffs/include"},
{platform_define, "R13|R14", 'NO_CALLBACK_ATTRIBUTE'}
]}.
{deps,
[
- {protobuffs, [], {git, "git://github.com/basho/erlang_protobuffs",
- {branch, "master"}}}
+ {protobuffs, [], {rsync, "../../../inttest/proto_protobuffs/mock/protobuffs"}}
]}.
%% The default proto compiler is protobuffs