2014-03-09 6 views
1

моя проблема в том, что я не могу запускать тесты eunit для одного приложения или модуля без включения корневого приложения. Мой каталог laylout выглядит как это:Rebar 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 в приложениях/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 

Когда я включаю корень приложения, оно работает:

$ rebar eunit skip_deps=true apps=rootapp,app1 

Несмотря на то, что я на самом деле хочу, чтобы проверить app1, не rootapp, это очень неудобно, так как SublimeErl плагин для SublimeText 2 всегда будет устанавливать приложения в приложение, что испытуемый модуль содержится в. Поэтому тесты всегда будут терпеть неудачу, потому что на самом деле тесты вообще не будут выполняться.

Короче говоря: есть ли что-то, что я могу настроить в любом из файлов rebar.config, чтобы можно было запускать тесты для одного приложения в /apps без включения корневого приложения?

ответ

2

Лично я предпочитаю помещать основное приложение в свою собственную папку, совместимую с OTP, в apps. Просто создайте новое приложение rootapp в apps и включить его в rebar.config:

{sub_dirs, ["apps/app1", 
      "apps/app2", 
      "apps/rootapp"]}. 

Вы также, возможно, придется включить каталог apps в свой Lib путь:

{lib_dirs, ["apps"]}. 

Вы можете иметь вид в сообщение блога Фреда Герберта “As bad as anything else”.

С этим создана, вы должны быть в состоянии выполнить:

rebar skip_deps=true eunit 

, который будет работать все eunit тесты приложений в apps.

+0

Я думал, что должно быть «корневое приложение», но это имеет смысл. И спасибо за то, что поделился записью Фреда. – jaw

+0

Просто протестирован и работает! Большое спасибо! – jaw

+0

Добро пожаловать. :) – Tilman

 Смежные вопросы

  • Нет связанных вопросов^_^