Merge pull request #37313 from Shopify/block-assertions
Implicitly assert no exception is raised in block assertions
This commit is contained in:
commit
99d12b9507
@ -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 back–we 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
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user