module ActiveSupport::Testing::Deprecation
Public Instance Methods
assert_deprecated(deprecator, &block)
click to toggle source
assert_deprecated(match, deprecator, &block)
Asserts that a matching deprecation warning was emitted by the given deprecator during the execution of the yielded block.
assert_deprecated(/foo/, CustomDeprecator) do CustomDeprecator.warn "foo should no longer be used" end
The match
object may be a Regexp
, or String
appearing in the message.
assert_deprecated('foo', CustomDeprecator) do CustomDeprecator.warn "foo should no longer be used" end
If the match
is omitted (or explicitly nil
), any deprecation warning will match.
assert_deprecated(CustomDeprecator) do CustomDeprecator.warn "foo should no longer be used" end
# File lib/active_support/testing/deprecation.rb, line 30 def assert_deprecated(match = nil, deprecator = nil, &block) match, deprecator = nil, match if match.is_a?(ActiveSupport::Deprecation) unless deprecator ActiveSupport.deprecator.warn("assert_deprecated without a deprecator is deprecated") deprecator = ActiveSupport::Deprecation._instance end result, warnings = collect_deprecations(deprecator, &block) assert !warnings.empty?, "Expected a deprecation warning within the block but received none" if match match = Regexp.new(Regexp.escape(match)) unless match.is_a?(Regexp) assert warnings.any? { |w| match.match?(w) }, "No deprecation warning matched #{match}: #{warnings.join(', ')}" end result end
assert_not_deprecated(deprecator = nil, &block)
click to toggle source
Asserts that no deprecation warnings are emitted by the given deprecator during the execution of the yielded block.
assert_not_deprecated(CustomDeprecator) do CustomDeprecator.warn "message" # fails assertion end assert_not_deprecated(ActiveSupport::Deprecation.new) do CustomDeprecator.warn "message" # passes assertion, different deprecator end
# File lib/active_support/testing/deprecation.rb, line 54 def assert_not_deprecated(deprecator = nil, &block) unless deprecator ActiveSupport.deprecator.warn("assert_not_deprecated without a deprecator is deprecated") deprecator = ActiveSupport::Deprecation._instance end result, deprecations = collect_deprecations(deprecator, &block) assert deprecations.empty?, "Expected no deprecation warning within the block but received #{deprecations.size}: \n #{deprecations * "\n "}" result end
collect_deprecations(deprecator = nil) { || ... }
click to toggle source
Returns the return value of the block and an array of all the deprecation warnings emitted by the given deprecator
during the execution of the yielded block.
collect_deprecations(CustomDeprecator) do CustomDeprecator.warn "message" ActiveSupport::Deprecation.new.warn "other message" :result end # => [:result, ["message"]]
# File lib/active_support/testing/deprecation.rb, line 72 def collect_deprecations(deprecator = nil) unless deprecator ActiveSupport.deprecator.warn("collect_deprecations without a deprecator is deprecated") deprecator = ActiveSupport::Deprecation._instance end old_behavior = deprecator.behavior deprecations = [] deprecator.behavior = Proc.new do |message, callstack| deprecations << message end result = yield [result, deprecations] ensure deprecator.behavior = old_behavior end