В более крупном проекте, я установил ./tests/Makefile.am
для запуска ряда тестов, когда я звоню make check
. Файл global_wrapper.c
содержит код установки/пробоя и вызывает функции тестирования, реализованные в нескольких подкаталогах.Automake: как эффективно обрабатывать глобальные и локальные «make check»?
TESTS = global_test
check_PROGRAMS = global_test
global_test_SOURCES = global_wrapper.c foo/foo_test.c bar/bar_test.c
Отлично работает. Но тесты занимают много времени, поэтому я хотел бы иметь возможность выполнять только тесты из одного субдира. Так я сделал это сначала.
Я добавил подкаталоги:
SUBDIRS = foo bar
В подкаталогах, я добавил местные обертки и Makefile.am
«S:
TESTS = foo_test
check_PROGRAMS = foo_test
# the foo_test.c here is of course the same as in the global Makefile.am
foo_test_SOURCES = foo_wrapper.c foo_test.c
Это тоже здорово работает - когда я звоню make check
в подкаталоге foo
, выполняются только тесты foo.
Однако, когда я теперь называю make check
в ./tests
, все тесты выполняются дважды. Один раз через global_test
и один раз через локальные тестовые программы.
Если я опускаю оператор SUBDIRS
в глобальном Makefile.am
, подкаталог make-файлов не создается. Если я опускаю TESTS
из локального Makefile.am
, то make check
ничего не делает для локальных каталогов.
Я не знаком с automake, но я уверен, что есть какой-то способ решить эту дилемму. Может ли кто-нибудь здесь дать мне подсказку?
Хороший совет с настройкой переменной окружения, но это не помогает с моей проблемой: наличие для глобального тестового запуска сводки всех * тестов * выполняется на * конце * вывода. – DevSolar
Файл Makefile, созданный Automake, выводит итоговую информацию в конце. Он сообщает вам: «Все 2 теста прошли». Если вам нужно что-то более явное, ваш тест должен сгенерировать для вас результат. См. Примерную схему проверки контрольной единицы. –