Skip to content

Commit 9bf5f12

Browse files
committed
Add tests for $LOAD_PATH.dup and Ractor.make_shareable
1 parent 31cd669 commit 9bf5f12

File tree

3 files changed

+19
-8
lines changed

3 files changed

+19
-8
lines changed

CHANGELOG.md

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,7 @@
11
# Unreleased
22

3+
* Ensure `$LOAD_PATH.dup` is Ractor shareable to fix an conflit with `did_you_mean`.
4+
* Allow to ignore direcotries using absolute paths.
35
* Support YAML and JSON CompileCache on TruffleRuby.
46
* Support LoadPathCache on TruffleRuby.
57

lib/bootsnap/load_path_cache/change_observer.rb

Lines changed: 2 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -56,16 +56,10 @@ def uniq!(*args)
5656
end
5757

5858
def dup
59-
new_obj = super
60-
new_obj.remove_instance_variable(:@lpc_observer)
61-
new_obj
59+
[] + self
6260
end
6361

64-
def clone
65-
new_obj = super
66-
ChangeObserver.unregister(new_obj)
67-
new_obj
68-
end
62+
alias_method :clone, :dup
6963
end
7064

7165
def self.register(arr, observer)

test/load_path_cache/change_observer_test.rb

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@ class ChangeObserverTest < Minitest::Test
1010
def setup
1111
super
1212
@observer = Object.new
13+
@observer.instance_variable_set(:@mutex, Mutex.new)
1314
@arr = []
1415
ChangeObserver.register(@arr, @observer)
1516
end
@@ -78,6 +79,20 @@ def test_register_twice_observes_once
7879
assert_equal(%w(a), @arr)
7980
end
8081

82+
def test_dup_returns_ractor_shareable_instance
83+
return unless defined?(Ractor)
84+
85+
ChangeObserver.register(@arr, @observer)
86+
Ractor.make_shareable(@arr.dup.freeze)
87+
end
88+
89+
def test_clone_returns_ractor_shareable_instance
90+
return unless defined?(Ractor)
91+
92+
ChangeObserver.register(@arr, @observer)
93+
Ractor.make_shareable(@arr.clone.freeze)
94+
end
95+
8196
def test_uniq_without_block
8297
@observer.expects(:reinitialize).never
8398
@arr.uniq!

0 commit comments

Comments
 (0)