1
1
require "abstract_unit"
2
2
3
3
class ReloaderTest < ActiveSupport ::TestCase
4
- Reloader = ActionDispatch ::Reloader
5
-
6
4
teardown do
7
5
ActiveSupport ::Reloader . reset_callbacks :prepare
8
6
ActiveSupport ::Reloader . reset_callbacks :complete
9
7
end
10
8
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
-
30
9
class MyBody < Array
31
10
def initialize ( &block )
32
11
@on_close = block
@@ -45,6 +24,23 @@ def close
45
24
end
46
25
end
47
26
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
+
48
44
def test_returned_body_object_always_responds_to_close
49
45
body = call_and_return_body
50
46
assert_respond_to body , :close
@@ -62,15 +58,12 @@ def test_returned_body_object_always_responds_to_close_even_if_called_twice
62
58
63
59
def test_condition_specifies_when_to_reload
64
60
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
69
61
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 }
72
65
73
- app = Reloader . new ( lambda { |env | [ 200 , { } , [ ] ] } , x )
66
+ app = middleware ( lambda { |env | [ 200 , { } , [ ] ] } , reloader )
74
67
5 . times do
75
68
resp = app . call ( { } )
76
69
resp [ 2 ] . close
@@ -115,24 +108,20 @@ def test_returned_body_object_responds_to_all_methods_supported_by_underlying_ob
115
108
assert_respond_to body , :bar
116
109
end
117
110
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 }
123
114
124
115
body = call_and_return_body
125
- assert !cleaned
116
+ assert !completed
126
117
127
118
body . close
128
- assert cleaned
119
+ assert completed
129
120
end
130
121
131
122
def test_prepare_callbacks_arent_called_when_body_is_closed
132
123
prepared = false
133
- assert_deprecated do
134
- Reloader . to_prepare { prepared = true }
135
- end
124
+ reloader . to_prepare { prepared = true }
136
125
137
126
body = call_and_return_body
138
127
prepared = false
@@ -141,45 +130,9 @@ def test_prepare_callbacks_arent_called_when_body_is_closed
141
130
assert !prepared
142
131
end
143
132
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 }
183
136
184
137
begin
185
138
call_and_return_body do
@@ -188,16 +141,26 @@ def test_cleanup_callbacks_are_called_on_exceptions
188
141
rescue
189
142
end
190
143
191
- assert cleaned
144
+ assert completed
192
145
end
193
146
194
147
private
195
148
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
198
164
199
- @response ||= "response"
200
- @reloader ||= Reloader . new ( block || proc { [ 200 , { } , @response ] } , x )
201
- @reloader . call ( "rack.input" => StringIO . new ( "" ) ) [ 2 ]
202
165
end
203
166
end
0 commit comments