Rebar eunit пропускает все тесты приложения, если корневое приложение не включено
Моя проблема в том, что я не могу запустить тесты 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 (у меня также есть файл rebar.config в apps/app1.
Однако, если я попытаюсь
$ 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
Когда я включаю приложение root, оно работает:
$ rebar eunit skip_deps=true apps=rootapp,app1
Несмотря на то, что я действительно хочу проверить app1
не rootapp
это действительно неудобно, так как SublimeErl
Плагин для SublimeText 2 всегда будет устанавливать приложения для приложения, в котором содержится тестируемый модуль. Таким образом, тесты всегда будут неудачными, потому что на самом деле тесты вообще не будут выполняться.
Короче говоря: есть ли что-то, что я могу настроить в любом из файлов rebar.config, чтобы можно было запускать тесты для одного приложения в /apps
без включения рут-приложения?
1 ответ
Лично я предпочитаю помещать основное приложение в свою собственную OTP-совместимую папку в apps
, Просто создайте новое приложение rootapp
в apps
и включите его в свой rebar.config
:
{sub_dirs, ["apps/app1",
"apps/app2",
"apps/rootapp"]}.
Вы также можете включить apps
каталог в ваш путь к lib:
{lib_dirs, ["apps"]}.
Возможно, вы захотите заглянуть в блог Фреда Герберта "Так же плохо, как и все остальное".
С этой настройкой вы сможете запустить:
rebar skip_deps=true eunit
который будет запускать все тесты eunit приложений в apps
,