coffeelint-no-operation-expression
Version:
Coffeelint rule that detects code that doesn't do anything
63 lines (54 loc) • 2.03 kB
text/coffeescript
fs = require 'fs'
expect = require('chai').expect
CoffeeScript = require 'coffee-script'
Rule = require '../index'
getFixtureAST = (fixture)->
source = fs.readFileSync("#{__dirname}/fixtures/#{fixture}.coffee").toString()
return CoffeeScript.nodes source
describe 'lint the things', ->
getErrors = (fixture)=>
= new Rule()
.errors = []
astApi =
config: use_strict: {}
createError: (e) -> e
.lintAST getFixtureAST(fixture), astApi
.errors.sort (a, b)->
return a.lineNumber > b.lineNumber
return
it 'Numbers', =>
getErrors('numbers')
expect(.errors.length).to.be.equal(6)
expect(.errors[0].lineNumber).to.be.equal(2)
expect(.errors[1].lineNumber).to.be.equal(5)
expect(.errors[2].lineNumber).to.be.equal(10)
expect(.errors[3].lineNumber).to.be.equal(16)
expect(.errors[4].lineNumber).to.be.equal(27)
expect(.errors[5].lineNumber).to.be.equal(33)
return
it 'strings', =>
getErrors('strings')
expect(.errors.length).to.be.equal(6)
expect(.errors[0].lineNumber).to.be.equal(2)
expect(.errors[1].lineNumber).to.be.equal(5)
expect(.errors[2].lineNumber).to.be.equal(10)
expect(.errors[3].lineNumber).to.be.equal(16)
expect(.errors[4].lineNumber).to.be.equal(27)
expect(.errors[5].lineNumber).to.be.equal(33)
return
it 'functions', =>
getErrors('funcs')
expect(.errors.length).to.be.equal(2)
expect(.errors[0].lineNumber).to.be.equal(2)
expect(.errors[1].lineNumber).to.be.equal(7)
return
it 'random tests', =>
getErrors('basic')
expect(.errors.length).to.be.equal(5)
expect(.errors[0].lineNumber).to.be.equal(9)
expect(.errors[1].lineNumber).to.be.equal(16)
expect(.errors[2].lineNumber).to.be.equal(17)
expect(.errors[3].lineNumber).to.be.equal(25)
expect(.errors[4].lineNumber).to.be.equal(27)
return
return