@@ -300,6 +300,17 @@ defmodule GenStageTest do
300
300
end
301
301
end
302
302
303
+ # TODO: remove this once we require OTP 26+. This is a workaround for changes
304
+ # in OTP 26 around returning {:stop, _} from start_link and friends. See the
305
+ # discussion in https://github.com/elixir-lang/gen_stage/pull/306.
306
+ defmacrop assert_exit_on_older_otp ( reason ) do
307
+ quote do
308
+ if System . otp_release ( ) <= "25" do
309
+ assert_receive { :EXIT , _ , unquote ( reason ) }
310
+ end
311
+ end
312
+ end
313
+
303
314
test "generates child_spec/1" do
304
315
assert Counter . child_spec ( [ :hello ] ) == % {
305
316
id: Counter ,
@@ -1256,9 +1267,9 @@ defmodule GenStageTest do
1256
1267
assert Counter . start_link ( :ignore ) == :ignore
1257
1268
1258
1269
assert Counter . start_link ( { :stop , :oops } ) == { :error , :oops }
1259
- assert_receive { :EXIT , _ , : oops}
1270
+ assert_exit_on_older_otp ( : oops)
1260
1271
assert Counter . start_link ( :unknown ) == { :error , { :bad_return_value , :unknown } }
1261
- assert_receive { :EXIT , _ , { : bad_return_value, :unknown } }
1272
+ assert_exit_on_older_otp ( { : bad_return_value, :unknown } )
1262
1273
1263
1274
error = { :bad_opts , "expected :buffer_size to be equal to or greater than 0, got: -1" }
1264
1275
assert Counter . start_link ( { :producer , 0 , buffer_size: - 1 } ) == { :error , error }
@@ -1402,9 +1413,9 @@ defmodule GenStageTest do
1402
1413
assert Forwarder . start_link ( :ignore ) == :ignore
1403
1414
1404
1415
assert Forwarder . start_link ( { :stop , :oops } ) == { :error , :oops }
1405
- assert_receive { :EXIT , _ , : oops}
1416
+ assert_exit_on_older_otp ( : oops)
1406
1417
assert Forwarder . start_link ( :unknown ) == { :error , { :bad_return_value , :unknown } }
1407
- assert_receive { :EXIT , _ , { : bad_return_value, :unknown } }
1418
+ assert_exit_on_older_otp ( { : bad_return_value, :unknown } )
1408
1419
1409
1420
assert Forwarder . start_link ( { :consumer , self ( ) , unknown: :value } ) ==
1410
1421
{ :error , { :bad_opts , "unknown options [unknown: :value]" } }
@@ -1543,9 +1554,9 @@ defmodule GenStageTest do
1543
1554
assert Doubler . start_link ( :ignore ) == :ignore
1544
1555
1545
1556
assert Doubler . start_link ( { :stop , :oops } ) == { :error , :oops }
1546
- assert_receive { :EXIT , _ , : oops}
1557
+ assert_exit_on_older_otp ( : oops)
1547
1558
assert Doubler . start_link ( :unknown ) == { :error , { :bad_return_value , :unknown } }
1548
- assert_receive { :EXIT , _ , { : bad_return_value, :unknown } }
1559
+ assert_exit_on_older_otp ( { : bad_return_value, :unknown } )
1549
1560
1550
1561
assert Doubler . start_link ( { :producer_consumer , self ( ) , unknown: :value } ) ==
1551
1562
{ :error , { :bad_opts , "unknown options [unknown: :value]" } }
0 commit comments