我的问题是如果不包括根应用程序,我就无法为单个应用程序或模块运行 eunit 测试。我的目录布局看起来有点像这样:
├── apps
│ ├── app1
│ └── app2
├── deps
│ ├── amqp_client
│ ├── meck
│ ├── rabbit_common
│ └── ranch
├── rebar.config
├── rel
└── src
├── rootapp.app.src
├── rootapp.erl
├── rootapp.erl
└── rootapp.erl
现在,我能做的是:
$ rebar eunit skip_deps=true
它为所有应用程序运行测试。另外,我可以这样做:
$ cd apps/app1/
$ rebar eunit skip_deps=true
它运行 app1 的测试(我在 apps/app1 中也有一个 rebar.config。
但是,如果我尝试
$ rebar eunit skip_deps=true apps=app1
什么也没做。没有输出。尝试详细模式给了我:
$ rebar -vv eunit skip_deps=true apps=app1
DEBUG: Consult config file "/Users/myuser/Development/erlang/rootapp/rebar.config"
DEBUG: Rebar location: "/usr/local/bin/rebar"
DEBUG: Consult config file "/Users/myuser/Development/erlang/erlactive/src/rootapp.app.src"
DEBUG: Skipping app: rootapp
当我包含根应用程序时,它可以工作:
$ rebar eunit skip_deps=true apps=rootapp,app1
尽管事实上,我实际上想要测试app1
,而不是rootapp
,这真的很不舒服,因为SublimeErl
SublimeText 2 的插件总是将应用程序设置为包含被测模块的应用程序。所以测试总是会失败,因为实际上没有测试将运行。
长话短说:我可以在任何 rebar.config 文件中配置一些东西,以便在/apps
不包括根应用程序的情况下运行一个应用程序的测试吗?