Skip to content

Commit 83bab7b

Browse files
committed
1 parent 9bfba57 commit 83bab7b

File tree

2 files changed

+49
-5
lines changed

2 files changed

+49
-5
lines changed

lib/power_assert/enable_tracepoint_events.rb

Lines changed: 38 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -13,14 +13,47 @@ module PowerAssert
1313
:length, :size, :empty?, :succ, :>, :>=, :!, :!=, :=~, :freeze
1414
]
1515

16-
basic_classes.each do |klass|
17-
basic_operators.each do |bop|
18-
refine(klass) do
19-
define_method(bop) {}
20-
end
16+
class Bug11182
17+
def fixed?
18+
true
19+
end
20+
end
21+
22+
refine Bug11182 do
23+
def fixed?
2124
end
2225
end
2326

27+
class Bug11182Sub < Bug11182
28+
alias _fixed? fixed?
29+
protected :_fixed?
30+
end
31+
32+
if (Bug11182.new.fixed? rescue false)
33+
basic_classes.each do |klass|
34+
basic_operators.each do |bop|
35+
refine(klass) do
36+
define_method(bop) {}
37+
end
38+
end
39+
end
40+
else
41+
# workaround for https://bugs.ruby-lang.org/issues/11182
42+
basic_classes.each do |klass|
43+
basic_operators.each do |bop|
44+
if klass.public_method_defined?(bop)
45+
klass.ancestors.find {|i| i.instance_methods(false).index(bop) }.module_eval do
46+
public bop
47+
end
48+
end
49+
end
50+
end
51+
52+
refine Symbol do
53+
def ==
54+
end
55+
end
56+
end
2457

2558
# bypass check_cfunc
2659
refine BasicObject do

test/test_power_assert.rb

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -429,4 +429,15 @@ def test_workaround_for_ruby_2_2
429429
assertion_message { Thread.new {}.join }
430430
end
431431
end
432+
433+
class H < Hash
434+
alias aref []
435+
protected :aref
436+
end
437+
438+
def test_workaround_for_bug11182
439+
assert_nothing_raised do
440+
{}[:a]
441+
end
442+
end
432443
end

0 commit comments

Comments
 (0)