Включить непрерывное последовательное выполнение команды при ошибке npm ELIFECYCLE - PullRequest
0 голосов
/ 23 апреля 2020

У меня есть настройки jest и jest-puppeteer для запуска тестов. Выполнить тесты достаточно просто, используя:

jest test.test --config="path/to/config.json"

Однако, когда я помещаю это в пакет. json:

...
"scripts": {
    "test:jest": "jest test.test --config=\"path/to/config.json\""
},
...

И затем запускаю:

npm run test:jest

Тест выполняется нормально, но в конце я получаю следующую ошибку:

npm ERR! code ELIFECYCLE
npm ERR! errno 1
npm ERR! test@1.0.0 jest:temp: `jest test.test --config="path/to/config.json"`
npm ERR! Exit status 1
npm ERR! 
npm ERR! Failed at the test@1.0.0 jest:temp script.
npm ERR! This is probably not a problem with npm. There is likely additional logging output above.

npm ERR! A complete log of this run can be found in:
npm ERR!     /Users/obihill/.npm/_logs/2020-04-23T12_18_23_546Z-debug.log

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

У меня проблема в том, что мне нужно запустить этот тест, а затем второй тест в последовательности:

npm run test:jest && npm run test:postjest

Но из-за неудачных тестов и результирующего кода ELIFECYCLE вторая команда никогда не запускается. После некоторых исследований я нашел способ подавления ошибок . Теперь я запускаю следующее:

npm run test:jest --silent && npm run test:postjest

И ошибок нет, но test:postjest никогда не запускается. Все тесты должны пройти test:jest для запуска второй команды.

Есть ли способ переопределить это поведение и разрешить npm run test:postjest запускаться последовательно независимо от того,

1 Ответ

0 голосов
/ 23 апреля 2020

Удалось найти ответ.

Я заставил его работать, используя цепной оператор в команде для корректного выхода при ошибке.

Вот мое обновленное package.json:

...
"scripts": {
    "test:jest": "jest test.test --config=\"path/to/config.json\" || exit 0"
},
...

|| - оператор цепочки в Linux. Как это работает, если первая команда [jest test.test --config=\"path/to/config.json\"] завершится неудачно, будет запущена вторая команда [exit 0]. Поскольку вторая команда является успешным сигналом выхода [0 == success, 1 == error], команда успешно завершается, и можно запустить другую команду. И если первая команда выполнена успешно, то exit 0 пропускается.

Я также отказался от опции --silent, так как она больше не нужна.

Надеюсь, вы быстро ее найдете, если столкнетесь с та же проблема.

...