Module: ActiveSupport::Testing::Deprecation
- Included in:
- ActiveSupport::TestCase
- Defined in:
- lib/active_support/testing/deprecation.rb
Instance Method Summary collapse
-
#assert_deprecated(match = nil, deprecator = nil, &block) ⇒ Object
:call-seq: assert_deprecated(deprecator, &block) assert_deprecated(match, deprecator, &block).
-
#assert_not_deprecated(deprecator, &block) ⇒ Object
Asserts that no deprecation warnings are emitted by the given deprecator during the execution of the yielded block.
-
#collect_deprecations(deprecator) ⇒ Object
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.
Instance Method Details
#assert_deprecated(match = nil, deprecator = nil, &block) ⇒ Object
:call-seq:
assert_deprecated(deprecator, &block)
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
30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 |
# 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 raise ArgumentError, "No deprecator given" 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, &block) ⇒ Object
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
55 56 57 58 59 |
# File 'lib/active_support/testing/deprecation.rb', line 55 def assert_not_deprecated(deprecator, &block) 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) ⇒ Object
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"]]
69 70 71 72 73 74 75 76 77 78 79 |
# File 'lib/active_support/testing/deprecation.rb', line 69 def collect_deprecations(deprecator) old_behavior = deprecator.behavior deprecations = [] deprecator.behavior = Proc.new do |, callstack| deprecations << end result = yield [result, deprecations] ensure deprecator.behavior = old_behavior end |