Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add more tests to Puma::Events #1162

Merged
merged 1 commit into from Nov 24, 2016
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
111 changes: 107 additions & 4 deletions test/test_events.rb
Expand Up @@ -6,15 +6,16 @@ class TestEvents < Minitest::Test
def test_null
events = Puma::Events.null

assert_kind_of Puma::NullIO, events.stdout
assert_kind_of Puma::NullIO, events.stderr
assert_instance_of Puma::NullIO, events.stdout
assert_instance_of Puma::NullIO, events.stderr
assert_equal events.stdout, events.stderr
end

def test_strings
events = Puma::Events.strings

assert_kind_of StringIO, events.stdout
assert_kind_of StringIO, events.stderr
assert_instance_of StringIO, events.stdout
assert_instance_of StringIO, events.stderr
end

def test_stdio
Expand Down Expand Up @@ -55,4 +56,106 @@ def obj.call

assert_equal true, obj.res
end

def test_fire_callback_with_multiple_arguments
res = []

events = Puma::Events.null

events.register(:exec) { |*args| res.concat(args) }

events.fire(:exec, :foo, :bar, :baz)

assert_equal [:foo, :bar, :baz], res
end

def test_on_booted_callback
res = false

events = Puma::Events.null

events.on_booted { res = true }

events.fire_on_booted!

assert res
end

def test_log_writes_to_stdout
out, _ = capture_io do
Puma::Events.stdio.log("ready")
end

assert_equal "ready\n", out
end

def test_write_writes_to_stdout
out, _ = capture_io do
Puma::Events.stdio.write("ready")
end

assert_equal "ready", out
end

def test_debug_writes_to_stdout_if_env_is_present
original_debug, ENV["PUMA_DEBUG"] = ENV["PUMA_DEBUG"], "1"

out, _ = capture_io do
Puma::Events.stdio.debug("ready")
end

assert_equal "% ready\n", out
ensure
ENV["PUMA_DEBUG"] = original_debug
end

def test_debug_not_write_to_stdout_if_env_is_not_present
out, _ = capture_io do
Puma::Events.stdio.debug("ready")
end

assert_empty out
end

def test_error_writes_to_stderr_and_exits
did_exit = false

_, err = capture_io do
Puma::Events.stdio.error("interrupted")
end

assert_equal "ERROR: interrupted", err
rescue SystemExit
did_exit = true
ensure
assert did_exit
end

def test_pid_formatter
pid = Process.pid

out, _ = capture_io do
events = Puma::Events.stdio

events.formatter = Puma::Events::PidFormatter.new

events.write("ready")
end

assert_equal "[#{ pid }] ready", out
end

def test_custom_log_formatter
custom_formatter = proc { |str| "-> #{ str }" }

out, _ = capture_io do
events = Puma::Events.stdio

events.formatter = custom_formatter

events.write("ready")
end

assert_equal "-> ready", out
end
end