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