|
1 | 1 | const std = @import("std"); |
2 | 2 | const testing = std.testing; |
3 | 3 | const Writer = std.Io.Writer; |
4 | | -const builtin = @import("builtin"); |
5 | 4 |
|
6 | 5 | const formatter = @import("./formatter.zig"); |
7 | 6 | const Formatter = formatter.Formatter; |
@@ -110,149 +109,6 @@ pub fn initRootLogger(alloc: std.mem.Allocator, options: Options) !*Logger { |
110 | 109 | return Logger.init(options.root_logger_name, spec, log_handler, alloc); |
111 | 110 | } |
112 | 111 |
|
113 | | -test "text logger" { |
114 | | - var tl = try TestingLogger.init(.{ |
115 | | - .log_spec = SpecSource{ .from_string = "warn" }, |
116 | | - .color = .always, |
117 | | - }); |
118 | | - defer tl.deinit(); |
119 | | - |
120 | | - var log2 = try tl.logger.initChildLogger("kid1"); |
121 | | - |
122 | | - tl.logger.info("info test aa11", .{ .field1 = "value1", .name = "John", .age = 30 }); |
123 | | - log2.trace("Hello, aa22", .{ .field1 = "value1", .name = "John", .age = 30 }); |
124 | | - log2.debug("Hello, aa33", .{ .field1 = "value1", .name = "John", .age = 30 }); |
125 | | - log2.info("Hello, aa44", .{ .field1 = "value1", .name = "John", .age = 30e2 }); |
126 | | - log2.warn("Hello, aa55", .{ .field1 = "value1", .name = "John", .age = 30.34534 }); |
127 | | - log2.err("Hello, aa66", .{ .field1 = "value1", .name = "John Smith", .age = 30, .active = true, .nothing = null }); |
128 | | - |
129 | | - var log3 = try log2.initChildLogger("kid1-1"); |
130 | | - var log4 = try log2.initChildLogger("kid1-2"); |
131 | | - try testing.expectEqual(2, log2.kids.items.len); |
132 | | - log3.warn("abc77", .{ .f1 = "v1" }); |
133 | | - log4.err("abc88", .{ .f1 = "v1" }); |
134 | | - |
135 | | - log3.deinit(); |
136 | | - try testing.expectEqual(1, log2.kids.items.len); |
137 | | - |
138 | | - try tl.hasNotPattern("aa11"); |
139 | | - try tl.hasNotPattern("aa22"); |
140 | | - try tl.hasNotPattern("aa33"); |
141 | | - try tl.hasNotPattern("aa44"); |
142 | | - try tl.hasPattern("aa55"); |
143 | | - try tl.hasPattern("aa66"); |
144 | | - try tl.hasPattern("abc77"); |
145 | | - try tl.hasPattern("abc88"); |
146 | | -} |
147 | | - |
148 | | -test "json logger" { |
149 | | - var tl = try TestingLogger.init(.{ .formatter = .json }); |
150 | | - tl.logger.info("Hello\tslog!", .{ .field1 = "value1", .field2 = "value1", .rate = 30 }); |
151 | | - defer tl.deinit(); |
152 | | - |
153 | | - try tl.hasPattern("message\":\"Hello\\t"); |
154 | | - try tl.hasPattern("field1\":\"value1\""); |
155 | | -} |
156 | | - |
157 | | -const TestingLogger = struct { |
158 | | - allocating: *Writer.Allocating, |
159 | | - logger: *Logger, |
160 | | - |
161 | | - fn init(options: Options) !TestingLogger { |
162 | | - var al = try testing.allocator.create(Writer.Allocating); |
163 | | - al.* = Writer.Allocating.init(testing.allocator); |
164 | | - |
165 | | - var opt = options; |
166 | | - opt.output = .{ .writer = &al.writer }; |
167 | | - return .{ |
168 | | - .allocating = al, |
169 | | - .logger = try initRootLogger(testing.allocator, opt), |
170 | | - }; |
171 | | - } |
172 | | - |
173 | | - pub fn deinit(self: *TestingLogger) void { |
174 | | - const al = self.allocating.allocator; |
175 | | - self.allocating.deinit(); |
176 | | - self.logger.deinit(); |
177 | | - al.destroy(self.allocating); |
178 | | - } |
179 | | - |
180 | | - fn hasPattern(self: TestingLogger, pattern: []const u8) !void { |
181 | | - try testing.expect(std.mem.indexOf(u8, self.allocating.written(), pattern).? >= 0); |
182 | | - } |
183 | | - |
184 | | - fn hasNotPattern(self: TestingLogger, pattern: []const u8) !void { |
185 | | - try testing.expect(std.mem.indexOf(u8, self.allocating.written(), pattern) == null); |
186 | | - } |
187 | | -}; |
188 | | - |
189 | | -test "root logger level abc" { |
190 | | - var tl = try TestingLogger.init(.{ |
191 | | - .root_logger_name = "abc", |
192 | | - .log_spec = SpecSource{ .from_string = "info,abc=debug,n1=trace" }, |
193 | | - }); |
194 | | - defer tl.deinit(); |
195 | | - tl.logger.debug("abcd", .{}); |
196 | | - |
197 | | - try tl.hasPattern("abcd"); |
198 | | -} |
199 | | - |
200 | | -test "root logger level 2" { |
201 | | - var tl = try TestingLogger.init(.{ |
202 | | - .root_logger_name = "abc", |
203 | | - .log_spec = SpecSource{ .from_string = "abc=debug,n1=trace" }, |
204 | | - }); |
205 | | - defer tl.deinit(); |
206 | | - tl.logger.debug("abcd", .{}); |
207 | | - |
208 | | - try tl.hasPattern("abcd"); |
209 | | -} |
210 | | - |
211 | | -test "logger with dots in name" { |
212 | | - var tl = try TestingLogger.init(.{ |
213 | | - .root_logger_name = "ab.cd.ef", |
214 | | - .log_spec = SpecSource{ .from_string = "error,ab=info" }, |
215 | | - }); |
216 | | - defer tl.deinit(); |
217 | | - tl.logger.info("text1", .{}); |
218 | | - tl.logger.debug("text2", .{}); |
219 | | - |
220 | | - try tl.hasPattern("text1"); |
221 | | - try tl.hasNotPattern("text2"); |
222 | | -} |
223 | | - |
224 | | -test "logger with dots in name: deep spec" { |
225 | | - var tl = try TestingLogger.init(.{ |
226 | | - .root_logger_name = "ab.cd.ef", |
227 | | - .log_spec = SpecSource{ .from_string = "error,ab.cd=debug,ab.cd.ef.gh=warn" }, |
228 | | - }); |
229 | | - defer tl.deinit(); |
230 | | - tl.logger.info("text1", .{}); |
231 | | - tl.logger.debug("text2", .{}); |
232 | | - |
233 | | - try tl.hasPattern("text1"); |
234 | | - try tl.hasPattern("text2"); |
235 | | - |
236 | | - var log2 = try tl.logger.initChildLogger("gh"); |
237 | | - log2.info("text3", .{}); |
238 | | - try tl.hasNotPattern("text3"); |
239 | | -} |
240 | | - |
241 | | -test "logger with dots in name: child logger" { |
242 | | - var tl = try TestingLogger.init(.{ |
243 | | - .log_spec = SpecSource{ .from_string = "error,ab.cd=info,ab.cd.ef=debug" }, |
244 | | - }); |
245 | | - defer tl.deinit(); |
246 | | - |
247 | | - var log2 = try tl.logger.initChildLogger("ab.cd"); |
248 | | - log2.info("text1", .{}); |
249 | | - log2.debug("text2", .{}); |
250 | | - try tl.hasPattern("text1"); |
251 | | - try tl.hasNotPattern("text2"); |
252 | | - |
253 | | - var log3 = try log2.initChildLogger("ef"); |
254 | | - log3.info("text3", .{}); |
255 | | - log3.debug("text4", .{}); |
256 | | - try tl.hasPattern("text3"); |
257 | | - try tl.hasPattern("text4"); |
| 112 | +comptime { |
| 113 | + _ = @import("./tests.zig"); |
258 | 114 | } |
0 commit comments