Сценарий Composer для запуска фонового процесса, время жизни которого привязано к сценарию Composer - PullRequest
0 голосов
/ 06 января 2019

Я начал экспериментировать с Composer Scripts .

У меня есть проект, в котором есть «Функциональные тесты» конечных точек API. Для запуска всего набора тестов необходимо выполнить следующие команды по порядку:

  1. composer install для установки всех необходимых зависимостей бэкэнд-API
  2. php yii server --test для запуска облегченного сервера, подключенного к «тестовой» базе данных MySQL. Тестовый сервер начинает работать на localhost:9000.
  3. sh vendor/bin/phpunit --configuration tests/functional/phpunit.xml для запуска реальных тестов. Эта последняя команда запускает выполнение всех тестовых случаев, большинство из которых выполняет HTTP-вызовы на облегченный сервер, запущенный на шаге 2.

Я хотел бы автоматизировать и «атомизировать» этот трехэтапный процесс в единый скрипт Composer, который можно легко запускать, убивать и перезапускать без особых усилий.

Вот мой текущий прогресс:

  "scripts": {
    "test-functional": [
      "@composer install",
      "php yii server --test",
      "sh vendor/bin/phpunit --configuration tests/functional/phpunit.xml"
    ]
  }

Проблема в том, что 2-я команда (php yii server --test) «крадет» терминал, потому что встроенный облегченный сервер PHP требует, чтобы терминал был открыт во время выполнения команды. Убийство команды также убивает облегченный сервер. Я попытался добавить суффикс второго шага сценария к &, что обычно заставляет процессы идти в фоновом режиме, а не красть терминал, но кажется, что этот трюк не работает для скриптов Composer. Любой другой способ или возможность, которую я пропускаю?

Моя конечная цель - выполнить 3 шага атомарным способом, вывести результаты тестов и завершить команду, очистив все (включая уничтожение сервера lite, запущенного на шаге 2).

...