У меня есть цель Makefile, который выглядит следующим образомЗапустить сервер, запустить тесты, остановить сервер
integration-test: git-hooks
java -Djava.library.path=$$(pwd)/test/integration/lib/DynamoDBLocal_lib \
-Djava.util.logging.config.file=/dev/null \
-Dorg.eclipse.jetty.LEVEL=WARN \
-Dlog4j.com.amazonaws.services.dynamodbv2.local.server.LocalDynamoDBServerHandler=OFF \
-jar $$(pwd)/test/integration/lib/DynamoDBLocal.jar \
-inMemory \
-port 8000 &
sleep 3
./node_modules/.bin/mocha --compilers coffee:coffee-script/register \
--reporter spec \
test/integration/main.coffee
ps -ef | grep [D]ynamoDBLocal_lib | awk '{print $$2}' | xargs kill
Вот что я делаю:
- команда Java запускает локальный экземпляр Амазонки DynamoDB.
- Дает 3 секунды, чтобы начать
- Я бег моих тестов интеграции
- я убить базу данных
То, что я хотел бы это убить базу данных, независимо от того, что испытания прошли или нет. Чтобы сделать это, я полагаю, мне нужен статус выхода тестовой команды и возвращать ее, как в случае неудачи тестов, так и при их успешной работе.
Что происходит, так это то, что если тесты проходят, база данных будет правильно убита, если тесты потерпят неудачу, это не так.
Я прочитал in the docs, что вы можете предварять -
перед командой, чтобы make
игнорировать его, если он производит ненулевое состояние выхода, проблема, если я делаю то, что я не знаю, если тесты не удалось или нет, поскольку $?
всегда будет возвращать 0.
Какова обычная практика в этом сценарии? Я в порядке, разделяя цель в большем количестве целей, если это решает мою проблему.
спасибо.
Является ли «тесты вызваны ошибкой» и «тесты не работают» одинаково? И выполните тесты, чтобы написать информацию, которую вы хотите вывести на экран? Или вы хотите вернуть значение, и если да, то как вы хотите, чтобы Make отображал эту информацию? – Beta
Да, в этом случае это одно и то же. Я хочу статус выхода, да. Make уже отображает вывод моей команды, я просто хочу использовать статус завершения тестовой команды и возвращать ее, я думаю, что, сделав это, команда, в свою очередь, вернет статус отсутствия 0, не так ли? Я отредактировал свой ответ, чтобы сделать его более понятным. –