2015-08-17 4 views
1

У меня есть тест, который зависит от конкретного HTTP-сервера, который требует, чтобы я начал с известной установки для тестов.Как закрыть экран из Makefile?

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

test: 
    screen -S test_http_server -d -m start_my_test_http_server     
    # run my tests here        
    screen -S test_http_server -X kill # works from bash but not makefile :/ 

Все отлично работает для закрытия или убийства сеанса (который не будет работать, если я запускаю его в bash впоследствии), за исключением.

+2

Я не могу думать ни о какой причине, которая потерпит неудачу. Что произойдет, если вы поместите две команды экрана и промежуточные тесты в сценарий оболочки и просто выполните этот скрипт из Makefile? – chepner

ответ

1

Похоже, что с использованием префикса @ (который я сделал, но не был отправлен в исходном примере кода), который подавляет нормальное «эхо» команды, каким-то образом препятствует закрытию экрана.

Неисправности из-за использования @ префикса.

test: 
    @screen -S test_http_server -d -m start_my_test_http_server     
    # run my tests here        
    @screen -S test_http_server -X kill 

Исправлена ​​ошибка с файлом, который работает по назначению.

test: 
    screen -S test_http_server -d -m start_my_test_http_server     
    # run my tests here        
    screen -S test_http_server -X kill