@@ -140,23 +140,27 @@ defmodule Logger.TranslatorTest do
140140 end
141141
142142 setup_all do
143- sasl_reports? = Application . get_env ( :logger , :handle_sasl_reports , false )
144- Application . put_env ( :logger , :handle_sasl_reports , true )
143+ config = Application . get_all_env ( :logger )
145144
146- # Shutdown the application
147- Logger.App . stop ( )
145+ config
146+ |> Keyword . put ( :handle_sasl_reports , true )
147+ |> put_logger_config ( )
148148
149- # And start it without warnings
150- Application . put_env ( :logger , :level , :error )
151- Application . start ( :logger )
152- Application . delete_env ( :logger , :level )
153- Logger . configure ( level: :debug )
149+ on_exit ( fn -> restore_logger_config ( config ) end )
150+ end
154151
155- on_exit ( fn ->
156- Application . put_env ( :logger , :handle_sasl_reports , sasl_reports? )
157- Logger.App . stop ( )
158- Application . start ( :logger )
159- end )
152+ setup context do
153+ test_overrides = Map . get ( context , :logger_config , [ ] )
154+ existing_config = Application . get_all_env ( :logger )
155+
156+ case Keyword . merge ( existing_config , test_overrides ) do
157+ ^ existing_config ->
158+ :ok
159+
160+ new_config ->
161+ put_logger_config ( new_config )
162+ on_exit ( fn -> restore_logger_config ( existing_config ) end )
163+ end
160164 end
161165
162166 setup do
@@ -1259,6 +1263,13 @@ defmodule Logger.TranslatorTest do
12591263 :code . delete ( WeirdFunctionNamesGenServer )
12601264 end
12611265
1266+ @ tag logger_config: [ handle_otp_reports: false ]
1267+ test "drops events if otp report handling is switched off" do
1268+ { :ok , pid } = GenServer . start ( MyGenServer , :ok )
1269+ catch_exit ( GenServer . call ( pid , :error ) )
1270+ refute_receive { :event , _ , _ } , 200
1271+ end
1272+
12621273 def task ( parent , fun \\ fn -> raise "oops" end ) do
12631274 mon = Process . monitor ( parent )
12641275 Process . unlink ( parent )
@@ -1312,4 +1323,25 @@ defmodule Logger.TranslatorTest do
13121323 defp worker ( name , args , opts \\ [ ] ) do
13131324 Enum . into ( opts , % { id: name , start: { name , opts [ :function ] || :start_link , args } } )
13141325 end
1326+
1327+ defp put_logger_config ( new_config ) do
1328+ Application . put_all_env ( logger: new_config )
1329+
1330+ Logger.App . stop ( )
1331+
1332+ # Shutdown the application
1333+ Logger.App . stop ( )
1334+
1335+ # And start it without warnings
1336+ Application . put_env ( :logger , :level , :error )
1337+ Application . start ( :logger )
1338+ Application . delete_env ( :logger , :level )
1339+ Logger . configure ( level: :debug )
1340+ end
1341+
1342+ defp restore_logger_config ( config ) do
1343+ Application . put_all_env ( logger: config )
1344+ Logger.App . stop ( )
1345+ Application . start ( :logger )
1346+ end
13151347end
0 commit comments