Document configuration properties & specs

This commit is contained in:
Vitalii Elenhaupt 2017-11-14 09:24:36 +02:00
parent 822a69b81c
commit 06855816d7
No known key found for this signature in database
GPG key ID: 7558EF3A4056C706
22 changed files with 325 additions and 8 deletions

58
spec/ameba/config_spec.cr Normal file
View file

@ -0,0 +1,58 @@
require "../spec_helper"
module Ameba
describe Config do
config_sample = "config/ameba.yml"
describe ".load" do
it "loads custom config" do
config = Config.load config_sample
config.should_not be_nil
config.files.should_not be_nil
config.formatter.should_not be_nil
end
it "loads default config" do
config = Config.load
config.should_not be_nil
config.files.should_not be_nil
config.formatter.should_not be_nil
end
end
describe "#files, #files=" do
config = Config.load config_sample
it "holds source files" do
config.files.should contain "spec/ameba/config_spec.cr"
end
it "allows to set files" do
config.files = ["file.cr"]
config.files.should eq ["file.cr"]
end
end
describe "#formatter, formatter=" do
config = Config.load config_sample
formatter = DummyFormatter.new
it "contains default formatter" do
config.formatter.should_not be_nil
end
it "allows to set formatter" do
config.formatter = formatter
config.formatter.should eq formatter
end
end
describe "#subconfig" do
it "returns a specific subconfig" do
config = Config.load config_sample
config.subconfig("NoSuchConfig").should be_nil
config.subconfig(Rule::LineLength.new.name).should_not be_nil
end
end
end
end

58
spec/ameba/runner_spec.cr Normal file
View file

@ -0,0 +1,58 @@
require "../spec_helper"
module Ameba
private def runner(files = [__FILE__], formatter = DummyFormatter.new)
config = Config.load "config/ameba.yml"
config.formatter = formatter
config.files = files
Runner.new(config)
end
describe Runner do
formatter = DummyFormatter.new
describe "#run" do
it "returns self" do
runner.run.should_not be_nil
end
it "calls started callback" do
runner(formatter: formatter).run
formatter.started_sources.should_not be_nil
end
it "calls finished callback" do
runner(formatter: formatter).run
formatter.finished_sources.should_not be_nil
end
it "calls source_started callback" do
runner(formatter: formatter).run
formatter.started_source.should_not be_nil
end
it "calls source_finished callback" do
runner(formatter: formatter).run
formatter.finished_source.should_not be_nil
end
end
describe "#success?" do
it "returns true if runner has not been run" do
runner.success?.should be_true
end
it "returns true if all sources are valid" do
runner.run.success?.should be_true
end
it "returns false if there are invalid sources" do
s = Source.new %q(
WrongConstant = 5
)
Runner.new([s], formatter).run.success?.should be_false
end
end
end
end

View file

@ -7,6 +7,29 @@ module Ameba
end
end
class DummyFormatter < Formatter::BaseFormatter
property started_sources : Array(Source)?
property finished_sources : Array(Source)?
property started_source : Source?
property finished_source : Source?
def started(sources)
@started_sources = sources
end
def source_finished(source : Source)
@started_source = source
end
def source_started(source : Source)
@finished_source = source
end
def finished(sources)
@finished_sources = sources
end
end
struct BeValidExpectation
def match(source)
source.valid?