Я пытаюсь запустить тесты на подготовленных файлах в хуке перед фиксацией с помощью шутки. Все идет нормально. Получил работу с пакетами pre-commit
и lint-staged
NPM.
Фрагмент из package.json:
{
// ...
"scripts": {
"hook": "lint-staged",
// ...
},
"devDependencies": {
"eslint": "^4.12.1",
"eslint-config-airbnb-base": "^12.1.0",
"eslint-config-prettier": "^2.9.0",
"eslint-plugin-import": "^2.8.0",
"eslint-plugin-prettier": "^2.3.1",
"jest": "^22.0.3",
"jest-junit": "^3.4.0",
"lint-staged": "^6.0.1",
"pre-commit": "^1.2.2",
"prettier": "^1.9.1"
},
"jest": {
"collectCoverageFrom": ["src/**/*.js"],
"coveragePathIgnorePatterns": ["<rootDir>/src/models/"],
"coverageThreshold": {
"global": {
"branches": 80,
"functions": 80,
"lines": 80,
"statements": 80
}
}
},
"pre-commit": ["hook"],
"lint-staged": {
"*.js": ["eslint --fix", "git add", "jest --bail --passWithNoTests --coverage"]
},
// ...
}
Там есть еще что-то, но я думаю, что это важные части.
Проблема, с которой я сталкиваюсь, заключается в том, что если я создаю файлы, которые не имеют никаких тестов или игнорируются из-за "coveragePathIgnorePatterns": ["<rootDir>/src/models/"]
, шутка завершается с 1
, поэтому нет фиксации. Нашел способ обойти это, добавив --passWithNoTests
. Отлично. Но теперь я также хочу проверить покрытие — и это тоже не работает, когда нет тестов (и, следовательно, нет данных о покрытии):
----------|----------|----------|----------|----------|----------------|
File | % Stmts | % Branch | % Funcs | % Lines |Uncovered Lines |
----------|----------|----------|----------|----------|----------------|
All files | Unknown | Unknown | Unknown | Unknown | |
----------|----------|----------|----------|----------|----------------|
Jest: Coverage data for global was not found.
Есть ли другой флаг, который я мог бы использовать, чтобы также игнорировать это для покрытия (например, --passWithNoTests
для реальных тестов)? Или кто-то лучше знает, как это сделать?
Или мне следует пропустить покрытие для этих предварительных тестов?
lint-staged
, который может обрабатывать промежуточные файлы ... может быть, это слишком сложно. Запуск всего теста и включение измененных, но не промежуточных файлов может дать неправильный результат, где он должен отражать точные тесты, которые будут выполняться в CI после отправки. - person Philipp Kyeck   schedule 20.01.2018