From 3a80817ce5240ba95d0030f03965fc9c0a208b7b Mon Sep 17 00:00:00 2001 From: Kate Higa Date: Fri, 29 Oct 2021 10:50:20 -0700 Subject: [PATCH 1/2] add disable rule test --- lib/erblint-github/linters/custom_helpers.rb | 2 +- .../accessibility/no_redundant_image_alt_test.rb | 10 ++++++++++ 2 files changed, 11 insertions(+), 1 deletion(-) diff --git a/lib/erblint-github/linters/custom_helpers.rb b/lib/erblint-github/linters/custom_helpers.rb index 44f3e14..2621a71 100644 --- a/lib/erblint-github/linters/custom_helpers.rb +++ b/lib/erblint-github/linters/custom_helpers.rb @@ -11,7 +11,7 @@ def rule_disabled?(processed_source) indicator_node, _, code_node, = *node indicator = indicator_node&.loc&.source comment = code_node&.loc&.source&.strip - rule_name = self.class.name.match(/:?:?(\w+)\Z/)[1] + rule_name = self.class.name.gsub("ERBLint::Linters::", "") if indicator == "#" && comment.start_with?("erblint:disable") && comment.match(rule_name) if @offenses.any? diff --git a/test/linters/accessibility/no_redundant_image_alt_test.rb b/test/linters/accessibility/no_redundant_image_alt_test.rb index f35b3f1..d2a4f53 100644 --- a/test/linters/accessibility/no_redundant_image_alt_test.rb +++ b/test/linters/accessibility/no_redundant_image_alt_test.rb @@ -28,4 +28,14 @@ def test_does_not_warn_if_alt_contains_no_redundant_text assert_empty @linter.offenses end + + def test_does_not_warn_if_linter_is_disabled_in_file + @file = <<~HTML + <%# erblint:disable GitHub::Accessibility::NoRedundantImageAlt %> + image of an octopus + HTML + + @linter.run(processed_source) + assert_empty @linter.offenses + end end From 4063825c10f9841a3885f5cf45245e87320d3a32 Mon Sep 17 00:00:00 2001 From: Kate Higa Date: Fri, 29 Oct 2021 16:48:20 -0700 Subject: [PATCH 2/2] add test coverage for custom helpers --- test/custom_helpers_test.rb | 97 +++++++++++++++++++ .../no_redundant_image_alt_test.rb | 1 - test/test_helper.rb | 1 + 3 files changed, 98 insertions(+), 1 deletion(-) create mode 100644 test/custom_helpers_test.rb diff --git a/test/custom_helpers_test.rb b/test/custom_helpers_test.rb new file mode 100644 index 0000000..4dfc1d5 --- /dev/null +++ b/test/custom_helpers_test.rb @@ -0,0 +1,97 @@ +# frozen_string_literal: true + +require "test_helper" +require "erblint-github/linters/custom_helpers" + +class CustomHelpersTest < LinterTestCase + include ERBLint::Linters::CustomHelpers + + class FakeLinter < ERBLint::Linter + attr_accessor :offenses + + MESSAGE = "Please fix your code." + end + + def linter_class + CustomHelpersTest::FakeLinter + end + + def extended_linter + @linter.extend(ERBLint::Linters::CustomHelpers) + end + + def test_rule_disabled_clears_offenses_if_rule_is_disabled + @file = <<~HTML + <%# erblint:disable CustomHelpersTest::FakeLinter %> + HTML + @linter.offenses = ["fake offense"] + assert_equal @linter.offenses.length, 1 + + extended_linter.rule_disabled?(processed_source) + assert_empty @linter.offenses + end + + def test_rule_disabled_adds_offense_if_disable_comment_is_present_but_no_offense + @file = <<~HTML + <%# erblint:disable CustomHelpersTest::FakeLinter %> + HTML + assert_empty @linter.offenses + + extended_linter.rule_disabled?(processed_source) + + assert_equal @linter.offenses.length, 1 + end + + def test_generate_offense_with_message_defined_in_linter_class + @file = <<~HTML + <%# erblint:disable CustomHelpersTest::FakeLinter %> +
Hello.
+ HTML + assert_empty @linter.offenses + + tag = extended_linter.tags(processed_source).first + extended_linter.generate_offense(CustomHelpersTest::FakeLinter, processed_source, tag) + + assert_equal @linter.offenses.length, 1 + assert_match CustomHelpersTest::FakeLinter::MESSAGE, @linter.offenses.first.message + end + + def test_generate_offense_with_message_passed_in_as_parameter + @file = <<~HTML +
Hello.
+ HTML + assert_empty @linter.offenses + + tag = extended_linter.tags(processed_source).first + extended_linter.generate_offense(CustomHelpersTest::FakeLinter, processed_source, tag, "bad!") + + assert_equal @linter.offenses.length, 1 + assert_match(/bad!/, @linter.offenses.first.message) + end + + def test_possible_attribute_values_returns_attribute_value_matches + @file = <<~HTML + mona lisa + + + HTML + + image_tag = extended_linter.tags(processed_source).first + image_tag_alt_values = extended_linter.possible_attribute_values(image_tag, "alt") + assert_equal image_tag_alt_values, ["mona lisa"] + + button_tag = extended_linter.tags(processed_source)[1] + button_tag_type_values = extended_linter.possible_attribute_values(button_tag, "type") + assert_equal button_tag_type_values, ["button"] + end + + def test_possible_attribute_values_returns_empty_array_if_no_attribute_value_matches + @file = <<~HTML + + HTML + + anchor_tag = extended_linter.tags(processed_source).first + possible_attribute_values = extended_linter.possible_attribute_values(anchor_tag, "href") + assert_equal possible_attribute_values, [] + end +end diff --git a/test/linters/accessibility/no_redundant_image_alt_test.rb b/test/linters/accessibility/no_redundant_image_alt_test.rb index d2a4f53..9b52f05 100644 --- a/test/linters/accessibility/no_redundant_image_alt_test.rb +++ b/test/linters/accessibility/no_redundant_image_alt_test.rb @@ -1,7 +1,6 @@ # frozen_string_literal: true require "test_helper" -require "erblint-github/linters/github/accessibility/no_redundant_image_alt" class NoRedundantImageAltTest < LinterTestCase def linter_class diff --git a/test/test_helper.rb b/test/test_helper.rb index e26c921..8369f01 100644 --- a/test/test_helper.rb +++ b/test/test_helper.rb @@ -7,3 +7,4 @@ require "minitest/autorun" require "mocha/minitest" require "linter_test_case" +require "erblint-github/linters"