如何保证测试服务器被杀?

时间:2017-10-27 16:26:45

标签: gnu-make

我是Python的try / finally以及各种shell中的内置陷阱命令的忠实粉丝。我有一个Make目标,我想应用相同的逻辑。假设我有这个目标和依赖项:

test : start-server run-test-group-1 run-test-group-2 stop-server

如果在运行测试阶段期间测试失败,则不会执行停止服务器操作。有没有办法保证执行停止服务器操作,即使没有给出“-k”?我意识到我可以在run-test- *操作中的相关命令之前放置“ - ”,但我认为这会导致make以0状态退出,导致控制进程认为测试成功。我仍然希望父进程知道测试失败。

1 个答案:

答案 0 :(得分:2)

使用shell陷阱机制代替并以递归方式运行make,也许?像这样:

test:
    trap EXIT ERR "$(MAKE) stop-server"; \
    $(MAKE) start-server && \
    $(MAKE) actual-test

actual-test: run-test-group-1 run-test-group-2