@@ -68,6 +68,24 @@ defmodule DisablePluginsCommandTest do
6868 }
6969 end
7070
71+ # Helper functions for order-insensitive assertions
72+ defp normalize_result_map ( map ) when is_map ( map ) do
73+ map
74+ |> Map . update ( :stopped , [ ] , & Enum . sort / 1 )
75+ |> Map . update ( :disabled , [ ] , & Enum . sort / 1 )
76+ |> Map . update ( :set , [ ] , & Enum . sort / 1 )
77+ end
78+
79+ defp normalize_stream_result ( [ list , map ] ) when is_list ( list ) and is_map ( map ) do
80+ [ Enum . sort ( list ) , normalize_result_map ( map ) ]
81+ end
82+
83+ defp normalize_stream_result ( other ) , do: other
84+
85+ defp assert_lists_equal ( expected , actual ) do
86+ assert Enum . sort ( expected ) == Enum . sort ( actual )
87+ end
88+
7189 test "validate: specifying both --online and --offline is reported as invalid" , context do
7290 assert match? (
7391 { :validation_failure , { :bad_argument , _ } } ,
@@ -104,16 +122,18 @@ defmodule DisablePluginsCommandTest do
104122 assert { :stream , test_stream } =
105123 @ command . run ( [ "rabbitmq_stomp" ] , Map . merge ( context [ :opts ] , % { node: :nonode } ) )
106124
107- assert [
108- [ :rabbitmq_exchange_federation , :rabbitmq_federation , :rabbitmq_federation_common , :rabbitmq_queue_federation ] ,
109- % { mode: :offline , disabled: [ :rabbitmq_stomp ] , set: [ :rabbitmq_exchange_federation , :rabbitmq_federation , :rabbitmq_federation_common , :rabbitmq_queue_federation ] }
110- ] ==
111- Enum . to_list ( test_stream )
125+ result = Enum . to_list ( test_stream )
126+ expected = [
127+ [ :rabbitmq_exchange_federation , :rabbitmq_federation , :rabbitmq_federation_common , :rabbitmq_queue_federation ] ,
128+ % { mode: :offline , disabled: [ :rabbitmq_stomp ] , set: [ :rabbitmq_exchange_federation , :rabbitmq_federation , :rabbitmq_federation_common , :rabbitmq_queue_federation ] }
129+ ]
130+ assert normalize_stream_result ( expected ) == normalize_stream_result ( result )
112131
113132 assert { :ok , [ [ :rabbitmq_federation ] ] } == :file . consult ( context [ :opts ] [ :enabled_plugins_file ] )
114133
115- assert [ :amqp_client , :rabbitmq_exchange_federation , :rabbitmq_federation , :rabbitmq_federation_common , :rabbitmq_queue_federation , :rabbitmq_stomp ] ==
116- Enum . sort ( :rabbit_misc . rpc_call ( context [ :opts ] [ :node ] , :rabbit_plugins , :active , [ ] ) )
134+ result = :rabbit_misc . rpc_call ( context [ :opts ] [ :node ] , :rabbit_plugins , :active , [ ] )
135+ expected = [ :amqp_client , :rabbitmq_exchange_federation , :rabbitmq_federation , :rabbitmq_federation_common , :rabbitmq_queue_federation , :rabbitmq_stomp ]
136+ assert_lists_equal ( expected , result )
117137 end
118138
119139 test "in offline mode, writes out enabled plugins and reports implicitly enabled plugin list" ,
@@ -124,15 +144,18 @@ defmodule DisablePluginsCommandTest do
124144 Map . merge ( context [ :opts ] , % { offline: true , online: false } )
125145 )
126146
127- assert [
128- [ :rabbitmq_exchange_federation , :rabbitmq_federation , :rabbitmq_federation_common , :rabbitmq_queue_federation ] ,
129- % { mode: :offline , disabled: [ :rabbitmq_stomp ] , set: [ :rabbitmq_exchange_federation , :rabbitmq_federation , :rabbitmq_federation_common , :rabbitmq_queue_federation ] }
130- ] == Enum . to_list ( test_stream )
147+ result = Enum . to_list ( test_stream )
148+ expected = [
149+ [ :rabbitmq_exchange_federation , :rabbitmq_federation , :rabbitmq_federation_common , :rabbitmq_queue_federation ] ,
150+ % { mode: :offline , disabled: [ :rabbitmq_stomp ] , set: [ :rabbitmq_exchange_federation , :rabbitmq_federation , :rabbitmq_federation_common , :rabbitmq_queue_federation ] }
151+ ]
152+ assert normalize_stream_result ( expected ) == normalize_stream_result ( result )
131153
132154 assert { :ok , [ [ :rabbitmq_federation ] ] } == :file . consult ( context [ :opts ] [ :enabled_plugins_file ] )
133155
134- assert [ :amqp_client , :rabbitmq_exchange_federation , :rabbitmq_federation , :rabbitmq_federation_common , :rabbitmq_queue_federation , :rabbitmq_stomp ] ==
135- Enum . sort ( :rabbit_misc . rpc_call ( context [ :opts ] [ :node ] , :rabbit_plugins , :active , [ ] ) )
156+ active_plugins = :rabbit_misc . rpc_call ( context [ :opts ] [ :node ] , :rabbit_plugins , :active , [ ] )
157+ expected_active = [ :amqp_client , :rabbitmq_exchange_federation , :rabbitmq_federation , :rabbitmq_federation_common , :rabbitmq_queue_federation , :rabbitmq_stomp ]
158+ assert_lists_equal ( expected_active , active_plugins )
136159 end
137160
138161 test "in offline mode, removes implicitly enabled plugins when the last explicitly enabled one is removed" ,
@@ -143,10 +166,12 @@ defmodule DisablePluginsCommandTest do
143166 Map . merge ( context [ :opts ] , % { offline: true , online: false } )
144167 )
145168
146- assert [
147- [ :rabbitmq_stomp ] ,
148- % { mode: :offline , disabled: [ :rabbitmq_federation_common , :rabbitmq_queue_federation , :rabbitmq_exchange_federation , :rabbitmq_federation ] , set: [ :rabbitmq_stomp ] }
149- ] == Enum . to_list ( test_stream0 )
169+ result = Enum . to_list ( test_stream0 )
170+ expected = [
171+ [ :rabbitmq_stomp ] ,
172+ % { mode: :offline , disabled: [ :rabbitmq_exchange_federation , :rabbitmq_federation , :rabbitmq_federation_common , :rabbitmq_queue_federation ] , set: [ :rabbitmq_stomp ] }
173+ ]
174+ assert normalize_stream_result ( expected ) == normalize_stream_result ( result )
150175
151176 assert { :ok , [ [ :rabbitmq_stomp ] ] } == :file . consult ( context [ :opts ] [ :enabled_plugins_file ] )
152177
@@ -156,111 +181,100 @@ defmodule DisablePluginsCommandTest do
156181 Map . merge ( context [ :opts ] , % { offline: true , online: false } )
157182 )
158183
159- assert [ [ ] , % { mode: :offline , disabled: [ :rabbitmq_stomp ] , set: [ ] } ] ==
160- Enum . to_list ( test_stream1 )
184+ result = Enum . to_list ( test_stream1 )
185+ expected = [ [ ] , % { mode: :offline , disabled: [ :rabbitmq_stomp ] , set: [ ] } ]
186+ assert normalize_stream_result ( expected ) == normalize_stream_result ( result )
161187
162188 assert { :ok , [ [ ] ] } = :file . consult ( context [ :opts ] [ :enabled_plugins_file ] )
163189 end
164190
165191 test "updates plugin list and stops disabled plugins" , context do
166192 assert { :stream , test_stream0 } = @ command . run ( [ "rabbitmq_stomp" ] , context [ :opts ] )
167193
168- assert [
169- [ :rabbitmq_exchange_federation , :rabbitmq_federation , :rabbitmq_federation_common , :rabbitmq_queue_federation ] ,
170- % {
171- mode: :online ,
172- started: [ ] ,
173- stopped: [ :rabbitmq_stomp ] ,
174- disabled: [ :rabbitmq_stomp ] ,
175- set: [ :rabbitmq_exchange_federation , :rabbitmq_federation , :rabbitmq_federation_common , :rabbitmq_queue_federation ]
176- }
177- ] ==
178- Enum . to_list ( test_stream0 )
194+ result = Enum . to_list ( test_stream0 )
195+ expected = [
196+ [ :rabbitmq_exchange_federation , :rabbitmq_federation , :rabbitmq_federation_common , :rabbitmq_queue_federation ] ,
197+ % {
198+ mode: :online ,
199+ started: [ ] ,
200+ stopped: [ :rabbitmq_stomp ] ,
201+ disabled: [ :rabbitmq_stomp ] ,
202+ set: [ :rabbitmq_exchange_federation , :rabbitmq_federation , :rabbitmq_federation_common , :rabbitmq_queue_federation ]
203+ }
204+ ]
205+ assert normalize_stream_result ( expected ) == normalize_stream_result ( result )
179206
180207 assert { :ok , [ [ :rabbitmq_federation ] ] } == :file . consult ( context [ :opts ] [ :enabled_plugins_file ] )
181208
182- assert [ :amqp_client , :rabbitmq_exchange_federation , :rabbitmq_federation , :rabbitmq_federation_common , :rabbitmq_queue_federation ] ==
183- Enum . sort ( :rabbit_misc . rpc_call ( context [ :opts ] [ :node ] , :rabbit_plugins , :active , [ ] ) )
209+ result = :rabbit_misc . rpc_call ( context [ :opts ] [ :node ] , :rabbit_plugins , :active , [ ] )
210+ expected = [ :amqp_client , :rabbitmq_exchange_federation , :rabbitmq_federation , :rabbitmq_federation_common , :rabbitmq_queue_federation ]
211+ assert_lists_equal ( expected , result )
184212
185213 assert { :stream , test_stream1 } = @ command . run ( [ "rabbitmq_federation" ] , context [ :opts ] )
186214
187- assert [
188- [ ] ,
189- % {
190- mode: :online ,
191- started: [ ] ,
192- stopped: [ :rabbitmq_exchange_federation , :rabbitmq_federation , :rabbitmq_federation_common , :rabbitmq_queue_federation ] ,
193- disabled: [ :rabbitmq_federation_common , :rabbitmq_queue_federation , :rabbitmq_exchange_federation , :rabbitmq_federation ] ,
194- set: [ ]
195- }
196- ] ==
197- Enum . to_list ( test_stream1 )
215+ result = Enum . to_list ( test_stream1 )
216+ expected = [
217+ [ ] ,
218+ % {
219+ mode: :online ,
220+ started: [ ] ,
221+ stopped: [ :rabbitmq_exchange_federation , :rabbitmq_federation , :rabbitmq_federation_common , :rabbitmq_queue_federation ] ,
222+ disabled: [ :rabbitmq_federation_common , :rabbitmq_queue_federation , :rabbitmq_exchange_federation , :rabbitmq_federation ] ,
223+ set: [ ]
224+ }
225+ ]
226+ assert normalize_stream_result ( expected ) == normalize_stream_result ( result )
198227
199228 assert { :ok , [ [ ] ] } == :file . consult ( context [ :opts ] [ :enabled_plugins_file ] )
200229
201- assert Enum . empty? (
202- Enum . sort ( :rabbit_misc . rpc_call ( context [ :opts ] [ :node ] , :rabbit_plugins , :active , [ ] ) )
203- )
230+ result = :rabbit_misc . rpc_call ( context [ :opts ] [ :node ] , :rabbit_plugins , :active , [ ] )
231+ assert Enum . empty? ( result )
204232 end
205233
206234 test "can disable multiple plugins at once" , context do
207235 assert { :stream , test_stream } =
208236 @ command . run ( [ "rabbitmq_stomp" , "rabbitmq_federation" ] , context [ :opts ] )
209237
210- [ [ ] , m0 ] = Enum . to_list ( test_stream )
211-
212- m1 =
213- m0
214- |> Map . update! ( :stopped , & Enum . sort / 1 )
215- |> Map . update! ( :disabled , & Enum . sort / 1 )
216-
217- expected_list = Enum . sort ( [ :rabbitmq_exchange_federation , :rabbitmq_federation , :rabbitmq_federation_common , :rabbitmq_queue_federation , :rabbitmq_stomp ] )
218-
219- assert [
220- [ ] ,
221- % {
222- mode: :online ,
223- started: [ ] ,
224- stopped: expected_list ,
225- disabled: expected_list ,
226- set: [ ]
227- }
228- ] == [ [ ] , m1 ]
238+ result = Enum . to_list ( test_stream )
239+ expected_list = [ :rabbitmq_exchange_federation , :rabbitmq_federation , :rabbitmq_federation_common , :rabbitmq_queue_federation , :rabbitmq_stomp ]
240+ expected = [
241+ [ ] ,
242+ % {
243+ mode: :online ,
244+ started: [ ] ,
245+ stopped: expected_list ,
246+ disabled: expected_list ,
247+ set: [ ]
248+ }
249+ ]
250+ assert normalize_stream_result ( expected ) == normalize_stream_result ( result )
229251
230252 assert { :ok , [ [ ] ] } == :file . consult ( context [ :opts ] [ :enabled_plugins_file ] )
231253
232- assert Enum . empty? (
233- Enum . sort ( :rabbit_misc . rpc_call ( context [ :opts ] [ :node ] , :rabbit_plugins , :active , [ ] ) )
234- )
254+ active_plugins = :rabbit_misc . rpc_call ( context [ :opts ] [ :node ] , :rabbit_plugins , :active , [ ] )
255+ assert Enum . empty? ( active_plugins )
235256 end
236257
237258 test "disabling a dependency disables all plugins that depend on it" , context do
238259 assert { :stream , test_stream } = @ command . run ( [ "amqp_client" ] , context [ :opts ] )
239- [ [ ] , m0 ] = Enum . to_list ( test_stream )
240-
241- m1 =
242- m0
243- |> Map . update! ( :stopped , & Enum . sort / 1 )
244- |> Map . update! ( :disabled , & Enum . sort / 1 )
245-
246- expected_list = Enum . sort ( [ :rabbitmq_exchange_federation , :rabbitmq_federation , :rabbitmq_federation_common , :rabbitmq_queue_federation , :rabbitmq_stomp ] )
247-
248- assert [
249- [ ] ,
250- % {
251- mode: :online ,
252- started: [ ] ,
253- stopped: expected_list ,
254- disabled: expected_list ,
255- set: [ ]
256- }
257- ] == [ [ ] , m1 ]
260+ result = Enum . to_list ( test_stream )
261+ expected_list = [ :rabbitmq_exchange_federation , :rabbitmq_federation , :rabbitmq_federation_common , :rabbitmq_queue_federation , :rabbitmq_stomp ]
262+ expected = [
263+ [ ] ,
264+ % {
265+ mode: :online ,
266+ started: [ ] ,
267+ stopped: expected_list ,
268+ disabled: expected_list ,
269+ set: [ ]
270+ }
271+ ]
272+ assert normalize_stream_result ( expected ) == normalize_stream_result ( result )
258273
259274 assert { :ok , [ [ ] ] } == :file . consult ( context [ :opts ] [ :enabled_plugins_file ] )
260275
261- assert Enum . empty? (
262- Enum . sort ( :rabbit_misc . rpc_call ( context [ :opts ] [ :node ] , :rabbit_plugins , :active , [ ] ) )
263- )
276+ result = :rabbit_misc . rpc_call ( context [ :opts ] [ :node ] , :rabbit_plugins , :active , [ ] )
277+ assert Enum . empty? ( result )
264278 end
265279
266280 test "formats enabled plugins mismatch errors" , context do
0 commit comments