Образец 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')
Другие вопросы по тегам