Образец Glob включает все JS, исключая определенные окончания
Я хотел бы использовать шар с мокко. К сожалению, mocha не поддерживает исключение и не передает параметры glob, поэтому я должен решить это в одном шаблоне без использования параметра игнорирования glob. https://github.com/mochajs/mocha/issues/1577 Другим решением будет использование mocha.opts, но это не совместимо с кармой, я не уверен почему. Я мог бы определить совместимый с кармой файл опций для кармы и совместимый с узлом файл опций для узла, но он сразу же прекратит работу после устранения проблемы, поэтому я ищу другое решение. https://github.com/karma-runner/karma-mocha/issues/88
Мне нужно соответствовать test/**/*.spec.js
и исключить test/**/*.karma.spec.js
из результатов. Возможно ли это с одним шаблоном шара?
2 ответа
То, что мы говорим здесь, это AND("*.spec.js", NOT("*.karma.spec.js"))
выражается с помощью логических операторов. Я проверил документацию glob, она не поддерживает AND
логический оператор.
К счастью для нас, мы можем преобразовать этот оператор в OR
с отрицанием: NOT(OR(NOT("*.spec.js"), "*.karma.spec.js"))
, Я опробовал test/**/!((!(*.spec.js)|*.karma.spec.js))
, Но это не работает. Он пытается потребовать модуль с test/features
путь, который является путем к каталогу, а не к файлу js, поэтому неудивительно, что он не управляет им. Я не знаю, что это за ошибка, но она явно не работает.
Другое возможное решение забыть это AND
оператор, и использовать только отрицание с NOT("*.karma").spec.js
, Я попробовал это с test/**/!(*.karma).spec.js
, который работал правильно.
Вы всегда можете использовать mocha
а также find
вместе Например, следующая команда вернет список test/**/*.spec.js
и исключить test/**/*.karma.spec.js
:
find test -name '*.spec.js' ! -path '*.karma.spec.js'
Объедините это с mocha
добиться того, что вы хотите:
mocha $(find test -name '*.spec.js' ! -path '*.karma.spec.js')