Skip to content

Commit

Permalink
New: no-unused-modules rule - added stricter check for node_modules
Browse files Browse the repository at this point in the history
  • Loading branch information
rfermann committed Dec 23, 2018
1 parent 191c77b commit ae9942f
Show file tree
Hide file tree
Showing 2 changed files with 23 additions and 25 deletions.
31 changes: 7 additions & 24 deletions src/rules/no-unused-modules.js
Original file line number Diff line number Diff line change
Expand Up @@ -32,7 +32,7 @@ const exportList = new Map()
const ignoredFiles = new Set()

const isNodeModule = path => {
return path.includes('node_modules')
return /\/(node_modules)\//.test(path)
}

/**
Expand Down Expand Up @@ -182,31 +182,14 @@ const doPreparation = (src, ignoreExports, context) => {
preparationDone = true
}

// const newNamespaceImportExists = specifiers => {
// let hasNewNamespaceImport = false
// specifiers.forEach(specifier => {
// if (specifier.type === IMPORT_NAMESPACE_SPECIFIER) {
// hasNewNamespaceImport = true
// }
// })
// return hasNewNamespaceImport
// }

const newNamespaceImportExists = specifiers => specifiers.some(({ type }) => type === IMPORT_NAMESPACE_SPECIFIER)

const newDefaultImportExists = specifiers => specifiers.some(({ type }) => type === IMPORT_DEFAULT_SPECIFIER)

// const newDefaultImportExists = specifiers => {
// let hasNewDefaultImport = false
// specifiers.forEach(specifier => {
// if (specifier.type === IMPORT_DEFAULT_SPECIFIER) {
// hasNewDefaultImport = true
// }
// })
// return hasNewDefaultImport
// }
const newNamespaceImportExists = specifiers =>
specifiers.some(({ type }) => type === IMPORT_NAMESPACE_SPECIFIER)

const newDefaultImportExists = specifiers =>
specifiers.some(({ type }) => type === IMPORT_DEFAULT_SPECIFIER)

module.exports = {
isNodeModule,
doPreparation,
getSrc,
meta: {
Expand Down
17 changes: 16 additions & 1 deletion tests/src/rules/no-unused-modules.js
Original file line number Diff line number Diff line change
Expand Up @@ -4,8 +4,8 @@ import { RuleTester } from 'eslint'
import { expect } from 'chai'
import fs from 'fs'

const doPreparation = require( '../../../src/rules/no-unused-modules').doPreparation
const getSrc = require( '../../../src/rules/no-unused-modules').getSrc
const isNodeModule = require( '../../../src/rules/no-unused-modules').isNodeModule

const ruleTester = new RuleTester()
, rule = require('rules/no-unused-modules')
Expand All @@ -32,6 +32,21 @@ describe('getSrc returns correct source', () => {
})
})

describe('isNodeModule returns correct value', () => {
it('true for "/node_modules/"', () => {
expect(isNodeModule('/node_modules/')).to.be.true
})
it('true for "/node_modules/package/file.js"', () => {
expect(isNodeModule('/node_modules/package/file.js')).to.be.true
})
it('false for "/node_modules.js"', () => {
expect(isNodeModule('/node_modules.js')).to.be.false
})
it('false for "node_modules_old"', () => {
expect(isNodeModule('node_modules_old')).to.be.false
})
})

// tests for missing exports
ruleTester.run('no-unused-modules', rule, {
valid: [
Expand Down

0 comments on commit ae9942f

Please sign in to comment.