如何让Rebar在发布目录中运行Common Test?

时间:2012-06-29 15:54:51

标签: erlang rebar common-test

我有一个带有顶级版本目录的Rebar项目,该目录只包含组件应用程序作为依赖项,并包含reltool配置。

我的一些应用程序在test子目录中有公共测试套件,我可以使用rebar ct运行这些测试。

现在我想为整个版本创建一个Common Test套件。但是,当我在顶级目录中运行rebar ct skip_deps=true时,我得到:

Command 'ct' not understood or not applicable

如何让Rebar运行我的测试?

1 个答案:

答案 0 :(得分:10)

Rebar有三组模块(参见rebar.app):

  • any_dir_modules,适用于项目中的任何目录;
  • app_dir个模块,仅适用于包含与src/*.app.srcebin/*.app匹配的文件的目录(请参阅rebar_app_utils:is_app_dir/1);和
  • rel_dir个模块,仅适用于包含reltool.configreltool.config.script的目录(请参阅rebar_rel_utils:is_rel_dir/1)。

负责运行Common Test的rebar_ct模块属于app_dir类别,因此您的顶级版本目录不符合条件。

您可以通过指定rebar_ct是插件来解决此问题,因为插件会绕过模块类别机制。将以下行放在rebar.config

{plugins, [rebar_ct]}.

你会得到:

$ rebar ct skip_deps=true
==> foo (ct)
==> bar (ct)
==> my_rel (ct)
DONE.
Testing src.my_rel: TEST COMPLETE, 0 ok, 0 failed of 0 test cases