File tree 2 files changed +32
-3
lines changed
2 files changed +32
-3
lines changed Original file line number Diff line number Diff line change @@ -48,14 +48,16 @@ def tc
48
48
end
49
49
50
50
def pause
51
- tc [ :prosopite_scan ] = false
52
-
53
51
if block_given?
54
52
begin
53
+ previous = tc [ :prosopite_scan ]
54
+ tc [ :prosopite_scan ] = false
55
55
yield
56
56
ensure
57
- tc [ :prosopite_scan ] = true
57
+ tc [ :prosopite_scan ] = previous
58
58
end
59
+ else
60
+ tc [ :prosopite_scan ] = false
59
61
end
60
62
end
61
63
Original file line number Diff line number Diff line change @@ -180,6 +180,33 @@ def test_pause_with_a_block
180
180
assert_no_n_plus_ones
181
181
end
182
182
183
+ def test_nested_pause_blocks
184
+ # 10 chairs, 4 legs each
185
+ chairs = create_list ( :chair , 10 )
186
+ chairs . each { |c | create_list ( :leg , 4 , chair : c ) }
187
+
188
+ Prosopite . scan
189
+
190
+ inner_result = nil
191
+ outer_result = Prosopite . pause do
192
+ inner_result = Prosopite . pause do
193
+ :result
194
+ end
195
+
196
+ Chair . last ( 20 ) . each do |c |
197
+ c . legs . last
198
+ end
199
+
200
+ :outer_result
201
+ end
202
+
203
+ assert_equal ( :result , inner_result )
204
+
205
+ assert_equal ( :outer_result , outer_result )
206
+
207
+ assert_no_n_plus_ones
208
+ end
209
+
183
210
def test_pause_with_a_block_raising_error
184
211
Prosopite . scan
185
212
You can’t perform that action at this time.
0 commit comments