Я пытаюсь добавить генерацию отчета о покрытии в проект библиотеки машинописи.
В макет входят следующие каталоги:
project
├─ src
│ ├─ lib ## project code (typescript), *.tsx
│ ├─ test ## test specs (typescript), *.spec.tsx
│ └─ @types ## types I made for a few dependencies that didn't have them
└─ build
├─ lib ## compiled project code (ES5 + type info, with inline sourcemaps), *.js and *.d.ts
└─ test ## compiled test specs (ES5 + type info, with inline sourcemaps), *.spec.js and *.spec.d.ts
У меня есть тестовый скрипт в package.json
, который, кажется, работает правильно:
"test": "mocha --reporter mocha-multi --reporter-options mocha-multi=mocha-multi.json --recursive build/test/**/*.spec.js",
(генерирует 1413 строк вывода; в настоящее время все тесты проходят)
Я пытаюсь понять, как запустить nyc
, чтобы
- Все тесты в
test
выполняются
- Нет файлов в
test
включены в отчет покрытия
- Все файлы кодов в
lib
включены в отчет о покрытии
- Нет информационных файлов типа в
lib
включены в отчет о покрытии
Мне кажется, я правильно понял # 1 с этой командой:
npx nyc mocha --cache --reporter nyan build/test
который имеет этот вывод:
872 _-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_,------,
0 _-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_| /\_/\
0 _-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-^|__( ^ .^)
_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_- "" ""
872 passing (20s)
---------------------|----------|----------|----------|----------|-------------------|
File | % Stmts | % Branch | % Funcs | % Lines | Uncovered Line #s |
---------------------|----------|----------|----------|----------|-------------------|
All files | 88.97 | 91.49 | 84.09 | 89.11 | |
lib | 88.51 | 91.49 | 83.33 | 88.62 | |
Awaitable.tsx | 88.51 | 91.49 | 83.33 | 88.62 |... 79,405,419,420 |
test | 100 | 100 | 100 | 100 | |
Abortable.spec.tsx | 100 | 100 | 100 | 100 | |
Awaitable.spec.tsx | 100 | 100 | 100 | 100 | |
---------------------|----------|----------|----------|----------|-------------------|
(но более красочно; я использую --reporter nyan
, потому что я бы не хотел повторять 1413 строк вывода из тестового сценария)
Этот результат не соответствует целям 2 и 3; этот вопрос о цели 2:
Как сказать nyc исключить test
из отчета о покрытии?
(Меня также беспокоит, что отчет неверен - нет тестов, охватывающих другие тесты, - но это не тот вопрос, о котором идет речь.)
Я пытался добавить в команду множество включений и исключений, ни одно из которых не повлияло на вывод:
- -x build / test
- -x '** / *. Spec.js'
- -x '** / *. Spec.tsx'
- -x 'build / test / **'
- -х тест
- -x 'build / test / ** / *. Spec.js'
- -x 'build / test / ** / *. Spec.tsx'
- -x 'test / **'
- -x 'test / ** / *. Spec.js'
- -x 'test / ** / *. Spec.tsx'
- -n lib
- -n build / lib
- -n src / lib
- -x build / lib
- -x lib
- -x src / lib
- -X тест
- -X build / test
- -X src / test
(Как вы можете видеть, я не уверен, что для них используется basedir; я не ожидал увидеть имена исходных файлов в отчете, но nyc
явно что-то делает с обоими из src
и build
, но не отображается в отчете.)
Я попытался включить параметры после прочтения этого ответа , и это не помогло. После добавления исключений для lib и отсутствия эффекта создается впечатление, что параметр exclude просто не работает. Я не буду переключаться на ES6, как предложено в этом ответе , пока никто, с кем я работаю, не поддерживает IE.