@fellow/eslint-plugin-coffee
Version:
Transpiles coffee files (.coffee, .cjsx) and runs through eslint. Reports errors with original line numbers.
62 lines (44 loc) • 1.43 kB
text/coffeescript
path = require 'path'
vows = require 'vows'
assert = require 'assert'
coffeePlugin = require(path.resolve(__dirname, '../dist'))
CLIEngine = require('eslint').CLIEngine
cli = new CLIEngine {}
cli.addPlugin "coffee", coffeePlugin
lintFile = (file) -> cli.executeOnFiles [path.resolve(__dirname, file)]
lintSource = (filename, source) -> cli.executeOnText source, filename
vows.describe('plugin').addBatch
'Lints clean':
topic: lintSource 'clean.coffee', '''
class Parent
constructor: (@name) -> ''
export class Child extends Parent
constructor: (name="") ->
super()
@name = name
'''
'no lint': ({ results }) ->
assert.lengthOf results[0].messages, 0
'Lints dirty':
topic: lintSource 'incorrect.coffee', '''
class Parent
constructor: (@name) -> ''
export class Child extends Parent
constructor: (name="") ->
super()
@name = unused = name
'''
'found lint': ({ results }) ->
message = results[0]?.messages?.map((x) -> x.message)
assert.deepEqual message, ["'unused' is assigned a value but never used."]
'Bad Syntax':
topic: lintSource 'dirty.coffee', '''
class Parent
constructor: (@name) -> ''
export class Child extends Parent
constructor: (parent) -->
'''
'has syntax error': ({ results }) ->
error = results[0]?.messages?[0]
assert.notEqual -1, error?.ruleId.indexOf("coffeescript-error") or -1
.export(module)