summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJeremy Evans <code@jeremyevans.net>2022-05-09 11:03:14 -0700
committerJeremy Evans <code@jeremyevans.net>2022-05-25 08:33:11 -0700
commit0a5c10d4ce604d46c093719f5d15241090adc839 (patch)
treedcdc2af03821f6987957e389942b16fa7574d4c7
parentf587034d9d2c9a8964cf6a30b32ef264b3375c6b (diff)
downloadrack-0a5c10d4ce604d46c093719f5d15241090adc839.tar.gz
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% )
-rw-r--r--lib/rack/query_parser.rb10
-rw-r--r--test/spec_utils.rb8
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