Skip to content

Commit 79deb1f

Browse files
authored
Merge pull request #117 from square/entin/multiline-parameters
Improve formatting of multiline parameters
2 parents 2bc73df + d8d8141 commit 79deb1f

File tree

3 files changed

+30
-2
lines changed

3 files changed

+30
-2
lines changed

CoreAardvark.podspec

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
Pod::Spec.new do |s|
22
s.name = 'CoreAardvark'
3-
s.version = '3.0.0'
3+
s.version = '3.0.1'
44
s.license = 'Apache License, Version 2.0'
55
s.summary = 'Aardvark is a library that makes it dead simple to create actionable bug reports. Usable by extensions.'
66
s.homepage = 'https://github.com/square/Aardvark'

Sources/CoreAardvark/Logging/ARKLogMessage.m

+4-1
Original file line numberDiff line numberDiff line change
@@ -133,7 +133,10 @@ - (NSString *)description;
133133

134134
NSMutableString *parametersString = [NSMutableString new];
135135
for (NSString *key in [[self.parameters allKeys] sortedArrayUsingSelector:@selector(compare:)]) {
136-
[parametersString appendFormat:@"\n - %@: %@", key, self.parameters[key]];
136+
NSString *const indentation = [@"" stringByPaddingToLength:(key.length + 5) withString:@" " startingAtIndex:0];
137+
NSString *const indentedValue = [self.parameters[key] stringByReplacingOccurrencesOfString:@"\n"
138+
withString:[NSString stringWithFormat:@"\n%@", indentation]];
139+
[parametersString appendFormat:@"\n - %@: %@", key, indentedValue];
137140
}
138141

139142
return [NSString stringWithFormat:@"[%@] %@%@", dateString, self.text, parametersString];

Sources/CoreAardvarkTests/ARKDefaultLogFormatterTests.m

+25
Original file line numberDiff line numberDiff line change
@@ -290,6 +290,31 @@ - (void)test_formattedLogMessage_parameters;
290290
[self waitForExpectationsWithTimeout:5.0 handler:nil];
291291
}
292292

293+
- (void)test_formattedLogMessage_multilineParameter;
294+
{
295+
ARKLogWithParameters(@{@"Some Key": @"This is a\nparameter value that\nspans multiple lines"}, @"Test message");
296+
297+
XCTestExpectation *expectation = [self expectationWithDescription:NSStringFromSelector(_cmd)];
298+
[self.logStore retrieveAllLogMessagesWithCompletionHandler:^(NSArray *logMessages) {
299+
XCTAssertEqual(logMessages.count, 1);
300+
301+
ARKLogMessage *const firstLogMessage = logMessages.firstObject;
302+
NSString *const formattedSingleLog = [self.logFormatter formattedLogMessage:firstLogMessage];
303+
NSArray<NSString *> *const splitLog = [formattedSingleLog componentsSeparatedByString:@"\n"];
304+
NSString *const formattedParameters = [[splitLog subarrayWithRange:NSMakeRange(1, splitLog.count - 1)] componentsJoinedByString:@"\n"];
305+
306+
NSString *const expectedFormattedParameters = @" - Some Key: This is a\n"
307+
" parameter value that\n"
308+
" spans multiple lines";
309+
310+
XCTAssert([formattedParameters isEqualToString:expectedFormattedParameters]);
311+
312+
[expectation fulfill];
313+
}];
314+
315+
[self waitForExpectationsWithTimeout:5.0 handler:nil];
316+
}
317+
293318
#pragma mark - Performance Tests
294319

295320
- (void)test_formattedLogMessage_performance;

0 commit comments

Comments
 (0)