summary refs log tree commit
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