1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135
|
# frozen_string_literal: true
require_relative "../abstract_unit"
class DeprecationTest < ActiveSupport::TestCase
setup do
@deprecator_names = [:fubar, :foo, :bar]
@deprecators = ActiveSupport::Deprecation::Deprecators.new
@deprecator_names.each do |name|
@deprecators[name] = ActiveSupport::Deprecation.new("2.0", name.to_s)
end
end
test "#[] gets an individual deprecator" do
@deprecator_names.each do |name|
assert_equal name.to_s, @deprecators[name].gem_name
end
end
test "#each iterates over each deprecator" do
gem_names = []
@deprecators.each { |deprecator| gem_names << deprecator.gem_name }
assert_equal @deprecator_names.map(&:to_s).sort, gem_names.sort
end
test "#each without block returns an Enumerator" do
assert_kind_of Enumerator, @deprecators.each
assert_equal @deprecator_names.map(&:to_s).sort, @deprecators.each.map(&:gem_name).sort
end
test "#silenced= applies to each deprecator" do
@deprecators.each { |deprecator| assert_not_predicate deprecator, :silenced }
@deprecators.silenced = true
@deprecators.each { |deprecator| assert_predicate deprecator, :silenced }
@deprecators.silenced = false
@deprecators.each { |deprecator| assert_not_predicate deprecator, :silenced }
end
test "#debug= applies to each deprecator" do
@deprecators.each { |deprecator| assert_not_predicate deprecator, :debug }
@deprecators.debug = true
@deprecators.each { |deprecator| assert_predicate deprecator, :debug }
@deprecators.debug = false
@deprecators.each { |deprecator| assert_not_predicate deprecator, :debug }
end
test "#behavior= applies to each deprecator" do
callback = proc { }
@deprecators.behavior = callback
@deprecators.each { |deprecator| assert_equal [callback], deprecator.behavior }
end
test "#disallowed_behavior= applies to each deprecator" do
callback = proc { }
@deprecators.disallowed_behavior = callback
@deprecators.each { |deprecator| assert_equal [callback], deprecator.disallowed_behavior }
end
test "#disallowed_warnings= applies to each deprecator" do
@deprecators.disallowed_warnings = :all
@deprecators.each { |deprecator| assert_equal :all, deprecator.disallowed_warnings }
end
test "#silence silences each deprecator" do
@deprecators.each { |deprecator| assert_not_silencing(deprecator) }
@deprecators.silence do
@deprecators.each { |deprecator| assert_silencing(deprecator) }
end
@deprecators.each { |deprecator| assert_not_silencing(deprecator) }
end
test "#silence returns the result of the block" do
assert_equal 123, @deprecators.silence { 123 }
end
test "#silence ensures silencing is reverted after an error is raised" do
assert_raises do
@deprecators.silence { raise }
end
@deprecators.each { |deprecator| assert_not_silencing(deprecator) }
end
test "#silence blocks can be nested" do
@deprecators.each { |deprecator| assert_not_silencing(deprecator) }
@deprecators.silence do
@deprecators.each { |deprecator| assert_silencing(deprecator) }
@deprecators.silence do
@deprecators.each { |deprecator| assert_silencing(deprecator) }
end
@deprecators.each { |deprecator| assert_silencing(deprecator) }
end
@deprecators.each { |deprecator| assert_not_silencing(deprecator) }
end
test "#silence only affects the current thread" do
@deprecators.silence do
@deprecators.each { |deprecator| assert_silencing(deprecator) }
Thread.new do
@deprecators.each { |deprecator| assert_not_silencing(deprecator) }
@deprecators.silence do
@deprecators.each { |deprecator| assert_silencing(deprecator) }
end
@deprecators.each { |deprecator| assert_not_silencing(deprecator) }
end.join
@deprecators.each { |deprecator| assert_silencing(deprecator) }
end
end
private
def assert_silencing(deprecator)
assert_not_deprecated(deprecator) { deprecator.warn }
end
def assert_not_silencing(deprecator)
assert_deprecated(deprecator) { deprecator.warn }
end
end
|