From 23c017aad15f1a7e11d6b822505f6636d6f91663 Mon Sep 17 00:00:00 2001 From: Justin Collins Date: Mon, 28 Oct 2019 15:09:15 -0700 Subject: [PATCH] Symbol#to_s returns frozen string in Ruby 2.7.0 better not to mangle them --- lib/brakeman/report/report_text.rb | 2 +- test/test.rb | 26 ++++++++++++++++---------- 2 files changed, 17 insertions(+), 11 deletions(-) diff --git a/lib/brakeman/report/report_text.rb b/lib/brakeman/report/report_text.rb index 527251d3c7..f16839e4eb 100644 --- a/lib/brakeman/report/report_text.rb +++ b/lib/brakeman/report/report_text.rb @@ -140,7 +140,7 @@ def generate_templates end double_space "Template Output", template_rows.sort_by { |name, value| name.to_s }.map { |template| - [HighLine.new.color(template.first.to_s << "\n", :cyan)] + template[1] + [HighLine.new.color("#{template.first}\n", :cyan)] + template[1] }.compact end diff --git a/test/test.rb b/test/test.rb index d57b9b967f..2921fa5d9e 100644 --- a/test/test.rb +++ b/test/test.rb @@ -58,13 +58,23 @@ def assert_no_warning opts assert_equal 0, warnings.length, "Found warning when no warning was expected" end - def find opts = {}, &block - t = opts[:type] - if t.nil? or t == :warning - warnings = report[:generic_warnings] + def warning_table type + case type + when :warning, :generic, nil + :generic_warnings + when :template + :template_warnings + when :controller + :controller_warnings + when :model + :model_warnings else - warnings = report[(t.to_s << "_warnings").to_sym] + raise "Unknown warning type: #{type.inspect}" end + end + + def find opts = {}, &block + warnings = report[warning_table(opts[:type])] opts.delete :type @@ -93,11 +103,7 @@ def test_number_of_warnings require 'pp' expected.each do |type, number| - if type == :warning - warnings = report[:warnings] - else - warnings = report[(type.to_s << "_warnings").to_sym] - end + warnings = report[warning_table(type)] assert_equal number, warnings.length, lambda { "Expected #{number} #{type} warnings, but found #{warnings.length}:\n#{warnings.map { |w| w.message }.join("\n")}" } end