[英]Is there a way to tell rebar not to run eunit tests for the dependencies?
[英]Rebar eunit skips all app tests if root app is not included
我的問題是,如果不包含根應用程序,則無法為單個應用程序或模塊運行eunit測試。 我的目錄laylout看起來像這樣:
├── 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
,但是這真的很不舒服,因為SublimeText 2的SublimeErl
插件將始終將應用程序設置為包含被測模塊的應用程序。因此,測試將始終失敗,因為實際上,根本不會運行任何測試。
長話短說:我可以在任何rebar.config文件中進行配置,以使在/apps
運行一個應用程序的測試成為可能,而無需包括根應用程序嗎?
我個人更喜歡把主要應用到自己的OTP兼容的文件夾apps
。 只需在apps
創建一個新的應用程序rootapp
並將其包含在rebar.config
:
{sub_dirs, ["apps/app1",
"apps/app2",
"apps/rootapp"]}.
您可能還必須將apps
目錄包含在您的lib路徑中:
{lib_dirs, ["apps"]}.
您可能想看看Fred Herbert的博客文章“其他方面一樣糟糕” 。
通過此設置,您應該能夠運行:
rebar skip_deps=true eunit
它將運行應用程序中apps
所有eunit測試。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.