Automake с несколькими наборами тестов (кодирование / развертывание) - PullRequest
2 голосов
/ 20 июня 2011

Я использую Automake для проекта, который в дополнение к обычным модульным тестам начинает дольше запускать тесты стиля интеграции / развертывания. Проблема в том, что при обычном программировании нет необходимости запускать более длинные тесты, только более короткий набор юнит-тестов. Однако для окончательного слияния и / или сборки репозитория необходимо выполнить полный набор тестов.

Есть ли стандартный способ справиться с этим с помощью automake? В идеале я хотел бы просто иметь две цели: обычную цель check для выполнения всего и, возможно, check-lite для запуска сокращенного теста.

Проект распределен по нескольким подпроектам и каталогам, поэтому для обеспечения согласованности идеально подойдет стандартный подход с автоматизацией.

Ответы [ 2 ]

1 голос
/ 28 июня 2011

Я предлагаю добавить опцию --enable-extended-tests в ваш скрипт configure:

AC_MSG_CHECKING([whether to run extended tests])
AC_ARG_ENABLE([extended-tests],
  [AS_HELP_STRING([--enable-extended-tests], [run full integration tests])],
  [enable_extended_tests="yes"], [enable_extended_tests="no"])
AC_MSG_RESULT([$enable_extended_tests])

AM_CONDITIONAL([EXTENDED_TESTS], [test "X$enable_extended_tests" != "Xno"])

Затем вы можете использовать условное выражение Automake в вашем Makefile.am:

if EXTENDED_TESTS
EXTRA_TESTS = extra_test1 extra_test2 ...
else
EXTRA_TESTS =
endif

TESTS = $(EXTRA_TESTS) normal_test1 normal_test2 ...
0 голосов
/ 29 октября 2015

Если вы разбили свой набор тестов на отдельные каталоги в зависимости от типа теста, то вы можете добавить некоторые дополнительные цели на верхний уровень Makefile.am для выполнения частичных тестов.

Например, еслиВаше дерево организовано как:

$(srcdir)
  - tests
     - unit
     - integration

Вы можете добавить следующее в make-файл:

check-unit:
    $(MAKE) $(AM_MAKEFLAGS) -C tests/unit check

check-integration:
    $(MAKE) $(AM_MAKEFLAGS) -C tests/integration check

Теперь, когда вы запустите make check-unit, оно будет запускать только ваши модульные тесты.А запуск make check-integration запустит вторую половину тестов.Стандартная цель make check продолжит работу всего пакета.

Если вы не можете организовать все тесты в одном каталоге, вы можете добавить дополнительные вызовы $(MAKE) для целей.Это требует определенных знаний о структуре проекта на верхнем уровне, но не существует четкого способа передачи необходимой информации из файлов Makefile.am в подкаталогах.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...