2018-05-11 18:09:15 +00:00
|
|
|
require "../../spec_helper"
|
|
|
|
|
|
|
|
module Ameba
|
|
|
|
def get_result(sources = [Source.new ""])
|
|
|
|
file = IO::Memory.new
|
|
|
|
formatter = Formatter::JSONFormatter.new file
|
|
|
|
|
|
|
|
formatter.started sources
|
|
|
|
sources.each { |source| formatter.source_finished source }
|
|
|
|
formatter.finished sources
|
|
|
|
|
|
|
|
JSON.parse file.to_s
|
|
|
|
end
|
|
|
|
|
|
|
|
describe Formatter::JSONFormatter do
|
|
|
|
context "metadata" do
|
|
|
|
it "shows ameba version" do
|
|
|
|
get_result["metadata"]["ameba_version"].should eq Ameba::VERSION
|
|
|
|
end
|
|
|
|
|
|
|
|
it "shows crystal version" do
|
|
|
|
get_result["metadata"]["crystal_version"].should eq Crystal::VERSION
|
|
|
|
end
|
|
|
|
end
|
|
|
|
|
|
|
|
context "sources" do
|
|
|
|
it "shows path to the source" do
|
|
|
|
result = get_result [Source.new "", "source.cr"]
|
2018-05-22 14:55:44 +00:00
|
|
|
result["sources"][0]["path"].should eq "source.cr"
|
2018-05-11 18:09:15 +00:00
|
|
|
end
|
|
|
|
|
|
|
|
it "shows rule name" do
|
|
|
|
s = Source.new ""
|
2018-06-10 21:15:12 +00:00
|
|
|
s.add_issue DummyRule.new, {1, 2}, "message1"
|
2018-05-11 18:09:15 +00:00
|
|
|
|
|
|
|
result = get_result [s]
|
2018-06-10 21:15:12 +00:00
|
|
|
result["sources"][0]["issues"][0]["rule_name"].should eq DummyRule.name
|
2018-05-11 18:09:15 +00:00
|
|
|
end
|
|
|
|
|
|
|
|
it "shows a message" do
|
|
|
|
s = Source.new ""
|
2018-06-10 21:15:12 +00:00
|
|
|
s.add_issue DummyRule.new, {1, 2}, "message"
|
2018-05-11 18:09:15 +00:00
|
|
|
|
|
|
|
result = get_result [s]
|
2018-06-10 21:15:12 +00:00
|
|
|
result["sources"][0]["issues"][0]["message"].should eq "message"
|
2018-05-11 18:09:15 +00:00
|
|
|
end
|
|
|
|
|
2018-06-10 21:15:12 +00:00
|
|
|
it "shows issue location" do
|
2018-05-11 18:09:15 +00:00
|
|
|
s = Source.new ""
|
2018-06-10 21:15:12 +00:00
|
|
|
s.add_issue DummyRule.new, {1, 2}, "message"
|
2018-05-11 18:09:15 +00:00
|
|
|
|
|
|
|
result = get_result [s]
|
2018-06-10 21:15:12 +00:00
|
|
|
location = result["sources"][0]["issues"][0]["location"]
|
2018-05-11 18:09:15 +00:00
|
|
|
location["line"].should eq 1
|
|
|
|
location["column"].should eq 2
|
|
|
|
end
|
|
|
|
end
|
|
|
|
|
|
|
|
context "summary" do
|
|
|
|
it "shows a target sources count" do
|
|
|
|
result = get_result [Source.new(""), Source.new("")]
|
|
|
|
result["summary"]["target_sources_count"].should eq 2
|
|
|
|
end
|
|
|
|
|
2018-06-10 21:15:12 +00:00
|
|
|
it "shows issues count" do
|
2018-05-11 18:09:15 +00:00
|
|
|
s1 = Source.new ""
|
2018-06-10 21:15:12 +00:00
|
|
|
s1.add_issue DummyRule.new, {1, 2}, "message1"
|
|
|
|
s1.add_issue DummyRule.new, {1, 2}, "message2"
|
2018-05-11 18:09:15 +00:00
|
|
|
|
|
|
|
s2 = Source.new ""
|
2018-06-10 21:15:12 +00:00
|
|
|
s2.add_issue DummyRule.new, {1, 2}, "message3"
|
2018-05-11 18:09:15 +00:00
|
|
|
|
|
|
|
result = get_result [s1, s2]
|
2018-06-10 21:15:12 +00:00
|
|
|
result["summary"]["issues_count"].should eq 3
|
2018-05-11 18:09:15 +00:00
|
|
|
end
|
|
|
|
end
|
|
|
|
end
|
|
|
|
end
|