Skip to content

Commit 2597aa3

Browse files
committed
Convert linter to counter
1 parent 4f64ff0 commit 2597aa3

File tree

3 files changed

+56
-8
lines changed

3 files changed

+56
-8
lines changed

docs/rules/accessibility/no-aria-label-misuse.md renamed to docs/rules/accessibility/no-aria-label-misuse-counter.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
# No aria label misuse
1+
# No aria label misuse counter
22

33
## Rule Details
44

lib/erblint-github/linters/github/accessibility/no_aria_label_misuse.rb renamed to lib/erblint-github/linters/github/accessibility/no_aria_label_misuse_counter.rb

Lines changed: 16 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ module ERBLint
66
module Linters
77
module GitHub
88
module Accessibility
9-
class NoAriaLabelMisuse < Linter
9+
class NoAriaLabelMisuseCounter < Linter
1010
include ERBLint::Linters::CustomHelpers
1111
include LinterRegistry
1212

@@ -34,7 +34,21 @@ def run(processed_source)
3434
end
3535
end
3636
end
37-
rule_disabled?(processed_source)
37+
counter_correct?(processed_source)
38+
end
39+
40+
def autocorrect(processed_source, offense)
41+
return unless offense.context
42+
43+
lambda do |corrector|
44+
if processed_source.file_content.include?("erblint:counter #{simple_class_name}")
45+
# update the counter if exists
46+
corrector.replace(offense.source_range, offense.context)
47+
else
48+
# add comment with counter if none
49+
corrector.insert_before(processed_source.source_buffer.source_range, "#{offense.context}\n")
50+
end
51+
end
3852
end
3953
end
4054
end

test/linters/accessibility/no_aria_label_misuse_test.rb renamed to test/linters/accessibility/no_aria_label_misuse_counter_test.rb

Lines changed: 39 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -2,9 +2,9 @@
22

33
require "test_helper"
44

5-
class NoAriaLabelMisuseTest < LinterTestCase
5+
class NoAriaLabelMisuseCounterTest < LinterTestCase
66
def linter_class
7-
ERBLint::Linters::GitHub::Accessibility::NoAriaLabelMisuse
7+
ERBLint::Linters::GitHub::Accessibility::NoAriaLabelMisuseCounter
88
end
99

1010
def example_invalid_case
@@ -29,7 +29,7 @@ def test_warns_if_banned_elements_have_aria_label
2929
HTML
3030

3131
@linter.run(processed_source)
32-
assert_equal @linter.offenses.length, 11
32+
assert_equal @linter.offenses.length, 12
3333
end
3434

3535
def test_warns_if_generic_elements_have_aria_label_and_no_role
@@ -39,7 +39,7 @@ def test_warns_if_generic_elements_have_aria_label_and_no_role
3939
HTML
4040

4141
@linter.run(processed_source)
42-
assert_equal 2, @linter.offenses.length
42+
assert_equal 3, @linter.offenses.length
4343
end
4444

4545
def test_warns_if_generic_elements_have_aria_label_and_prohibited_role
@@ -61,7 +61,7 @@ def test_warns_if_generic_elements_have_aria_label_and_prohibited_role
6161
HTML
6262

6363
@linter.run(processed_source)
64-
assert_equal 14, @linter.offenses.length
64+
assert_equal 15, @linter.offenses.length
6565
end
6666

6767
def test_does_not_warn_if_generic_elements_have_aria_label_and_allowed_role
@@ -74,4 +74,38 @@ def test_does_not_warn_if_generic_elements_have_aria_label_and_allowed_role
7474
@linter.run(processed_source)
7575
assert_empty @linter.offenses
7676
end
77+
78+
def test_does_not_raise_when_ignore_comment_with_correct_count
79+
@file = <<~ERB
80+
<%# erblint:counter GitHub::Accessibility::NoAriaLabelMisuseCounter 2 %>
81+
<span aria-label="This is a bad idea">Some text</span>
82+
<span aria-label="This is still a bad idea">More text</span>
83+
ERB
84+
85+
@linter.run(processed_source)
86+
assert_empty @linter.offenses
87+
end
88+
89+
def test_does_not_autocorrect_when_ignores_are_correct
90+
@file = <<~ERB
91+
<%# erblint:counter GitHub::Accessibility::NoAriaLabelMisuseCounter 1 %>
92+
<span aria-label="This is a bad idea">Some text</span>
93+
ERB
94+
95+
assert_equal @file, corrected_content
96+
end
97+
98+
def test_does_autocorrect_when_ignores_are_not_correct
99+
@file = <<~ERB
100+
<%# erblint:counter GitHub::Accessibility::NoAriaLabelMisuseCounter 3 %>
101+
<span aria-label="This is a bad idea">Some text</span>
102+
ERB
103+
refute_equal @file, corrected_content
104+
105+
expected_content = <<~ERB
106+
<%# erblint:counter GitHub::Accessibility::NoAriaLabelMisuseCounter 1 %>
107+
<span aria-label="This is a bad idea">Some text</span>
108+
ERB
109+
assert_equal expected_content, corrected_content
110+
end
77111
end

0 commit comments

Comments
 (0)