Команда Makefile для запуска набора реагирующих тестов в дочерней папке - PullRequest
0 голосов
/ 24 октября 2019

Я пытаюсь создать Makefile, который запускает набор тестов для моего приложения реагирования. Из корневой папки приложение реакции находится по адресу frontend/.

. Какую команду make я могу создать для достижения этой цели? Я попробовал следующее, но не повезло:

test-frontend:
    cd ./frontend/
    npm test

test-frontend:
    npm test ./frontend/

test-frontend:
    cd ./frontend/
    npm run-script test

Вот ошибка, которую я получаю:

npm ERR! code ENOENT
npm ERR! syscall open
npm ERR! path /path/to/dir/package.json
npm ERR! errno -2
npm ERR! enoent ENOENT: no such file or directory, open '/path/to/dir/package.json'
npm ERR! enoent This is related to npm not being able to find a file.
npm ERR! enoent

npm ERR! A complete log of this run can be found in:
npm ERR!     /$HOME/.npm/_logs/2019-10-24T02_23_23_195Z-debug.log
make: *** [test-frontend] Error 254

Ответы [ 2 ]

0 голосов
/ 01 ноября 2019

Вы пытаетесь делать вещи, для которых Makefile не предназначен. Вы уже укушены одним из предостережений Makefile: каждая командная строка запускается в своей собственной оболочке.

Практическое правило: рецепт правила должен создать имя файла с именем, аналогичным цели правила.

Вот правило (для уточнения терминов):

target:
  recipe command lines
  should create file named target

Есть некоторые исключения из этого практического правила. Наиболее заметно make clean и make install. Оба обычно не создают файлы с именем clean или install. Можно утверждать, что make test также может быть исключением из этого практического правила.

Вы наткнулись только на предупреждение о смене каталога. Который является распространенным предупреждением, чтобы споткнуться при написании make-файлов. Это даже упоминается в руководстве: https://www.gnu.org/software/make/manual/html_node/Execution.html. Но имейте в виду, что это только одно из многих предостережений, которые делает make.

Если это расширение вашего (ab) использования make-файла для запускаКоманды тогда все может быть хорошо. Но если вы хотите расширить функциональность и начать спотыкаться от предостережения к предостережению, то пришло время переосмыслить ваш подход. Либо извлеките рецепт из собственного скрипта, либо напишите скрипт-оболочку вокруг вашего make-файла. И если вы думаете о добавлении обработки аргументов в ваш make-файл, то сначала прочтите это: Передача аргументов в «make run»

По иронии судьбы вы также используете функцию выполнения команд npm: npm run-script. Это, безусловно, имеет свой набор предостережений. Я не знаю, потому что я не использовал npm так много.

0 голосов
/ 24 октября 2019

Комментарии ответили на мой вопрос. Ответ:

test-frontend:
    cd ./frontend/ && npm run-script test

Или, если вы хотите использовать отдельные строки для удобства чтения:

test-frontend:
    cd ./frontend/ && \
    npm run-script test
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...