From 0a5c10d4ce604d46c093719f5d15241090adc839 Mon Sep 17 00:00:00 2001 From: Jeremy Evans Date: Mon, 9 May 2022 11:03:14 -0700 Subject: Add 100% line/branch coverage to rack/query_parser.rb Remove dead code in _normalize_params. There are two different types of dead code. First, directly before this dead code, you have `v ||= String.new`, so `!v.nil?` is always true and could be removed. The remaining conditions for the dead branch are `k.empty?` and `name = '[]'`. Looking at the conditional above, it's never possible for these two conditions to be simultaneously true: ```ruby if !name # name != '[]' elsif depth == 0 if start = name.index('[', 1) k = name[0, start] # !k.empty? else k = name # !k.empty? || name != '[]' end elsif name.start_with?('[]') k = '[]' # !k.empty? else # all remaining branches # name != '[]', otherwise previous branch taken end ``` Coverage after this commit: 3283 relevant lines, 3282 lines covered and 1 lines missed. ( 99.97% ) 1112 total branches, 1068 branches covered and 44 branches missed. ( 96.04% ) --- lib/rack/query_parser.rb | 10 ++-------- test/spec_utils.rb | 8 ++++++++ 2 files changed, 10 insertions(+), 8 deletions(-) diff --git a/lib/rack/query_parser.rb b/lib/rack/query_parser.rb index ef065b3f..3077fb1f 100644 --- a/lib/rack/query_parser.rb +++ b/lib/rack/query_parser.rb @@ -126,15 +126,9 @@ module Rack after = '' end - v ||= String.new + return if k.empty? - if k.empty? - if !v.nil? && name == "[]" - return Array(v) - else - return - end - end + v ||= String.new if after == '' if k == '[]' && depth != 0 diff --git a/test/spec_utils.rb b/test/spec_utils.rb index 90df2e27..6b75e2ef 100644 --- a/test/spec_utils.rb +++ b/test/spec_utils.rb @@ -131,6 +131,14 @@ describe Rack::Utils do Rack::Utils.parse_nested_query(nil).must_equal({}) end + deprecated "should warn for deprecated QueryParser.make_default call with key_space_limit" do + Rack::QueryParser.make_default(1, 1).must_be_kind_of Rack::QueryParser + end + + deprecated "should warn using deprecated QueryParser.new call with key_space_limit" do + Rack::QueryParser.new(Rack::QueryParser::Params, 1, 1).must_be_kind_of Rack::QueryParser + end + deprecated "should warn using deprecated Rack::Util.key_space_limit=" do Rack::Utils.key_space_limit = 65536 end -- cgit v1.2.1