Skip to content

Commit 19b3936

Browse files
authored
Merge pull request #21 from github/kh-convert-aria-label-misuse-to-counter
Convert `NoAriaLabelMisuse` to counter
2 parents 4f64ff0 + 83f6534 commit 19b3936

File tree

4 files changed

+58
-10
lines changed

4 files changed

+58
-10
lines changed

README.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@ linters:
2929
enabled: true
3030
GitHub::Accessibility::ImageHasAlt:
3131
enabled: true
32-
GitHub::Accessibility::NoAriaLabelMisuse:
32+
GitHub::Accessibility::NoAriaLabelMisuseCounter:
3333
enabled: true
3434
GitHub::Accessibility::NoPositiveTabIndex:
3535
enabled: true
@@ -44,7 +44,7 @@ linters:
4444
- [GitHub::Accessibility::AvoidBothDisabledAndAriaDisabled](./docs/rules/accessibility/avoid-both-disabled-and-aria-disabled.md)
4545
- [GitHub::Accessibility::IframeHasTitle](./docs/rules/accessibility/iframe-has-title.md)
4646
- [GitHub::Accessibility::ImageHasAlt](./docs/rules/accessibility/image-has-alt.md)
47-
- [GitHub::Accessibility::NoAriaLabelMisuse](./docs/rules/accessibility/no-aria-label-misuse.md)
47+
- [GitHub::Accessibility::NoAriaLabelMisuseCounter](./docs/rules/accessibility/no-aria-label-misuse-counter.md)
4848
- [GitHub::Accessibility::NoPositiveTabIndex](./docs/rules/accessibility/no-positive-tab-index.md)
4949
- [GitHub::Accessibility::NoRedundantImageAlt](./docs/rules/accessibility/no-redundant-image-alt.md)
5050
- [GitHub::Accessibility::NoTitleAttributeCounter](./docs/rules/accessibility/no-title-attribute-counter.md)

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)