2016-12-13 14 views
1

Сценарии в моем package.json в настоящее время выглядит следующим образом:Запуск Стамбул тестового покрытия для модулей узлов через обертки сценариев оболочки

"scripts": { 
    "test": "./spec/run-local-tests.sh", 
    "coverage": "istanbul cover jasmine-node spec", 
    "start": "gulp" 
} 

Тестовый скрипт запускает этот файл .sh:

#!/bin/sh 

echo "Renaming database file produced by previous test run" 
mv -f 'shared-local-instance.db' 'shared-local-instance.db.previous' 
echo "Starting DynamoDB" 
java -Djava.library.path=./DynamoDBLocal_lib -jar dynamodb/DynamoDBLocal.jar -sharedDb & 
export JAVA_PID=$! 
echo "Running Tests" 
./node_modules/jasmine-node/bin/jasmine-node spec 
echo "Cleaning up DynamoDB - killing local instance" 
kill -9 $JAVA_PID 

Однако Теперь я хочу изменить свой coverage скрипт для запуска файла оболочки:

"coverage": "istanbul cover ./spec/run-local-tests.sh" 

Но тогда я получаю ошибка, которая говорит:

echo "Renaming database file produced by previous test run" 
    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 
SyntaxError: Unexpected string 

Есть ли способ, что я могу получить Instanbul и мой файл оболочки для запуска?

ответ

1

RTFM.

Документы Стамбул говорят:

Команда cover может быть использована для получения объекта покрытия и отчетов для любого сценария произвольного узла.

(курсив мой)

istanbul cover нужен сценарий узла. Он не может выполнять покрытие по сценариям оболочки или любому другому произвольному исполняемому файлу.

Вы можете написать скрипт, который делает то, что установки/очистки вам нужно, а затем запускает istanbul cover, и настроить его таким образом:

"scripts": { 
    "test": "./spec/run-local-tests.sh", 
    "coverage": "./spec/run-local-tests-with-coverage.sh", 
    "start": "gulp" 
} 

Или вы могли бы изменить существующий сценарий, возможно, как это:

echo "Running Tests" 
${COVERAGE} ./node_modules/jasmine-node/bin/jasmine-node spec 

Затем вызовите его с переменной окружения набора:

"scripts": { 
    "test": "./spec/run-local-tests.sh", 
    "coverage": "env COVERAGE='istanbul coverage' ./spec/run-local-tests.sh", 
    "start": "gulp" 
} 
+0

Отличный ответ! Благодаря! постскриптум Я прочитал документацию и знал, что istanbul запускает скрипты узлов, мне просто нужна помощь в выяснении того, как запускать мой сценарий оболочки (я новичок в написании сценариев оболочки). Еще раз спасибо за ответ! – Ruth