Я настраиваю тесты для проекта Node.js. Тесты включают взаимодействие со статическим контентом (изображениями), который должен подаваться из локального http-server
.
Когда тесты завершены - успешно или неудачно - я хочу завершить процесс на сервере и выйти с правильным кодом. В моих скриптах npm я придумал следующее:
"server": "http-server testdata -p 9876 -s",
"testcmd": "...",
"test": "npm run server & npm run testcmd && kill $(lsof -t -i:9876) || (kill $(lsof -t -i:9876) && exit 1)",
, который «работает», но имеет две проблемы:
- повторяет код, так как я не знаю, как что-либо запускать, вместо определения
||
и &&
кейсов
- любой ненулевой код выхода
testcmd
всегда будет преобразован в 1
код выхода - в идеале я хотел бы распространить точный код выхода
Я попытался прочитать об этом и нашел людей, говорящих о ловушках, но не смог заставить его работать.
Что было бы хорошим способом упростить этот сценарий потока управления?