浏览代码

fix yrl compiler and add test (#1906)

pull/1908/head
Tristan Sloughter 6 年前
提交者 GitHub
父节点
当前提交
763fd05a0f
找不到此签名对应的密钥 GPG 密钥 ID: 4AEE18F83AFDEB23
共有 2 个文件被更改,包括 21 次插入4 次删除
  1. +1
    -1
      src/rebar_compiler_yrl.erl
  2. +20
    -3
      test/rebar_compile_SUITE.erl

+ 1
- 1
src/rebar_compiler_yrl.erl 查看文件

@ -34,7 +34,7 @@ compile(Source, [{_, OutDir}], _, Opts) ->
AllOpts = [{parserfile, Target} | Opts],
AllOpts1 = [{includefile, filename:join(OutDir, I)} || {includefile, I} <- AllOpts,
filename:pathtype(I) =:= relative],
case yeec:file(Source, AllOpts1 ++ [{return, true}]) of
case yecc:file(Source, AllOpts1 ++ [{return, true}]) of
{ok, _} ->
ok;
{ok, _Mod, Ws} ->

+ 20
- 3
test/rebar_compile_SUITE.erl 查看文件

@ -832,19 +832,36 @@ dont_recompile_yrl_or_xrl(Config) ->
"Erlang code.",
ok = ec_file:write(Xrl, XrlBody),
Yrl = filename:join([AppDir, "src", "not_a_real_yrl_" ++ Name ++ ".yrl"]),
ok = filelib:ensure_dir(Yrl),
YrlBody = ["Nonterminals E T F.\n"
"Terminals '+' '*' '(' ')' number.\n"
"Rootsymbol E.\n"
"E -> E '+' T: {'$2', '$1', '$3'}.\n"
"E -> T : '$1'.\n"
"T -> T '*' F: {'$2', '$1', '$3'}.\n"
"T -> F : '$1'.\n"
"F -> '(' E ')' : '$2'.\n"
"F -> number : '$1'.\n"],
ok = ec_file:write(Yrl, YrlBody),
XrlBeam = filename:join([AppDir, "ebin", filename:basename(Xrl, ".xrl") ++ ".beam"]),
YrlBeam = filename:join([AppDir, "ebin", filename:basename(Yrl, ".yrl") ++ ".beam"]),
rebar_test_utils:run_and_check(Config, [], ["compile"], {ok, [{app, Name}]}),
ModTime = filelib:last_modified(XrlBeam),
XrlModTime = filelib:last_modified(XrlBeam),
YrlModTime = filelib:last_modified(YrlBeam),
timer:sleep(1000),
rebar_test_utils:run_and_check(Config, [], ["compile"], {ok, [{app, Name}]}),
NewModTime = filelib:last_modified(XrlBeam),
NewXrlModTime = filelib:last_modified(XrlBeam),
NewYrlModTime = filelib:last_modified(YrlBeam),
?assert(ModTime == NewModTime).
?assert(XrlModTime == NewXrlModTime),
?assert(YrlModTime == NewYrlModTime).
delete_beam_if_source_deleted(Config) ->
AppDir = ?config(apps, Config),

正在加载...
取消
保存