Skip to content

Commit

Permalink
Fix Puma::StateFile#load returns empty string instead of nil (puma#…
Browse files Browse the repository at this point in the history
…2810)

Bug introduced in 2b6968f puma#2784

Until 5.5.2, empty values were read as `nil`.
Since 5.6.0, empty values are read as `""`.
  • Loading branch information
kzkn authored and JuanitoFatas committed Sep 9, 2022
1 parent 5dca6d1 commit 95874f7
Show file tree
Hide file tree
Showing 2 changed files with 28 additions and 0 deletions.
1 change: 1 addition & 0 deletions lib/puma/state_file.rb
Expand Up @@ -50,6 +50,7 @@ def load(path)
v = v.strip
@options[k] =
case v
when '' then nil
when /\A\d+\z/ then v.to_i
when /\A\d+\.\d+\z/ then v.to_f
else v.gsub(/\A"|"\z/, '')
Expand Down
27 changes: 27 additions & 0 deletions test/test_state_file.rb
@@ -0,0 +1,27 @@
require_relative "helper"
require_relative "helpers/tmp_path"

require 'puma/state_file'

class TestStateFile < Minitest::Test
include TmpPath

def test_load_empty_value_as_nil
state_path = tmp_path('.state')
File.write state_path, <<-STATE
---
pid: 123456
control_url:
control_auth_token:
running_from: "/path/to/app"
STATE

sf = Puma::StateFile.new
sf.load(state_path)
assert_equal 123456, sf.pid
assert_equal '/path/to/app', sf.running_from
assert_nil sf.control_url
assert_nil sf.control_auth_token

end
end

0 comments on commit 95874f7

Please sign in to comment.