mirror of
https://github.com/rails/rails.git
synced 2022-11-09 12:12:34 -05:00
Removed deprecated methods and related tests from ActiveSupport
This commit is contained in:
parent
7fd0a6de84
commit
9cafc28874
15 changed files with 3 additions and 648 deletions
|
@ -31,13 +31,8 @@ module ActiveSupport
|
|||
# <% end %>
|
||||
def benchmark(message = "Benchmarking", options = {})
|
||||
if logger
|
||||
if options.is_a?(Symbol)
|
||||
ActiveSupport::Deprecation.warn("use benchmark('#{message}', :level => :#{options}) instead", caller)
|
||||
options = { :level => options, :silence => false }
|
||||
else
|
||||
options.assert_valid_keys(:level, :silence)
|
||||
options[:level] ||= :info
|
||||
end
|
||||
options.assert_valid_keys(:level, :silence)
|
||||
options[:level] ||= :info
|
||||
|
||||
result = nil
|
||||
ms = Benchmark.ms { result = options[:silence] ? logger.silence { yield } : yield }
|
||||
|
|
|
@ -1,13 +0,0 @@
|
|||
module ActiveSupport
|
||||
module Cache
|
||||
class CompressedMemCacheStore < MemCacheStore
|
||||
def initialize(*args)
|
||||
ActiveSupport::Deprecation.warn('ActiveSupport::Cache::CompressedMemCacheStore has been deprecated in favor of ActiveSupport::Cache::MemCacheStore(:compress => true).', caller)
|
||||
addresses = args.dup
|
||||
options = addresses.extract_options!
|
||||
args = addresses + [options.merge(:compress => true)]
|
||||
super(*args)
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
|
@ -77,19 +77,7 @@ module ActiveSupport
|
|||
def read_entry(key, options)
|
||||
file_name = key_file_path(key)
|
||||
if File.exist?(file_name)
|
||||
entry = File.open(file_name) { |f| Marshal.load(f) }
|
||||
if entry && !entry.expired? && !entry.expires_in && !self.options[:expires_in]
|
||||
# Check for deprecated use of +:expires_in+ option from versions < 3.0
|
||||
deprecated_expires_in = options[:expires_in]
|
||||
if deprecated_expires_in
|
||||
ActiveSupport::Deprecation.warn('Setting :expires_in on read has been deprecated in favor of setting it on write.', caller)
|
||||
if entry.created_at + deprecated_expires_in.to_f <= Time.now.to_f
|
||||
delete_entry(key, options)
|
||||
entry = nil
|
||||
end
|
||||
end
|
||||
end
|
||||
entry
|
||||
File.open(file_name) { |f| Marshal.load(f) }
|
||||
end
|
||||
rescue
|
||||
nil
|
||||
|
|
|
@ -1,11 +0,0 @@
|
|||
module ActiveSupport
|
||||
module Cache
|
||||
# Like MemoryStore, but thread-safe.
|
||||
class SynchronizedMemoryStore < MemoryStore
|
||||
def initialize(*args)
|
||||
ActiveSupport::Deprecation.warn('ActiveSupport::Cache::SynchronizedMemoryStore has been deprecated in favor of ActiveSupport::Cache::MemoryStore.', caller)
|
||||
super
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
|
@ -1,5 +1,4 @@
|
|||
require 'active_support/core_ext/class/attribute'
|
||||
require 'active_support/core_ext/class/attribute_accessors'
|
||||
require 'active_support/core_ext/class/inheritable_attributes'
|
||||
require 'active_support/core_ext/class/delegating_attributes'
|
||||
require 'active_support/core_ext/class/subclasses'
|
||||
|
|
|
@ -1,178 +0,0 @@
|
|||
require 'active_support/core_ext/object/duplicable'
|
||||
require 'active_support/core_ext/array/extract_options'
|
||||
require 'active_support/deprecation'
|
||||
|
||||
# Retained for backward compatibility. Methods are now included in Class.
|
||||
module ClassInheritableAttributes # :nodoc:
|
||||
DEPRECATION_WARNING_MESSAGE = "class_inheritable_attribute is deprecated, please use class_attribute method instead. Notice their behavior are slightly different, so refer to class_attribute documentation first"
|
||||
end
|
||||
|
||||
# It is recommended to use <tt>class_attribute</tt> over methods defined in this file. Please
|
||||
# refer to documentation for <tt>class_attribute</tt> for more information. Officially it is not
|
||||
# deprecated but <tt>class_attribute</tt> is faster.
|
||||
#
|
||||
# Allows attributes to be shared within an inheritance hierarchy. Each descendant gets a copy of
|
||||
# their parents' attributes, instead of just a pointer to the same. This means that the child can add elements
|
||||
# to, for example, an array without those additions being shared with either their parent, siblings, or
|
||||
# children. This is unlike the regular class-level attributes that are shared across the entire hierarchy.
|
||||
#
|
||||
# The copies of inheritable parent attributes are added to subclasses when they are created, via the
|
||||
# +inherited+ hook.
|
||||
#
|
||||
# class Person
|
||||
# class_inheritable_accessor :hair_colors
|
||||
# end
|
||||
#
|
||||
# Person.hair_colors = [:brown, :black, :blonde, :red]
|
||||
# Person.hair_colors # => [:brown, :black, :blonde, :red]
|
||||
# Person.new.hair_colors # => [:brown, :black, :blonde, :red]
|
||||
#
|
||||
# To opt out of the instance writer method, pass :instance_writer => false.
|
||||
# To opt out of the instance reader method, pass :instance_reader => false.
|
||||
#
|
||||
# class Person
|
||||
# class_inheritable_accessor :hair_colors :instance_writer => false, :instance_reader => false
|
||||
# end
|
||||
#
|
||||
# Person.new.hair_colors = [:brown] # => NoMethodError
|
||||
# Person.new.hair_colors # => NoMethodError
|
||||
class Class # :nodoc:
|
||||
def class_inheritable_reader(*syms)
|
||||
ActiveSupport::Deprecation.warn ClassInheritableAttributes::DEPRECATION_WARNING_MESSAGE
|
||||
options = syms.extract_options!
|
||||
syms.each do |sym|
|
||||
next if sym.is_a?(Hash)
|
||||
class_eval(<<-EOS, __FILE__, __LINE__ + 1)
|
||||
def self.#{sym} # def self.after_add
|
||||
read_inheritable_attribute(:#{sym}) # read_inheritable_attribute(:after_add)
|
||||
end # end
|
||||
#
|
||||
#{" #
|
||||
def #{sym} # def after_add
|
||||
self.class.#{sym} # self.class.after_add
|
||||
end # end
|
||||
" unless options[:instance_reader] == false } # # the reader above is generated unless options[:instance_reader] == false
|
||||
EOS
|
||||
end
|
||||
end
|
||||
|
||||
def class_inheritable_writer(*syms)
|
||||
ActiveSupport::Deprecation.warn ClassInheritableAttributes::DEPRECATION_WARNING_MESSAGE
|
||||
options = syms.extract_options!
|
||||
syms.each do |sym|
|
||||
class_eval(<<-EOS, __FILE__, __LINE__ + 1)
|
||||
def self.#{sym}=(obj) # def self.color=(obj)
|
||||
write_inheritable_attribute(:#{sym}, obj) # write_inheritable_attribute(:color, obj)
|
||||
end # end
|
||||
#
|
||||
#{" #
|
||||
def #{sym}=(obj) # def color=(obj)
|
||||
self.class.#{sym} = obj # self.class.color = obj
|
||||
end # end
|
||||
" unless options[:instance_writer] == false } # # the writer above is generated unless options[:instance_writer] == false
|
||||
EOS
|
||||
end
|
||||
end
|
||||
|
||||
def class_inheritable_array_writer(*syms)
|
||||
ActiveSupport::Deprecation.warn ClassInheritableAttributes::DEPRECATION_WARNING_MESSAGE
|
||||
options = syms.extract_options!
|
||||
syms.each do |sym|
|
||||
class_eval(<<-EOS, __FILE__, __LINE__ + 1)
|
||||
def self.#{sym}=(obj) # def self.levels=(obj)
|
||||
write_inheritable_array(:#{sym}, obj) # write_inheritable_array(:levels, obj)
|
||||
end # end
|
||||
#
|
||||
#{" #
|
||||
def #{sym}=(obj) # def levels=(obj)
|
||||
self.class.#{sym} = obj # self.class.levels = obj
|
||||
end # end
|
||||
" unless options[:instance_writer] == false } # # the writer above is generated unless options[:instance_writer] == false
|
||||
EOS
|
||||
end
|
||||
end
|
||||
|
||||
def class_inheritable_hash_writer(*syms)
|
||||
ActiveSupport::Deprecation.warn ClassInheritableAttributes::DEPRECATION_WARNING_MESSAGE
|
||||
options = syms.extract_options!
|
||||
syms.each do |sym|
|
||||
class_eval(<<-EOS, __FILE__, __LINE__ + 1)
|
||||
def self.#{sym}=(obj) # def self.nicknames=(obj)
|
||||
write_inheritable_hash(:#{sym}, obj) # write_inheritable_hash(:nicknames, obj)
|
||||
end # end
|
||||
#
|
||||
#{" #
|
||||
def #{sym}=(obj) # def nicknames=(obj)
|
||||
self.class.#{sym} = obj # self.class.nicknames = obj
|
||||
end # end
|
||||
" unless options[:instance_writer] == false } # # the writer above is generated unless options[:instance_writer] == false
|
||||
EOS
|
||||
end
|
||||
end
|
||||
|
||||
def class_inheritable_accessor(*syms)
|
||||
class_inheritable_reader(*syms)
|
||||
class_inheritable_writer(*syms)
|
||||
end
|
||||
|
||||
def class_inheritable_array(*syms)
|
||||
class_inheritable_reader(*syms)
|
||||
class_inheritable_array_writer(*syms)
|
||||
end
|
||||
|
||||
def class_inheritable_hash(*syms)
|
||||
class_inheritable_reader(*syms)
|
||||
class_inheritable_hash_writer(*syms)
|
||||
end
|
||||
|
||||
def inheritable_attributes
|
||||
@inheritable_attributes ||= EMPTY_INHERITABLE_ATTRIBUTES
|
||||
end
|
||||
|
||||
def write_inheritable_attribute(key, value)
|
||||
if inheritable_attributes.equal?(EMPTY_INHERITABLE_ATTRIBUTES)
|
||||
@inheritable_attributes = {}
|
||||
end
|
||||
inheritable_attributes[key] = value
|
||||
end
|
||||
|
||||
def write_inheritable_array(key, elements)
|
||||
write_inheritable_attribute(key, []) if read_inheritable_attribute(key).nil?
|
||||
write_inheritable_attribute(key, read_inheritable_attribute(key) + elements)
|
||||
end
|
||||
|
||||
def write_inheritable_hash(key, hash)
|
||||
write_inheritable_attribute(key, {}) if read_inheritable_attribute(key).nil?
|
||||
write_inheritable_attribute(key, read_inheritable_attribute(key).merge(hash))
|
||||
end
|
||||
|
||||
def read_inheritable_attribute(key)
|
||||
inheritable_attributes[key]
|
||||
end
|
||||
|
||||
def reset_inheritable_attributes
|
||||
ActiveSupport::Deprecation.warn ClassInheritableAttributes::DEPRECATION_WARNING_MESSAGE
|
||||
@inheritable_attributes = EMPTY_INHERITABLE_ATTRIBUTES
|
||||
end
|
||||
|
||||
private
|
||||
# Prevent this constant from being created multiple times
|
||||
EMPTY_INHERITABLE_ATTRIBUTES = {}.freeze
|
||||
|
||||
def inherited_with_inheritable_attributes(child)
|
||||
inherited_without_inheritable_attributes(child) if respond_to?(:inherited_without_inheritable_attributes)
|
||||
|
||||
if inheritable_attributes.equal?(EMPTY_INHERITABLE_ATTRIBUTES)
|
||||
new_inheritable_attributes = EMPTY_INHERITABLE_ATTRIBUTES
|
||||
else
|
||||
new_inheritable_attributes = Hash[inheritable_attributes.map do |(key, value)|
|
||||
[key, value.duplicable? ? value.dup : value]
|
||||
end]
|
||||
end
|
||||
|
||||
child.instance_variable_set('@inheritable_attributes', new_inheritable_attributes)
|
||||
end
|
||||
|
||||
alias inherited_without_inheritable_attributes inherited
|
||||
alias inherited inherited_with_inheritable_attributes
|
||||
end
|
|
@ -4,7 +4,6 @@ require 'active_support/core_ext/module/anonymous'
|
|||
require 'active_support/core_ext/module/reachable'
|
||||
require 'active_support/core_ext/module/attribute_accessors'
|
||||
require 'active_support/core_ext/module/attr_internal'
|
||||
require 'active_support/core_ext/module/attr_accessor_with_default'
|
||||
require 'active_support/core_ext/module/delegation'
|
||||
require 'active_support/core_ext/module/synchronization'
|
||||
require 'active_support/core_ext/module/deprecation'
|
||||
|
|
|
@ -1,31 +0,0 @@
|
|||
class Module
|
||||
# Declare an attribute accessor with an initial default return value.
|
||||
#
|
||||
# To give attribute <tt>:age</tt> the initial value <tt>25</tt>:
|
||||
#
|
||||
# class Person
|
||||
# attr_accessor_with_default :age, 25
|
||||
# end
|
||||
#
|
||||
# person = Person.new
|
||||
# person.age # => 25
|
||||
#
|
||||
# person.age = 26
|
||||
# person.age # => 26
|
||||
#
|
||||
# To give attribute <tt>:element_name</tt> a dynamic default value, evaluated
|
||||
# in scope of self:
|
||||
#
|
||||
# attr_accessor_with_default(:element_name) { name.underscore }
|
||||
#
|
||||
def attr_accessor_with_default(sym, default = Proc.new)
|
||||
ActiveSupport::Deprecation.warn "attr_accessor_with_default is deprecated. Use Ruby instead!"
|
||||
define_method(sym, block_given? ? default : Proc.new { default })
|
||||
module_eval(<<-EVAL, __FILE__, __LINE__ + 1)
|
||||
def #{sym}=(value) # def age=(value)
|
||||
class << self; attr_accessor :#{sym} end # class << self; attr_accessor :age end
|
||||
@#{sym} = value # @age = value
|
||||
end # end
|
||||
EVAL
|
||||
end
|
||||
end
|
|
@ -5,7 +5,6 @@ require 'active_support/core_ext/module/aliasing'
|
|||
require 'active_support/core_ext/module/attribute_accessors'
|
||||
require 'active_support/core_ext/module/introspection'
|
||||
require 'active_support/core_ext/module/anonymous'
|
||||
require 'active_support/core_ext/module/deprecation'
|
||||
require 'active_support/core_ext/object/blank'
|
||||
require 'active_support/core_ext/load_error'
|
||||
require 'active_support/core_ext/name_error'
|
||||
|
@ -550,23 +549,6 @@ module ActiveSupport #:nodoc:
|
|||
end
|
||||
alias :get :[]
|
||||
|
||||
class Getter # :nodoc:
|
||||
def initialize(name)
|
||||
@name = name
|
||||
end
|
||||
|
||||
def get
|
||||
Reference.get @name
|
||||
end
|
||||
deprecate :get
|
||||
end
|
||||
|
||||
def new(name)
|
||||
self[name] = name
|
||||
Getter.new(name)
|
||||
end
|
||||
deprecate :new
|
||||
|
||||
def store(name)
|
||||
self[name] = name
|
||||
self
|
||||
|
@ -579,11 +561,6 @@ module ActiveSupport #:nodoc:
|
|||
|
||||
Reference = ClassCache.new
|
||||
|
||||
def ref(name)
|
||||
Reference.new(name)
|
||||
end
|
||||
deprecate :ref
|
||||
|
||||
# Store a reference to a class +klass+.
|
||||
def reference(klass)
|
||||
Reference.store klass
|
||||
|
|
|
@ -1,6 +1,5 @@
|
|||
require 'active_support/core_ext/object/to_json'
|
||||
require 'active_support/core_ext/module/delegation'
|
||||
require 'active_support/deprecation'
|
||||
require 'active_support/json/variable'
|
||||
require 'active_support/ordered_hash'
|
||||
|
||||
|
@ -139,8 +138,6 @@ module ActiveSupport
|
|||
self.use_standard_json_time_format = true
|
||||
self.escape_html_entities_in_json = false
|
||||
end
|
||||
|
||||
CircularReferenceError = Deprecation::DeprecatedConstantProxy.new('ActiveSupport::JSON::CircularReferenceError', Encoding::CircularReferenceError)
|
||||
end
|
||||
end
|
||||
|
||||
|
|
|
@ -26,17 +26,6 @@ class BenchmarkableTest < ActiveSupport::TestCase
|
|||
assert_last_logged 'test_run'
|
||||
end
|
||||
|
||||
def test_with_message_and_deprecated_level
|
||||
i_was_run = false
|
||||
|
||||
assert_deprecated do
|
||||
benchmark('debug_run', :debug) { i_was_run = true }
|
||||
end
|
||||
|
||||
assert i_was_run
|
||||
assert_last_logged 'debug_run'
|
||||
end
|
||||
|
||||
def test_within_level
|
||||
logger.level = ActiveSupport::BufferedLogger::DEBUG
|
||||
benchmark('included_debug_run', :level => :debug) { }
|
||||
|
|
|
@ -531,26 +531,6 @@ class FileStoreTest < ActiveSupport::TestCase
|
|||
include CacheDeleteMatchedBehavior
|
||||
include CacheIncrementDecrementBehavior
|
||||
|
||||
def test_deprecated_expires_in_on_read
|
||||
ActiveSupport::Deprecation.silence do
|
||||
old_cache = ActiveSupport::Cache.lookup_store(:file_store, cache_dir)
|
||||
|
||||
time = Time.local(2008, 4, 24)
|
||||
Time.stubs(:now).returns(time)
|
||||
|
||||
old_cache.write("foo", "bar")
|
||||
assert_equal 'bar', old_cache.read('foo', :expires_in => 60)
|
||||
|
||||
Time.stubs(:now).returns(time + 30)
|
||||
assert_equal 'bar', old_cache.read('foo', :expires_in => 60)
|
||||
|
||||
Time.stubs(:now).returns(time + 61)
|
||||
assert_equal 'bar', old_cache.read('foo')
|
||||
assert_nil old_cache.read('foo', :expires_in => 60)
|
||||
assert_nil old_cache.read('foo')
|
||||
end
|
||||
end
|
||||
|
||||
def test_key_transformation
|
||||
key = @cache.send(:key_file_path, "views/index?id=1")
|
||||
assert_equal "views/index?id=1", @cache.send(:file_path_key, key)
|
||||
|
@ -628,18 +608,6 @@ class MemoryStoreTest < ActiveSupport::TestCase
|
|||
end
|
||||
end
|
||||
|
||||
class SynchronizedStoreTest < ActiveSupport::TestCase
|
||||
def setup
|
||||
ActiveSupport::Deprecation.silence do
|
||||
@cache = ActiveSupport::Cache.lookup_store(:memory_store, :expires_in => 60)
|
||||
end
|
||||
end
|
||||
|
||||
include CacheStoreBehavior
|
||||
include CacheDeleteMatchedBehavior
|
||||
include CacheIncrementDecrementBehavior
|
||||
end
|
||||
|
||||
uses_memcached 'memcached backed store' do
|
||||
class MemCacheStoreTest < ActiveSupport::TestCase
|
||||
def setup
|
||||
|
@ -672,18 +640,6 @@ uses_memcached 'memcached backed store' do
|
|||
end
|
||||
end
|
||||
end
|
||||
|
||||
class CompressedMemCacheStore < ActiveSupport::TestCase
|
||||
def setup
|
||||
ActiveSupport::Deprecation.silence do
|
||||
@cache = ActiveSupport::Cache.lookup_store(:compressed_mem_cache_store, :expires_in => 60)
|
||||
@cache.clear
|
||||
end
|
||||
end
|
||||
|
||||
include CacheStoreBehavior
|
||||
include CacheIncrementDecrementBehavior
|
||||
end
|
||||
end
|
||||
|
||||
class CacheStoreLoggerTest < ActiveSupport::TestCase
|
||||
|
|
|
@ -51,20 +51,6 @@ module ActiveSupport
|
|||
assert_equal @cache[ClassCacheTest], @cache.get(ClassCacheTest.name)
|
||||
end
|
||||
|
||||
def test_new
|
||||
assert_deprecated do
|
||||
@cache.new ClassCacheTest
|
||||
end
|
||||
assert @cache.key?(ClassCacheTest.name)
|
||||
end
|
||||
|
||||
def test_new_rejects_strings_when_called_on_a_new_string
|
||||
assert_deprecated do
|
||||
@cache.new ClassCacheTest.name
|
||||
end
|
||||
assert !@cache.key?(ClassCacheTest.name)
|
||||
end
|
||||
|
||||
def test_new_rejects_strings
|
||||
@cache.store ClassCacheTest.name
|
||||
assert !@cache.key?(ClassCacheTest.name)
|
||||
|
@ -74,35 +60,6 @@ module ActiveSupport
|
|||
x = @cache.store ClassCacheTest
|
||||
assert_equal @cache, x
|
||||
end
|
||||
|
||||
def test_new_returns_proxy
|
||||
v = nil
|
||||
assert_deprecated do
|
||||
v = @cache.new ClassCacheTest.name
|
||||
end
|
||||
|
||||
assert_deprecated do
|
||||
assert_equal ClassCacheTest, v.get
|
||||
end
|
||||
end
|
||||
|
||||
def test_anonymous_class_fail
|
||||
assert_raises(ArgumentError) do
|
||||
assert_deprecated do
|
||||
@cache.new Class.new
|
||||
end
|
||||
end
|
||||
|
||||
assert_raises(ArgumentError) do
|
||||
x = Class.new
|
||||
@cache[x] = x
|
||||
end
|
||||
|
||||
assert_raises(ArgumentError) do
|
||||
x = Class.new
|
||||
@cache.store x
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
|
|
@ -1,230 +0,0 @@
|
|||
require 'abstract_unit'
|
||||
require 'active_support/core_ext/class/inheritable_attributes'
|
||||
|
||||
class ClassInheritableAttributesTest < Test::Unit::TestCase
|
||||
def setup
|
||||
ActiveSupport::Deprecation.silenced = true
|
||||
@klass = Class.new
|
||||
end
|
||||
|
||||
def teardown
|
||||
ActiveSupport::Deprecation.silenced = false
|
||||
end
|
||||
|
||||
def test_reader_declaration
|
||||
assert_nothing_raised do
|
||||
@klass.class_inheritable_reader :a
|
||||
assert_respond_to @klass, :a
|
||||
assert_respond_to @klass.new, :a
|
||||
end
|
||||
end
|
||||
|
||||
def test_writer_declaration
|
||||
assert_nothing_raised do
|
||||
@klass.class_inheritable_writer :a
|
||||
assert_respond_to @klass, :a=
|
||||
assert_respond_to @klass.new, :a=
|
||||
end
|
||||
end
|
||||
|
||||
def test_writer_declaration_without_instance_writer
|
||||
assert_nothing_raised do
|
||||
@klass.class_inheritable_writer :a, :instance_writer => false
|
||||
assert_respond_to @klass, :a=
|
||||
assert !@klass.new.respond_to?(:a=)
|
||||
end
|
||||
end
|
||||
|
||||
def test_accessor_declaration
|
||||
assert_nothing_raised do
|
||||
@klass.class_inheritable_accessor :a
|
||||
assert_respond_to @klass, :a
|
||||
assert_respond_to @klass.new, :a
|
||||
assert_respond_to @klass, :a=
|
||||
assert_respond_to @klass.new, :a=
|
||||
end
|
||||
end
|
||||
|
||||
def test_accessor_declaration_without_instance_writer
|
||||
assert_nothing_raised do
|
||||
@klass.class_inheritable_accessor :a, :instance_writer => false
|
||||
assert_respond_to @klass, :a
|
||||
assert_respond_to @klass.new, :a
|
||||
assert_respond_to @klass, :a=
|
||||
assert !@klass.new.respond_to?(:a=)
|
||||
end
|
||||
end
|
||||
|
||||
def test_array_declaration
|
||||
assert_nothing_raised do
|
||||
@klass.class_inheritable_array :a
|
||||
assert_respond_to @klass, :a
|
||||
assert_respond_to @klass.new, :a
|
||||
assert_respond_to @klass, :a=
|
||||
assert_respond_to @klass.new, :a=
|
||||
end
|
||||
end
|
||||
|
||||
def test_array_declaration_without_instance_writer
|
||||
assert_nothing_raised do
|
||||
@klass.class_inheritable_array :a, :instance_writer => false
|
||||
assert_respond_to @klass, :a
|
||||
assert_respond_to @klass.new, :a
|
||||
assert_respond_to @klass, :a=
|
||||
assert !@klass.new.respond_to?(:a=)
|
||||
end
|
||||
end
|
||||
|
||||
def test_hash_declaration
|
||||
assert_nothing_raised do
|
||||
@klass.class_inheritable_hash :a
|
||||
assert_respond_to @klass, :a
|
||||
assert_respond_to @klass.new, :a
|
||||
assert_respond_to @klass, :a=
|
||||
assert_respond_to @klass.new, :a=
|
||||
end
|
||||
end
|
||||
|
||||
def test_hash_declaration_without_instance_writer
|
||||
assert_nothing_raised do
|
||||
@klass.class_inheritable_hash :a, :instance_writer => false
|
||||
assert_respond_to @klass, :a
|
||||
assert_respond_to @klass.new, :a
|
||||
assert_respond_to @klass, :a=
|
||||
assert !@klass.new.respond_to?(:a=)
|
||||
end
|
||||
end
|
||||
|
||||
def test_reader
|
||||
@klass.class_inheritable_reader :a
|
||||
assert_nil @klass.a
|
||||
assert_nil @klass.new.a
|
||||
|
||||
@klass.send(:write_inheritable_attribute, :a, 'a')
|
||||
|
||||
assert_equal 'a', @klass.a
|
||||
assert_equal 'a', @klass.new.a
|
||||
assert_equal @klass.a, @klass.new.a
|
||||
assert_equal @klass.a.object_id, @klass.new.a.object_id
|
||||
end
|
||||
|
||||
def test_writer
|
||||
@klass.class_inheritable_reader :a
|
||||
@klass.class_inheritable_writer :a
|
||||
|
||||
assert_nil @klass.a
|
||||
assert_nil @klass.new.a
|
||||
|
||||
@klass.a = 'a'
|
||||
assert_equal 'a', @klass.a
|
||||
@klass.new.a = 'A'
|
||||
assert_equal 'A', @klass.a
|
||||
end
|
||||
|
||||
def test_array
|
||||
@klass.class_inheritable_array :a
|
||||
|
||||
assert_nil @klass.a
|
||||
assert_nil @klass.new.a
|
||||
|
||||
@klass.a = %w(a b c)
|
||||
assert_equal %w(a b c), @klass.a
|
||||
assert_equal %w(a b c), @klass.new.a
|
||||
|
||||
@klass.new.a = %w(A B C)
|
||||
assert_equal %w(a b c A B C), @klass.a
|
||||
assert_equal %w(a b c A B C), @klass.new.a
|
||||
end
|
||||
|
||||
def test_hash
|
||||
@klass.class_inheritable_hash :a
|
||||
|
||||
assert_nil @klass.a
|
||||
assert_nil @klass.new.a
|
||||
|
||||
@klass.a = { :a => 'a' }
|
||||
assert_equal({ :a => 'a' }, @klass.a)
|
||||
assert_equal({ :a => 'a' }, @klass.new.a)
|
||||
|
||||
@klass.new.a = { :b => 'b' }
|
||||
assert_equal({ :a => 'a', :b => 'b' }, @klass.a)
|
||||
assert_equal({ :a => 'a', :b => 'b' }, @klass.new.a)
|
||||
end
|
||||
|
||||
def test_inheritance
|
||||
@klass.class_inheritable_accessor :a
|
||||
@klass.a = 'a'
|
||||
|
||||
@sub = eval("class FlogMe < @klass; end; FlogMe")
|
||||
|
||||
@klass.class_inheritable_accessor :b
|
||||
|
||||
assert_respond_to @sub, :a
|
||||
assert_respond_to @sub, :b
|
||||
assert_equal @klass.a, @sub.a
|
||||
assert_equal @klass.b, @sub.b
|
||||
assert_equal 'a', @sub.a
|
||||
assert_nil @sub.b
|
||||
|
||||
@klass.b = 'b'
|
||||
assert_not_equal @klass.b, @sub.b
|
||||
assert_equal 'b', @klass.b
|
||||
assert_nil @sub.b
|
||||
|
||||
@sub.a = 'A'
|
||||
assert_not_equal @klass.a, @sub.a
|
||||
assert_equal 'a', @klass.a
|
||||
assert_equal 'A', @sub.a
|
||||
|
||||
@sub.b = 'B'
|
||||
assert_not_equal @klass.b, @sub.b
|
||||
assert_equal 'b', @klass.b
|
||||
assert_equal 'B', @sub.b
|
||||
end
|
||||
|
||||
def test_array_inheritance
|
||||
@klass.class_inheritable_accessor :a
|
||||
@klass.a = []
|
||||
|
||||
@sub = eval("class SubbyArray < @klass; end; SubbyArray")
|
||||
|
||||
assert_equal [], @klass.a
|
||||
assert_equal [], @sub.a
|
||||
|
||||
@sub.a << :first
|
||||
|
||||
assert_equal [:first], @sub.a
|
||||
assert_equal [], @klass.a
|
||||
end
|
||||
|
||||
def test_array_inheritance_
|
||||
@klass.class_inheritable_accessor :a
|
||||
@klass.a = {}
|
||||
|
||||
@sub = eval("class SubbyHash < @klass; end; SubbyHash")
|
||||
|
||||
assert_equal Hash.new, @klass.a
|
||||
assert_equal Hash.new, @sub.a
|
||||
|
||||
@sub.a[:first] = :first
|
||||
|
||||
assert_equal 1, @sub.a.keys.size
|
||||
assert_equal 0, @klass.a.keys.size
|
||||
end
|
||||
|
||||
def test_reset_inheritable_attributes
|
||||
@klass.class_inheritable_accessor :a
|
||||
@klass.a = 'a'
|
||||
|
||||
@sub = eval("class Inheriting < @klass; end; Inheriting")
|
||||
|
||||
assert_equal 'a', @klass.a
|
||||
assert_equal 'a', @sub.a
|
||||
|
||||
@klass.reset_inheritable_attributes
|
||||
@sub = eval("class NotInheriting < @klass; end; NotInheriting")
|
||||
|
||||
assert_nil @klass.a
|
||||
assert_nil @sub.a
|
||||
end
|
||||
end
|
|
@ -1,39 +0,0 @@
|
|||
require 'abstract_unit'
|
||||
require 'active_support/core_ext/module/attr_accessor_with_default'
|
||||
|
||||
class AttrAccessorWithDefaultTest < ActiveSupport::TestCase
|
||||
def setup
|
||||
@target = Class.new do
|
||||
def helper
|
||||
'helper'
|
||||
end
|
||||
end
|
||||
@instance = @target.new
|
||||
end
|
||||
|
||||
def test_default_arg
|
||||
assert_deprecated do
|
||||
@target.attr_accessor_with_default :foo, :bar
|
||||
end
|
||||
assert_equal(:bar, @instance.foo)
|
||||
@instance.foo = nil
|
||||
assert_nil(@instance.foo)
|
||||
end
|
||||
|
||||
def test_default_proc
|
||||
assert_deprecated do
|
||||
@target.attr_accessor_with_default(:foo) {helper.upcase}
|
||||
end
|
||||
assert_equal('HELPER', @instance.foo)
|
||||
@instance.foo = nil
|
||||
assert_nil(@instance.foo)
|
||||
end
|
||||
|
||||
def test_invalid_args
|
||||
assert_raise(ArgumentError) do
|
||||
assert_deprecated do
|
||||
@target.attr_accessor_with_default :foo
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
Loading…
Reference in a new issue