Skip to content
This repository has been archived by the owner on Oct 19, 2021. It is now read-only.

Commit

Permalink
Implement coffeelint: disable and coffeelint: disable-line withou…
Browse files Browse the repository at this point in the history
…t any arguments to disable all configured rules
  • Loading branch information
Radu Dan committed Mar 4, 2016
1 parent a347996 commit 77776c3
Show file tree
Hide file tree
Showing 2 changed files with 61 additions and 2 deletions.
21 changes: 19 additions & 2 deletions src/coffeelint.coffee
Original file line number Diff line number Diff line change
Expand Up @@ -333,6 +333,16 @@ coffeelint.lint = (source, userConfig = {}, literate = false) ->
# Sort by line number and return.
errors.sort((a, b) -> a.lineNumber - b.lineNumber)

# Create a list of all errors
disabledEntirely = do ->
result = []
map = {}
for { name } in errors or []
if not map[name]
result.push(name)
map[name] = true
result

# Disable/enable rules for inline blocks
allErrors = errors
errors = []
Expand All @@ -344,9 +354,16 @@ coffeelint.lint = (source, userConfig = {}, literate = false) ->
rules = inlineConfig[cmd][i]
{
'disable': ->
disabled = union(disabled, rules)
if rules.length
disabled = union(disabled, rules)
disabledLine = union(disabledLine, rules)
else
disabled = disabledLine = disabledEntirely
'disable-line': ->
disabledLine = disabledLine.concat(rules)
if rules.length
disabledLine = union(disabledLine, rules)
else
disabledLine = disabledEntirely
'enable': ->
if rules.length
disabled = difference(disabled, rules)
Expand Down
42 changes: 42 additions & 0 deletions test/test_comment_config.coffee
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,26 @@ vows.describe('comment_config').addBatch({
assert.equal(errors[0].lineNumber, 5)
assert.ok(errors[0].message)

'Disable all statements':
topic: () ->
'''
# coffeelint: disable
a 'you get a semi-colon';
b 'you get a semi-colon';
# coffeelint: enable
c 'everybody gets a semi-colon';
'''

'can disable rules in your config': (source) ->
config =
no_trailing_semicolons: level: 'error'
errors = coffeelint.lint(source, config)
assert.equal(errors.length, 1)
assert.equal(errors[0].rule, 'no_trailing_semicolons')
assert.equal(errors[0].level, 'error')
assert.equal(errors[0].lineNumber, 5)
assert.ok(errors[0].message)

'Disable statements per line':
topic: () ->
'''
Expand All @@ -42,6 +62,28 @@ vows.describe('comment_config').addBatch({
assert.equal(errors[0].lineNumber, 2)
assert.ok(errors[0].message)

'Disable all statements per line':
topic: () ->
'''
a 'foo'; # coffeelint: disable-line
b 'bar';
'''

'can disable rules in your config': (source) ->
config =
no_trailing_semicolons: level: 'error'
no_implicit_parens: level: 'error'
errors = coffeelint.lint(source, config)
assert.equal(errors.length, 2)
assert.equal(errors[0].rule, 'no_implicit_parens')
assert.equal(errors[0].level, 'error')
assert.equal(errors[0].lineNumber, 2)
assert.ok(errors[0].message)
assert.equal(errors[1].rule, 'no_trailing_semicolons')
assert.equal(errors[1].level, 'error')
assert.equal(errors[1].lineNumber, 2)
assert.ok(errors[1].message)

'Enable statements':
topic: () ->
'''
Expand Down

0 comments on commit 77776c3

Please sign in to comment.