diff --git a/src/rules/c8-prevent-ignore.js b/src/rules/c8-prevent-ignore.js new file mode 100644 index 00000000..6a12ae60 --- /dev/null +++ b/src/rules/c8-prevent-ignore.js @@ -0,0 +1,17 @@ +module.exports = { + create: (context) => { + const sourceCode = context.getSourceCode(); + + const testComment = (node) => { + if (node.value.startsWith(' c8 ignore ')) { + context.report({ node, message: 'Not allowed to ignore coverage in this file.' }); + } + }; + + return { + Program() { + sourceCode.getAllComments().filter((token) => token.type !== 'Shebang').forEach(testComment); + } + }; + } +}; diff --git a/test/index.spec.js b/test/index.spec.js index 6a1c5ea1..da5862f4 100644 --- a/test/index.spec.js +++ b/test/index.spec.js @@ -5,6 +5,7 @@ const index = require('../src/index'); describe('Testing index', () => { it('Test Exported Rules', () => { expect(Object.keys(index.rules).sort()).to.deep.equal([ + 'c8-prevent-ignore', 'istanbul-prevent-ignore', 'kebab-case-enforce', 'prevent-typeof-object' diff --git a/test/rules/c8-prevent-ignore.spec.js b/test/rules/c8-prevent-ignore.spec.js new file mode 100644 index 00000000..939a89b0 --- /dev/null +++ b/test/rules/c8-prevent-ignore.spec.js @@ -0,0 +1,15 @@ +const rule = require('../../src/rules/c8-prevent-ignore'); +const tester = require('./rule-tester'); + +tester.run('c8-prevent-ignore', rule, { + valid: [ + '/* some comment */', + '// c8 ignore' + ], + invalid: [ + { + code: '/* c8 ignore */', + errors: ['Not allowed to ignore coverage in this file.'] + } + ] +});