Merge pull request #37313 from Shopify/block-assertions

Implicitly assert no exception is raised in block assertions
This commit is contained in:
Rafael França 2019-10-07 13:41:37 -04:00 committed by GitHub
commit 99d12b9507
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
6 changed files with 27 additions and 23 deletions

@ -42,10 +42,10 @@ def after_teardown # :nodoc:
# end
# end
#
def assert_broadcasts(stream, number)
def assert_broadcasts(stream, number, &block)
if block_given?
original_count = broadcasts_size(stream)
yield
assert_nothing_raised(&block)
new_count = broadcasts_size(stream)
actual_count = new_count - original_count
else
@ -94,7 +94,7 @@ def assert_no_broadcasts(stream, &block)
# end
# end
#
def assert_broadcast_on(stream, data)
def assert_broadcast_on(stream, data, &block)
# Encode to JSON and backwe want to use this value to compare
# with decoded JSON.
# Comparing JSON strings doesn't work due to the order if the keys.
@ -106,7 +106,7 @@ def assert_broadcast_on(stream, data)
old_messages = new_messages
clear_messages(stream)
yield
assert_nothing_raised(&block)
new_messages = broadcasts(stream)
clear_messages(stream)

@ -613,8 +613,8 @@ def assert_blocked
assert_response :success
end
def assert_not_blocked
assert_nothing_raised { yield }
def assert_not_blocked(&block)
assert_nothing_raised(&block)
assert_response :success
end
@ -1019,8 +1019,8 @@ def assert_blocked
end
end
def assert_not_blocked
assert_nothing_raised { yield }
def assert_not_blocked(&block)
assert_nothing_raised(&block)
assert_response :success
end
end

@ -117,11 +117,11 @@ def queue_adapter_for_test
# HelloJob.perform_later('elfassy')
# end
# end
def assert_enqueued_jobs(number, only: nil, except: nil, queue: nil)
def assert_enqueued_jobs(number, only: nil, except: nil, queue: nil, &block)
if block_given?
original_count = enqueued_jobs_with(only: only, except: except, queue: queue)
yield
assert_nothing_raised(&block)
new_count = enqueued_jobs_with(only: only, except: except, queue: queue)
@ -379,7 +379,7 @@ def assert_no_performed_jobs(only: nil, except: nil, queue: nil, &block)
# MyJob.set(wait_until: Date.tomorrow.noon).perform_later
# end
# end
def assert_enqueued_with(job: nil, args: nil, at: nil, queue: nil)
def assert_enqueued_with(job: nil, args: nil, at: nil, queue: nil, &block)
expected = { job: job, args: args, at: at, queue: queue }.compact
expected_args = prepare_args_for_assertion(expected)
potential_matches = []
@ -387,7 +387,7 @@ def assert_enqueued_with(job: nil, args: nil, at: nil, queue: nil)
if block_given?
original_enqueued_jobs_count = enqueued_jobs.count
yield
assert_nothing_raised(&block)
jobs = enqueued_jobs.drop(original_enqueued_jobs_count)
else
@ -550,7 +550,7 @@ def assert_performed_with(job: nil, args: nil, at: nil, queue: nil, &block)
#
# If the +:at+ option is specified, then only run jobs enqueued to run
# immediately or before the given time
def perform_enqueued_jobs(only: nil, except: nil, queue: nil, at: nil)
def perform_enqueued_jobs(only: nil, except: nil, queue: nil, at: nil, &block)
return flush_enqueued_jobs(only: only, except: except, queue: queue, at: at) unless block_given?
validate_option(only: only, except: except)
@ -570,7 +570,7 @@ def perform_enqueued_jobs(only: nil, except: nil, queue: nil, at: nil)
queue_adapter.queue = queue
queue_adapter.at = at
yield
assert_nothing_raised(&block)
ensure
queue_adapter.perform_enqueued_jobs = old_perform_enqueued_jobs
queue_adapter.perform_enqueued_at_jobs = old_perform_enqueued_at_jobs

@ -162,10 +162,12 @@ def test_for_tagged_logger_support_is_consistent
end
def test_job_error_logging
perform_enqueued_jobs { RescueJob.perform_later "other" }
rescue RescueJob::OtherError
assert_match(/Performing RescueJob \(Job ID: .*?\) from .*? with arguments:.*other/, @logger.messages)
assert_match(/Error performing RescueJob \(Job ID: .*?\) from .*? in .*ms: RescueJob::OtherError \(Bad hair\):\n.*\brescue_job\.rb:\d+:in `perform'/, @logger.messages)
perform_enqueued_jobs do
RescueJob.perform_later "other"
rescue RescueJob::OtherError
assert_match(/Performing RescueJob \(Job ID: .*?\) from .*? with arguments:.*other/, @logger.messages)
assert_match(/Error performing RescueJob \(Job ID: .*?\) from .*? in .*ms: RescueJob::OtherError \(Bad hair\):\n.*\brescue_job\.rb:\d+:in `perform'/, @logger.messages)
end
end
def test_enqueue_retry_logging

@ -30,6 +30,8 @@ def assert_not(object, message = nil)
# end
def assert_nothing_raised
yield
rescue => error
raise Minitest::UnexpectedError.new(error)
end
# Test numeric difference between the return value of an expression as a
@ -95,7 +97,7 @@ def assert_difference(expression, *args, &block)
}
before = exps.map(&:call)
retval = yield
retval = assert_nothing_raised(&block)
expressions.zip(exps, before) do |(code, diff), exp, before_value|
error = "#{code.inspect} didn't change by #{diff}"
@ -172,7 +174,7 @@ def assert_changes(expression, message = nil, from: UNTRACKED, to: UNTRACKED, &b
exp = expression.respond_to?(:call) ? expression : -> { eval(expression.to_s, block.binding) }
before = exp.call
retval = yield
retval = assert_nothing_raised(&block)
unless from == UNTRACKED
error = "#{expression.inspect} isn't #{from.inspect}"
@ -214,7 +216,7 @@ def assert_no_changes(expression, message = nil, &block)
exp = expression.respond_to?(:call) ? expression : -> { eval(expression.to_s, block.binding) }
before = exp.call
retval = yield
retval = assert_nothing_raised(&block)
after = exp.call
error = "#{expression.inspect} did change to #{after}"

@ -27,7 +27,7 @@ def assert_file(relative, *contents)
assert File.exist?(absolute), "Expected file #{relative.inspect} to exist, but does not"
read = File.read(absolute) if block_given? || !contents.empty?
yield read if block_given?
assert_nothing_raised { yield read } if block_given?
contents.each do |content|
case content
@ -99,7 +99,7 @@ def assert_class_method(method, content, &block)
# end
def assert_instance_method(method, content)
assert content =~ /(\s+)def #{method}(\(.+\))?(.*?)\n\1end/m, "Expected to have method #{method}"
yield $3.strip if block_given?
assert_nothing_raised { yield $3.strip } if block_given?
end
alias :assert_method :assert_instance_method