mirror of
https://gitea.invidious.io/iv-org/shard-ameba.git
synced 2024-08-15 00:53:29 +00:00
Add inline directives parsing and disabling
This commit is contained in:
parent
55b66e7975
commit
9f85b16e09
9 changed files with 212 additions and 7 deletions
|
@ -36,6 +36,27 @@ module Ameba::Formatter
|
|||
subject.finished [Source.new ""]
|
||||
output.to_s.should contain "Finished in"
|
||||
end
|
||||
|
||||
context "when errors found" do
|
||||
it "writes each error" do
|
||||
s = Source.new("").tap do |s|
|
||||
s.error(DummyRule.new, 1, 1, "DummyRuleError")
|
||||
s.error(NamedRule.new, 1, 2, "NamedRuleError")
|
||||
end
|
||||
subject.finished [s]
|
||||
log = output.to_s
|
||||
log.should contain "1 inspected, 2 failures."
|
||||
log.should contain "DummyRuleError"
|
||||
log.should contain "NamedRuleError"
|
||||
end
|
||||
|
||||
it "does not write disabled errors" do
|
||||
s = Source.new ""
|
||||
s.error(DummyRule.new, 1, 1, "DummyRuleError", :disabled)
|
||||
subject.finished [s]
|
||||
output.to_s.should contain "1 inspected, 0 failures."
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
|
87
spec/ameba/inline_comments_spec.cr
Normal file
87
spec/ameba/inline_comments_spec.cr
Normal file
|
@ -0,0 +1,87 @@
|
|||
require "../spec_helper"
|
||||
|
||||
module Ameba
|
||||
describe InlineComments do
|
||||
it "disables a rule with a comment directive" do
|
||||
s = Source.new %Q(
|
||||
# ameba:disable #{NamedRule.name}
|
||||
Time.epoch(1483859302)
|
||||
)
|
||||
s.error(NamedRule.new, 3, 12, "Error!")
|
||||
s.should be_valid
|
||||
end
|
||||
|
||||
it "disables a rule with a line that ends with a comment directive" do
|
||||
s = Source.new %Q(
|
||||
Time.epoch(1483859302) # ameba:disable #{NamedRule.name}
|
||||
)
|
||||
s.error(NamedRule.new, 2, 12, "Error!")
|
||||
s.should be_valid
|
||||
end
|
||||
|
||||
it "does not disable a rule of a different name" do
|
||||
s = Source.new %Q(
|
||||
# ameba:disable WrongName
|
||||
Time.epoch(1483859302)
|
||||
)
|
||||
s.error(NamedRule.new, 3, 12, "Error!")
|
||||
s.should_not be_valid
|
||||
end
|
||||
|
||||
it "disables a rule if multiple rule names provided" do
|
||||
s = Source.new %Q(
|
||||
# ameba:disable SomeRule LargeNumbers #{NamedRule.name} SomeOtherRule
|
||||
Time.epoch(1483859302)
|
||||
)
|
||||
s.error(NamedRule.new, 3, 12, "")
|
||||
s.should be_valid
|
||||
end
|
||||
|
||||
it "disables a rule if multiple rule names are separated by comma" do
|
||||
s = Source.new %Q(
|
||||
# ameba:disable SomeRule, LargeNumbers, #{NamedRule.name}, SomeOtherRule
|
||||
Time.epoch(1483859302)
|
||||
)
|
||||
s.error(NamedRule.new, 3, 12, "")
|
||||
s.should be_valid
|
||||
end
|
||||
|
||||
it "does not disable if multiple rule names used without required one" do
|
||||
s = Source.new %(
|
||||
# ameba:disable SomeRule, SomeOtherRule LargeNumbers
|
||||
Time.epoch(1483859302)
|
||||
)
|
||||
s.error(NamedRule.new, 3, 12, "")
|
||||
s.should_not be_valid
|
||||
end
|
||||
|
||||
it "does not disable if comment directive has wrong place" do
|
||||
s = Source.new %Q(
|
||||
# ameba:disable #{NamedRule.name}
|
||||
#
|
||||
Time.epoch(1483859302)
|
||||
)
|
||||
s.error(NamedRule.new, 4, 12, "")
|
||||
s.should_not be_valid
|
||||
end
|
||||
|
||||
it "does not disable if comment directive added to the wrong line" do
|
||||
s = Source.new %Q(
|
||||
if use_epoch? # ameba:disable #{NamedRule.name}
|
||||
Time.epoch(1483859302)
|
||||
end
|
||||
)
|
||||
s.error(NamedRule.new, 3, 12, "")
|
||||
s.should_not be_valid
|
||||
end
|
||||
|
||||
it "does not disable if that is not a comment directive" do
|
||||
s = Source.new %Q(
|
||||
"ameba:disable #{NamedRule.name}"
|
||||
Time.epoch(1483859302)
|
||||
)
|
||||
s.error(NamedRule.new, 3, 12, "")
|
||||
s.should_not be_valid
|
||||
end
|
||||
end
|
||||
end
|
Loading…
Add table
Add a link
Reference in a new issue