У меня есть цель 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 от Amazon.
- Я даю ему 3 секунды, чтобы начать
- Я запускаю свои интеграционные тесты
- Я убиваю базу данных
Чего бы мне хотелось, так это убить базу вне зависимости от того, прошли тесты или нет. Для этого, я полагаю, мне нужен статус выхода тестовой команды и вернуть его, как в случае неудачи тестов, так и в случае их успеха.
Происходит следующее: если тесты проходят успешно, база данных уничтожается корректно, а если тесты не пройдены, то нет.
Я читал в документации, что вы можете добавить -
перед командой, чтобы make
проигнорировала ее, если она выдает ненулевой статус выхода, проблема, если я это сделаю, заключается в том, что я не знаю, завершились ли тесты неудачно или нет, поскольку $?
всегда будет возвращать 0.
Какова обычная практика в этом сценарии? Я могу разделить цель на несколько целей, если это решит мою проблему.
Спасибо.