|
24 | 24 | code_change/3]). |
25 | 25 |
|
26 | 26 | -record(state, {level, buffer, ignored}). |
| 27 | +-record(test, {attrs, format, args}). |
27 | 28 | -compile([{parse_transform, lager_transform}]). |
28 | 29 |
|
29 | 30 | -ifdef(TEST). |
@@ -180,6 +181,125 @@ lager_test_() -> |
180 | 181 | ok |
181 | 182 | end |
182 | 183 | }, |
| 184 | + {"variables inplace of literals in logging statements work", |
| 185 | + fun() -> |
| 186 | + ?assertEqual(0, count()), |
| 187 | + Attr = [{a, alpha}, {b, beta}], |
| 188 | + Fmt = "format ~p", |
| 189 | + Args = [world], |
| 190 | + lager:info(Attr, "hello"), |
| 191 | + lager:info(Attr, "hello ~p", [world]), |
| 192 | + lager:info(Fmt, [world]), |
| 193 | + lager:info("hello ~p", Args), |
| 194 | + lager:info(Attr, "hello ~p", Args), |
| 195 | + lager:info([{d, delta}, {g, gamma}], Fmt, Args), |
| 196 | + ?assertEqual(6, count()), |
| 197 | + {_Level, _Time, Message, Metadata} = pop(), |
| 198 | + ?assertMatch([{a, alpha}, {b, beta}|_], Metadata), |
| 199 | + ?assertEqual("hello", lists:flatten(Message)), |
| 200 | + {_Level, _Time2, Message2, _Metadata2} = pop(), |
| 201 | + ?assertEqual("hello world", lists:flatten(Message2)), |
| 202 | + {_Level, _Time3, Message3, _Metadata3} = pop(), |
| 203 | + ?assertEqual("format world", lists:flatten(Message3)), |
| 204 | + {_Level, _Time4, Message4, _Metadata4} = pop(), |
| 205 | + ?assertEqual("hello world", lists:flatten(Message4)), |
| 206 | + {_Level, _Time5, Message5, _Metadata5} = pop(), |
| 207 | + ?assertEqual("hello world", lists:flatten(Message5)), |
| 208 | + {_Level, _Time6, Message6, Metadata6} = pop(), |
| 209 | + ?assertMatch([{d, delta}, {g, gamma}|_], Metadata6), |
| 210 | + ?assertEqual("format world", lists:flatten(Message6)), |
| 211 | + ok |
| 212 | + end |
| 213 | + }, |
| 214 | + {"list comprehension inplace of literals in logging statements work", |
| 215 | + fun() -> |
| 216 | + ?assertEqual(0, count()), |
| 217 | + Attr = [{a, alpha}, {b, beta}], |
| 218 | + Fmt = "format ~p", |
| 219 | + Args = [world], |
| 220 | + lager:info([{K, atom_to_list(V)} || {K, V} <- Attr], "hello"), |
| 221 | + lager:info([{K, atom_to_list(V)} || {K, V} <- Attr], "hello ~p", [{atom, X} || X <- Args]), |
| 222 | + lager:info([X || X <- Fmt], [world]), |
| 223 | + lager:info("hello ~p", [{atom, X} || X <- Args]), |
| 224 | + lager:info([{K, atom_to_list(V)} || {K, V} <- Attr], "hello ~p", [{atom, X} || X <- Args]), |
| 225 | + lager:info([{d, delta}, {g, gamma}], Fmt, [{atom, X} || X <- Args]), |
| 226 | + ?assertEqual(6, count()), |
| 227 | + {_Level, _Time, Message, Metadata} = pop(), |
| 228 | + ?assertMatch([{a, "alpha"}, {b, "beta"}|_], Metadata), |
| 229 | + ?assertEqual("hello", lists:flatten(Message)), |
| 230 | + {_Level, _Time2, Message2, _Metadata2} = pop(), |
| 231 | + ?assertEqual("hello {atom,world}", lists:flatten(Message2)), |
| 232 | + {_Level, _Time3, Message3, _Metadata3} = pop(), |
| 233 | + ?assertEqual("format world", lists:flatten(Message3)), |
| 234 | + {_Level, _Time4, Message4, _Metadata4} = pop(), |
| 235 | + ?assertEqual("hello {atom,world}", lists:flatten(Message4)), |
| 236 | + {_Level, _Time5, Message5, _Metadata5} = pop(), |
| 237 | + ?assertEqual("hello {atom,world}", lists:flatten(Message5)), |
| 238 | + {_Level, _Time6, Message6, Metadata6} = pop(), |
| 239 | + ?assertMatch([{d, delta}, {g, gamma}|_], Metadata6), |
| 240 | + ?assertEqual("format {atom,world}", lists:flatten(Message6)), |
| 241 | + ok |
| 242 | + end |
| 243 | + }, |
| 244 | + {"function calls inplace of literals in logging statements work", |
| 245 | + fun() -> |
| 246 | + ?assertEqual(0, count()), |
| 247 | + put(attrs, [{a, alpha}, {b, beta}]), |
| 248 | + put(format, "format ~p"), |
| 249 | + put(args, [world]), |
| 250 | + lager:info(get(attrs), "hello"), |
| 251 | + lager:info(get(attrs), "hello ~p", get(args)), |
| 252 | + lager:info(get(format), [world]), |
| 253 | + lager:info("hello ~p", erlang:get(args)), |
| 254 | + lager:info(fun() -> get(attrs) end(), "hello ~p", get(args)), |
| 255 | + lager:info([{d, delta}, {g, gamma}], get(format), get(args)), |
| 256 | + ?assertEqual(6, count()), |
| 257 | + {_Level, _Time, Message, Metadata} = pop(), |
| 258 | + ?assertMatch([{a, alpha}, {b, beta}|_], Metadata), |
| 259 | + ?assertEqual("hello", lists:flatten(Message)), |
| 260 | + {_Level, _Time2, Message2, _Metadata2} = pop(), |
| 261 | + ?assertEqual("hello world", lists:flatten(Message2)), |
| 262 | + {_Level, _Time3, Message3, _Metadata3} = pop(), |
| 263 | + ?assertEqual("format world", lists:flatten(Message3)), |
| 264 | + {_Level, _Time4, Message4, _Metadata4} = pop(), |
| 265 | + ?assertEqual("hello world", lists:flatten(Message4)), |
| 266 | + {_Level, _Time5, Message5, _Metadata5} = pop(), |
| 267 | + ?assertEqual("hello world", lists:flatten(Message5)), |
| 268 | + {_Level, _Time6, Message6, Metadata6} = pop(), |
| 269 | + ?assertMatch([{d, delta}, {g, gamma}|_], Metadata6), |
| 270 | + ?assertEqual("format world", lists:flatten(Message6)), |
| 271 | + ok |
| 272 | + end |
| 273 | + }, |
| 274 | + {"record fields inplace of literals in logging statements work", |
| 275 | + fun() -> |
| 276 | + ?assertEqual(0, count()), |
| 277 | + Test = #test{attrs=[{a, alpha}, {b, beta}], format="format ~p", args=[world]}, |
| 278 | + lager:info(Test#test.attrs, "hello"), |
| 279 | + lager:info(Test#test.attrs, "hello ~p", Test#test.args), |
| 280 | + lager:info(Test#test.format, [world]), |
| 281 | + lager:info("hello ~p", Test#test.args), |
| 282 | + lager:info(Test#test.attrs, "hello ~p", Test#test.args), |
| 283 | + lager:info([{d, delta}, {g, gamma}], Test#test.format, Test#test.args), |
| 284 | + ?assertEqual(6, count()), |
| 285 | + {_Level, _Time, Message, Metadata} = pop(), |
| 286 | + ?assertMatch([{a, alpha}, {b, beta}|_], Metadata), |
| 287 | + ?assertEqual("hello", lists:flatten(Message)), |
| 288 | + {_Level, _Time2, Message2, _Metadata2} = pop(), |
| 289 | + ?assertEqual("hello world", lists:flatten(Message2)), |
| 290 | + {_Level, _Time3, Message3, _Metadata3} = pop(), |
| 291 | + ?assertEqual("format world", lists:flatten(Message3)), |
| 292 | + {_Level, _Time4, Message4, _Metadata4} = pop(), |
| 293 | + ?assertEqual("hello world", lists:flatten(Message4)), |
| 294 | + {_Level, _Time5, Message5, _Metadata5} = pop(), |
| 295 | + ?assertEqual("hello world", lists:flatten(Message5)), |
| 296 | + {_Level, _Time6, Message6, Metadata6} = pop(), |
| 297 | + ?assertMatch([{d, delta}, {g, gamma}|_], Metadata6), |
| 298 | + ?assertEqual("format world", lists:flatten(Message6)), |
| 299 | + ok |
| 300 | + end |
| 301 | + }, |
| 302 | + |
183 | 303 | {"log messages below the threshold are ignored", |
184 | 304 | fun() -> |
185 | 305 | ?assertEqual(0, count()), |
|
0 commit comments