UNPKG

coffeelint-multiple-callback

Version:

Coffeelint rule that checks for callbacks being called multiple times

109 lines (84 loc) 2.52 kB
fs = require 'fs' expect = require('chai').expect CoffeeScript = require 'coffee-script' Rule = require '../index' _ = require 'lodash' getFixtureAST = (fixture)-> source = fs.readFileSync("#{__dirname}/fixtures/#{fixture}.coffee").toString() return CoffeeScript.nodes source describe 'lint the things', -> getErrors = (fixture)=> @rule = new Rule() @rule.errors = [] astApi = config: use_strict: {} createError: (e) -> e @rule.lintAST getFixtureAST(fixture), astApi @rule.errors.sort (a, b)-> return a.lineNumber > b.lineNumber return hasErrorAtLine = (line_number)=> error_at_line = _.find @rule.errors, (obj)-> obj.lineNumber is line_number if error_at_line return true return false checkFixtureForHits = (fixture)=> fixture_source = fs.readFileSync("#{__dirname}/fixtures/#{fixture}.coffee").toString() fixture_nodes = CoffeeScript.nodes fixture_source @rule = new Rule() @rule.errors = [] astApi = config: use_strict: {} createError: (e) -> e @rule.lintAST fixture_nodes, astApi @rule.errors.sort (a, b)-> return a.lineNumber > b.lineNumber regex_is_hit = /#\s*HIT\s*$/i _.each fixture_source.split('\n'), (line_content, key)=> line_number = key + 1 if regex_is_hit.test line_content expectHasErrorAtLine line_number else expectHasNoErrorAtLine line_number return return expectHasErrorAtLine = (line_number)=> has_err = hasErrorAtLine line_number expect(has_err, "Could not find HIT at line #{line_number}").to.be.true return expectHasNoErrorAtLine = (line_number)=> has_err = hasErrorAtLine line_number expect(has_err, "Found unexpected HIT at line #{line_number}").to.be.false return it 'basic', => getErrors('basic') # console.log @rule.errors checkFixtureForHits('basic') return it 'mocha', => getErrors('mocha') # console.log @rule.errors checkFixtureForHits('mocha') return it 'express', => getErrors('express') # console.log @rule.errors checkFixtureForHits('express') return it 'async', => getErrors('async') # console.log @rule.errors checkFixtureForHits('async') return it 'lodash', => getErrors('lodash') # console.log @rule.errors checkFixtureForHits('lodash') return it 'ifcb', => getErrors('ifcb') # console.log @rule.errors checkFixtureForHits('ifcb') return return