mirror of
https://gitea.invidious.io/iv-org/shard-ameba.git
synced 2024-08-15 00:53:29 +00:00
Add Style/RedundantParentheses
rule
This commit is contained in:
parent
04b19a60db
commit
cbf5d3de74
2 changed files with 156 additions and 0 deletions
95
spec/ameba/rule/style/redundant_parentheses_spec.cr
Normal file
95
spec/ameba/rule/style/redundant_parentheses_spec.cr
Normal file
|
@ -0,0 +1,95 @@
|
|||
require "../../../spec_helper"
|
||||
|
||||
module Ameba::Rule::Style
|
||||
subject = RedundantParentheses.new
|
||||
|
||||
describe RedundantParentheses do
|
||||
{% for keyword in %w(if unless while until) %}
|
||||
context "{{ keyword.id }}" do
|
||||
it "reports if redundant parentheses are found" do
|
||||
source = expect_issue subject, <<-CRYSTAL, keyword: {{ keyword }}
|
||||
%{keyword} (foo > 10)
|
||||
_{keyword} # ^^^^^^^^^^ error: Redundant parentheses
|
||||
foo
|
||||
end
|
||||
CRYSTAL
|
||||
|
||||
expect_correction source, <<-CRYSTAL
|
||||
{{ keyword.id }} foo > 10
|
||||
foo
|
||||
end
|
||||
CRYSTAL
|
||||
end
|
||||
end
|
||||
{% end %}
|
||||
|
||||
context "case" do
|
||||
it "reports if redundant parentheses are found" do
|
||||
source = expect_issue subject, <<-CRYSTAL
|
||||
case (foo = @foo)
|
||||
# ^^^^^^^^^^^^ error: Redundant parentheses
|
||||
when String then "string"
|
||||
when Symbol then "symbol"
|
||||
end
|
||||
CRYSTAL
|
||||
|
||||
expect_correction source, <<-CRYSTAL
|
||||
case foo = @foo
|
||||
when String then "string"
|
||||
when Symbol then "symbol"
|
||||
end
|
||||
CRYSTAL
|
||||
end
|
||||
end
|
||||
|
||||
context "properties" do
|
||||
context "#exclude_ternary=" do
|
||||
it "skips ternary control expressions by default" do
|
||||
expect_no_issues subject, <<-CRYSTAL
|
||||
(foo > bar) ? true : false
|
||||
CRYSTAL
|
||||
end
|
||||
|
||||
it "allows to configure assignments" do
|
||||
rule = Rule::Style::RedundantParentheses.new
|
||||
rule.exclude_ternary = false
|
||||
|
||||
expect_issue rule, <<-CRYSTAL
|
||||
(foo > bar) ? true : false
|
||||
# ^^^^^^^^^ error: Redundant parentheses
|
||||
CRYSTAL
|
||||
|
||||
expect_no_issues subject, <<-CRYSTAL
|
||||
(foo && bar) ? true : false
|
||||
CRYSTAL
|
||||
|
||||
expect_no_issues subject, <<-CRYSTAL
|
||||
(foo || bar) ? true : false
|
||||
CRYSTAL
|
||||
end
|
||||
end
|
||||
|
||||
context "#exclude_assignments=" do
|
||||
it "reports assignments by default" do
|
||||
expect_issue subject, <<-CRYSTAL
|
||||
if (foo = @foo)
|
||||
# ^^^^^^^^^^^^ error: Redundant parentheses
|
||||
foo
|
||||
end
|
||||
CRYSTAL
|
||||
end
|
||||
|
||||
it "allows to configure assignments" do
|
||||
rule = Rule::Style::RedundantParentheses.new
|
||||
rule.exclude_assignments = true
|
||||
|
||||
expect_no_issues rule, <<-CRYSTAL
|
||||
if (foo = @foo)
|
||||
foo
|
||||
end
|
||||
CRYSTAL
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
Loading…
Add table
Add a link
Reference in a new issue