Lint in parallel (#118)

* Lint in parallel

* Synced output for dot/flycheck formatters

* Re-raise exceptions raised in fibers

* Add readme instructions
This commit is contained in:
Vitalii Elenhaupt 2019-11-09 19:31:41 +02:00 committed by GitHub
parent 8d00d54012
commit 07e72b7bf9
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
6 changed files with 101 additions and 20 deletions

View file

@ -53,6 +53,19 @@ module Ameba
Runner.new(all_rules, [source], formatter, default_severity).run.success?.should be_true
end
context "exception in rule" do
it "raises an exception raised in fiber while running a rule" do
rule = RaiseRule.new
rule.should_raise = true
rules = [rule] of Rule::Base
source = Source.new "", "source.cr"
expect_raises(Exception, "something went wrong") do
Runner.new(rules, [source], formatter, default_severity).run
end
end
end
context "invalid syntax" do
it "reports a syntax error" do
rules = [Rule::Lint::Syntax.new] of Rule::Base

View file

@ -81,6 +81,15 @@ module Ameba
end
end
# A rule that always raises an error
struct RaiseRule < Rule::Base
property should_raise = false
def test(source)
should_raise && raise "something went wrong"
end
end
class DummyFormatter < Formatter::BaseFormatter
property started_sources : Array(Source)?
property finished_sources : Array(Source)?