Sha256: 30aeaa10d9c1d0bff2a0ce9c1f51c5158e8c739d8b5daee2e3426b4ee2f870ea

Contents?: true

Size: 1.03 KB

Versions: 2

Compression:

Stored size: 1.03 KB

Contents

require 'abstract_unit'
require 'active_support/core_ext/module/reachable'

class AnonymousTest < ActiveSupport::TestCase
  test "an anonymous class or module is not reachable" do
    assert !Module.new.reachable?
    assert !Class.new.reachable?
  end

  test "ordinary named classes or modules are reachable" do
    assert Kernel.reachable?
    assert Object.reachable?
  end

  test "a named class or module whose constant has gone is not reachable" do
    c = eval "class C; end; C"
    m = eval "module M; end; M"

    self.class.send(:remove_const, :C)
    self.class.send(:remove_const, :M)

    assert !c.reachable?
    assert !m.reachable?
  end

  test "a named class or module whose constants store different objects are not reachable" do
    c = eval "class C; end; C"
    m = eval "module M; end; M"

    self.class.send(:remove_const, :C)
    self.class.send(:remove_const, :M)

    eval "class C; end"
    eval "module M; end"

    assert C.reachable?
    assert M.reachable?
    assert !c.reachable?
    assert !m.reachable?
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
activejob-lock-0.0.2 rails/activesupport/test/core_ext/module/reachable_test.rb
activejob-lock-0.0.1 rails/activesupport/test/core_ext/module/reachable_test.rb