Set default severities

This commit is contained in:
Vitalii Elenhaupt 2019-04-13 22:38:37 +03:00
parent 0be42f94db
commit f6a57f9272
No known key found for this signature in database
GPG key ID: 7558EF3A4056C706
5 changed files with 35 additions and 19 deletions

View file

@ -33,5 +33,9 @@ module Ameba::Rule::Lint
issue.location.to_s.should eq "source.cr:1:11"
issue.message.should eq "unexpected token: end (expected ';' or newline)"
end
it "has highest severity" do
subject.severity.should eq Severity::Error
end
end
end

View file

@ -2,12 +2,6 @@ require "../spec_helper"
module Ameba
describe Severity do
describe ".default" do
it "returns default severity" do
Severity.default.should eq Severity::Refactoring
end
end
describe ".from_name" do
it "creates error severity by name" do
Severity.from_name("Error").should eq Severity::Error
@ -54,6 +48,20 @@ module Ameba
converted = SeverityConvertable.from_yaml(yaml)
converted.severity.should eq Severity::Refactoring
end
it "raises if severity is not a scalar" do
yaml = {severity: {refactoring: true}}.to_yaml
expect_raises(Exception, "Severity must be a scalar") do
SeverityConvertable.from_yaml(yaml)
end
end
it "raises if severity has a wrong type" do
yaml = {severity: [1, 2, 3]}.to_yaml
expect_raises(Exception, "Severity must be a scalar") do
SeverityConvertable.from_yaml(yaml)
end
end
end
describe ".to_yaml" do

View file

@ -227,6 +227,11 @@ class Ameba::Config
{% properties["enabled".id] = {key: "Enabled", default: true, type: Bool} %}
{% end %}
{% if properties["severity".id] == nil %}
{% default = @type.name.starts_with?("Ameba::Rule::Lint") ? "Severity::Warning".id : "Severity::Refactoring".id %}
{% properties["severity".id] = {key: "Severity", default: default, type: Severity, converter: SeverityYamlConverter} %}
{% end %}
{% if properties["excluded".id] == nil %}
{% properties["excluded".id] = {key: "Excluded", type: "Array(String)?".id} %}
{% end %}

View file

@ -20,7 +20,10 @@ module Ameba::Rule::Lint
# ```
#
struct Syntax < Base
getter description = "Reports invalid Crystal syntax."
properties do
description "Reports invalid Crystal syntax"
severity Severity::Error
end
def test(source)
source.ast

View file

@ -4,10 +4,6 @@ module Ameba
Warning
Refactoring
def self.default
Refactoring
end
def self.from_name(name : String)
case name.downcase
when "error"
@ -37,7 +33,7 @@ module Ameba
end
def self.to_yaml(value : Severity, yaml : YAML::Nodes::Builder)
yaml.scalar value.to_s
yaml.scalar value
end
end
end