11require "abstract_unit"
22
33class ReloaderTest < ActiveSupport ::TestCase
4- Reloader = ActionDispatch ::Reloader
5-
64 teardown do
75 ActiveSupport ::Reloader . reset_callbacks :prepare
86 ActiveSupport ::Reloader . reset_callbacks :complete
97 end
108
11- def test_prepare_callbacks
12- a = b = c = nil
13- assert_deprecated do
14- Reloader . to_prepare { |*args | a = b = c = 1 }
15- Reloader . to_prepare { |*args | b = c = 2 }
16- Reloader . to_prepare { |*args | c = 3 }
17- end
18-
19- # Ensure to_prepare callbacks are not run when defined
20- assert_nil a || b || c
21-
22- # Run callbacks
23- call_and_return_body
24-
25- assert_equal 1 , a
26- assert_equal 2 , b
27- assert_equal 3 , c
28- end
29-
309 class MyBody < Array
3110 def initialize ( &block )
3211 @on_close = block
@@ -45,6 +24,23 @@ def close
4524 end
4625 end
4726
27+ def test_prepare_callbacks
28+ a = b = c = nil
29+ reloader . to_prepare { |*args | a = b = c = 1 }
30+ reloader . to_prepare { |*args | b = c = 2 }
31+ reloader . to_prepare { |*args | c = 3 }
32+
33+ # Ensure to_prepare callbacks are not run when defined
34+ assert_nil a || b || c
35+
36+ # Run callbacks
37+ call_and_return_body
38+
39+ assert_equal 1 , a
40+ assert_equal 2 , b
41+ assert_equal 3 , c
42+ end
43+
4844 def test_returned_body_object_always_responds_to_close
4945 body = call_and_return_body
5046 assert_respond_to body , :close
@@ -62,15 +58,12 @@ def test_returned_body_object_always_responds_to_close_even_if_called_twice
6258
6359 def test_condition_specifies_when_to_reload
6460 i , j = 0 , 0 , 0 , 0
65- assert_deprecated do
66- Reloader . to_prepare { |*args | i += 1 }
67- Reloader . to_cleanup { |*args | j += 1 }
68- end
6961
70- x = Class . new ( ActiveSupport ::Reloader )
71- x . check = lambda { i < 3 }
62+ reloader = reloader ( lambda { i < 3 } )
63+ reloader . to_prepare { |*args | i += 1 }
64+ reloader . to_complete { |*args | j += 1 }
7265
73- app = Reloader . new ( lambda { |env | [ 200 , { } , [ ] ] } , x )
66+ app = middleware ( lambda { |env | [ 200 , { } , [ ] ] } , reloader )
7467 5 . times do
7568 resp = app . call ( { } )
7669 resp [ 2 ] . close
@@ -115,24 +108,20 @@ def test_returned_body_object_responds_to_all_methods_supported_by_underlying_ob
115108 assert_respond_to body , :bar
116109 end
117110
118- def test_cleanup_callbacks_are_called_when_body_is_closed
119- cleaned = false
120- assert_deprecated do
121- Reloader . to_cleanup { cleaned = true }
122- end
111+ def test_complete_callbacks_are_called_when_body_is_closed
112+ completed = false
113+ reloader . to_complete { completed = true }
123114
124115 body = call_and_return_body
125- assert !cleaned
116+ assert !completed
126117
127118 body . close
128- assert cleaned
119+ assert completed
129120 end
130121
131122 def test_prepare_callbacks_arent_called_when_body_is_closed
132123 prepared = false
133- assert_deprecated do
134- Reloader . to_prepare { prepared = true }
135- end
124+ reloader . to_prepare { prepared = true }
136125
137126 body = call_and_return_body
138127 prepared = false
@@ -141,45 +130,9 @@ def test_prepare_callbacks_arent_called_when_body_is_closed
141130 assert !prepared
142131 end
143132
144- def test_manual_reloading
145- prepared = cleaned = false
146- assert_deprecated do
147- Reloader . to_prepare { prepared = true }
148- Reloader . to_cleanup { cleaned = true }
149- end
150-
151- assert_deprecated do
152- Reloader . prepare!
153- end
154- assert prepared
155- assert !cleaned
156-
157- prepared = cleaned = false
158- assert_deprecated do
159- Reloader . cleanup!
160- end
161- assert prepared
162- assert cleaned
163- end
164-
165- def test_prepend_prepare_callback
166- i = 10
167- assert_deprecated do
168- Reloader . to_prepare { i += 1 }
169- Reloader . to_prepare ( prepend : true ) { i = 0 }
170- end
171-
172- assert_deprecated do
173- Reloader . prepare!
174- end
175- assert_equal 1 , i
176- end
177-
178- def test_cleanup_callbacks_are_called_on_exceptions
179- cleaned = false
180- assert_deprecated do
181- Reloader . to_cleanup { cleaned = true }
182- end
133+ def test_complete_callbacks_are_called_on_exceptions
134+ completed = false
135+ reloader . to_complete { completed = true }
183136
184137 begin
185138 call_and_return_body do
@@ -188,16 +141,26 @@ def test_cleanup_callbacks_are_called_on_exceptions
188141 rescue
189142 end
190143
191- assert cleaned
144+ assert completed
192145 end
193146
194147 private
195148 def call_and_return_body ( &block )
196- x = Class . new ( ActiveSupport ::Reloader )
197- x . check = lambda { true }
149+ app = middleware ( block || proc { [ 200 , { } , "response" ] } )
150+ _ , _ , body = app . call ( "rack.input" => StringIO . new ( "" ) )
151+ body
152+ end
153+
154+ def middleware ( inner_app , reloader = reloader ( ) )
155+ ActionDispatch ::Reloader . new ( inner_app , reloader )
156+ end
157+
158+ def reloader ( check = lambda { true } )
159+ @reloader ||= begin
160+ reloader = Class . new ( ActiveSupport ::Reloader )
161+ reloader . check = check
162+ reloader
163+ end
198164
199- @response ||= "response"
200- @reloader ||= Reloader . new ( block || proc { [ 200 , { } , @response ] } , x )
201- @reloader . call ( "rack.input" => StringIO . new ( "" ) ) [ 2 ]
202165 end
203166end
0 commit comments