aboutsummaryrefslogtreecommitdiffstats
path: root/activesupport/test/concern_test.rb
diff options
context:
space:
mode:
authorRafael Mendonça França <rafaelmfranca@gmail.com>2015-06-12 13:23:15 -0300
committerRafael Mendonça França <rafaelmfranca@gmail.com>2015-06-12 13:23:15 -0300
commit8beb328befa53d74fe9c7942ddb188563bd4de33 (patch)
treef2c602493b4919e6c696855b171994b5fd847e1e /activesupport/test/concern_test.rb
parent1d43458c148f9532a81b92ee3a247da4f1c0b7ad (diff)
parentf98e75a3e2b1665bd1da28b9456a296cc3c35bbc (diff)
downloadrails-8beb328befa53d74fe9c7942ddb188563bd4de33.tar.gz
rails-8beb328befa53d74fe9c7942ddb188563bd4de33.tar.bz2
rails-8beb328befa53d74fe9c7942ddb188563bd4de33.zip
Merge pull request #20494 from knovoselic/active_support_concern_class_methods_fix
[ActiveSupport] Fix for #20489 - ActiveSupport::Concern#class_methods affects parent classes
Diffstat (limited to 'activesupport/test/concern_test.rb')
-rw-r--r--activesupport/test/concern_test.rb25
1 files changed, 25 insertions, 0 deletions
diff --git a/activesupport/test/concern_test.rb b/activesupport/test/concern_test.rb
index 253c1adc23..8ea701cfb7 100644
--- a/activesupport/test/concern_test.rb
+++ b/activesupport/test/concern_test.rb
@@ -54,6 +54,11 @@ class ConcernTest < ActiveSupport::TestCase
include Bar, Baz
end
+ module Qux
+ module ClassMethods
+ end
+ end
+
def setup
@klass = Class.new
end
@@ -70,6 +75,26 @@ class ConcernTest < ActiveSupport::TestCase
assert_equal ConcernTest::Baz::ClassMethods, (class << @klass; self.included_modules; end)[0]
end
+ def test_class_methods_are_extended_only_on_expected_objects
+ ::Object.__send__(:include, Qux)
+ Object.extend(Qux::ClassMethods)
+ # module needs to be created after Qux is included in Object or bug won't
+ # be triggered
+ test_module = Module.new do
+ extend ActiveSupport::Concern
+
+ class_methods do
+ def test
+ end
+ end
+ end
+ @klass.include test_module
+ assert_equal false, Object.respond_to?(:test)
+ Qux.class_eval do
+ remove_const :ClassMethods
+ end
+ end
+
def test_included_block_is_ran
@klass.include(Baz)
assert_equal true, @klass.included_ran