11import datetime
2- import json
3- from typing import Callable
42from unittest .mock import patch
53
64import structlog
5+ from _pytest .capture import CaptureFixture
76from structlog .typing import WrappedLogger
87
98import structlog_gcp
109
11- T_stdout = Callable [[], str ]
10+ from . conftest import T_stdout
1211
1312
1413def test_normal (stdout : T_stdout , logger : WrappedLogger ) -> None :
1514 logger .info ("test" )
1615
17- msg = json . loads (stdout () )
16+ msg = next (stdout )
1817
1918 expected = {
2019 "logging.googleapis.com/sourceLocation" : {
@@ -35,7 +34,7 @@ def test_exception(stdout: T_stdout, logger: WrappedLogger) -> None:
3534 except ZeroDivisionError :
3635 logger .exception ("oh noes" , foo = "bar" )
3736
38- msg = json . loads (stdout () )
37+ msg = next (stdout )
3938
4039 expected = {
4140 "@type" : "type.googleapis.com/google.devtools.clouderrorreporting.v1beta1.ReportedErrorEvent" ,
@@ -70,7 +69,7 @@ def test_service_context_default(stdout: T_stdout, logger: WrappedLogger) -> Non
7069 except ZeroDivisionError :
7170 logger .exception ("oh noes" )
7271
73- msg = json . loads (stdout () )
72+ msg = next (stdout )
7473
7574 assert msg ["serviceContext" ] == {
7675 "service" : "unknown service" ,
@@ -89,7 +88,7 @@ def test_service_context_envvar(stdout: T_stdout, mock_logger_env: None) -> None
8988 except ZeroDivisionError :
9089 logger .exception ("oh noes" )
9190
92- msg = json . loads (stdout () )
91+ msg = next (stdout )
9392
9493 assert msg ["serviceContext" ] == {
9594 "service" : "test-service" ,
@@ -110,7 +109,7 @@ def test_service_context_custom(stdout: T_stdout, mock_logger_env: None) -> None
110109 except ZeroDivisionError :
111110 logger .exception ("oh noes" )
112111
113- msg = json . loads (stdout () )
112+ msg = next (stdout )
114113
115114 assert msg ["serviceContext" ] == {
116115 "service" : "my-service" ,
@@ -128,7 +127,7 @@ def test_extra_labels(stdout: T_stdout, logger: WrappedLogger) -> None:
128127 test5 = {"date" : datetime .date (2023 , 1 , 1 )},
129128 )
130129
131- msg = json . loads (stdout () )
130+ msg = next (stdout )
132131
133132 expected = {
134133 "logging.googleapis.com/sourceLocation" : {
@@ -156,7 +155,7 @@ def test_contextvars_supported(stdout: T_stdout, logger: WrappedLogger) -> None:
156155 )
157156
158157 logger .info ("test" )
159- msg = json . loads (stdout () )
158+ msg = next (stdout )
160159
161160 expected = {
162161 "logging.googleapis.com/sourceLocation" : {
@@ -172,7 +171,9 @@ def test_contextvars_supported(stdout: T_stdout, logger: WrappedLogger) -> None:
172171 assert msg == expected
173172
174173
175- def test_core_processors_only (stdout : T_stdout , mock_logger_env : None ) -> None :
174+ def test_core_processors_only (
175+ capsys : CaptureFixture [str ], mock_logger_env : None
176+ ) -> None :
176177 processors = structlog_gcp .build_gcp_processors ()
177178 processors .append (structlog .processors .KeyValueRenderer ())
178179
@@ -185,7 +186,10 @@ def test_core_processors_only(stdout: T_stdout, mock_logger_env: None) -> None:
185186 )
186187
187188 logger .info ("test" )
188- msg = stdout ().strip ()
189+
190+ output = capsys .readouterr ()
191+ assert "" == output .err
192+ msg = output .out .strip ()
189193
190194 # No JSON formmating, no contextvars
191195 expected = "message='test' time='2023-04-01T08:00:00.000000Z' severity='INFO' logging.googleapis.com/sourceLocation={'file': '/app/test.py', 'line': '42', 'function': 'test:test123'}"
@@ -199,7 +203,7 @@ def test_exception_different_level(stdout: T_stdout, logger: WrappedLogger) -> N
199203 except ZeroDivisionError as exc :
200204 logger .warning ("oh no; anyways" , exception = exc )
201205
202- msg = json . loads (stdout () )
206+ msg = next (stdout )
203207
204208 expected = {
205209 "@type" : "type.googleapis.com/google.devtools.clouderrorreporting.v1beta1.ReportedErrorEvent" ,
@@ -233,7 +237,7 @@ def test_exception_handled(stdout: T_stdout, logger: WrappedLogger) -> None:
233237 except ZeroDivisionError as exc :
234238 logger .info (f"I was expecting that error: { exc } " )
235239
236- msg = json . loads (stdout () )
240+ msg = next (stdout )
237241
238242 expected = {
239243 "logging.googleapis.com/sourceLocation" : {
0 commit comments