Skip to content

Commit 4c8192a

Browse files
committed
Merge pull request #4 from SquareSquash/kiran/message-null
Ensure messages are non-null
2 parents 5ee62f9 + 9a4f468 commit 4c8192a

File tree

2 files changed

+51
-3
lines changed

2 files changed

+51
-3
lines changed

src/main/java/com/squareup/squash/SquashEntry.java

Lines changed: 16 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -53,11 +53,11 @@ public class SquashEntry {
5353
final String message;
5454
final String log_message;
5555

56-
public SquashEntry(String client, String apiKey, String message, Throwable error,
56+
public SquashEntry(String client, String apiKey, String logMessage, Throwable error,
5757
String appVersion, int versionCode, String buildSha, String deviceId, String endpoint,
5858
String userId, String environment) {
5959
this.client = client;
60-
this.log_message = message;
60+
this.log_message = logMessage;
6161
this.version = appVersion;
6262
this.revision = buildSha;
6363
this.build = "" + versionCode;
@@ -68,9 +68,22 @@ public SquashEntry(String client, String apiKey, String message, Throwable error
6868
SquashBacktrace.populateNestedExceptions(parent_exceptions, error);
6969
this.ivars = SquashBacktrace.getIvars(error);
7070
this.class_name = error == null ? null : error.getClass().getName();
71-
this.message = error == null ? null : error.getMessage();
71+
this.message = createMessage(error, logMessage);
7272
this.api_key = apiKey;
7373
this.user_id = userId;
7474
this.occurred_at = DATE_FORMAT_THREAD_LOCAL.get().format(new Date());
7575
}
76+
77+
// Squash requires a non-empty message field.
78+
private static String createMessage(Throwable error, String logMessage) {
79+
String message;
80+
if (error != null && error.getMessage() != null) {
81+
message = error.getMessage();
82+
} else if (logMessage != null) {
83+
message = logMessage;
84+
} else {
85+
message = "No message";
86+
}
87+
return message;
88+
}
7689
}

src/test/java/com/squareup/squash/SquashEntryTest.java

Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -72,6 +72,41 @@ private SquashEntry serializeAndDeserialize(SquashEntry logEntry) throws IOExcep
7272
assertThat(deserialized.class_name).isEqualTo(exception.getClass().getName());
7373
}
7474

75+
@Test public void testExceptionWithNoMessage() throws Exception {
76+
final Throwable exception = mock(Throwable.class);
77+
78+
StackTraceElement s0 = new StackTraceElement("com.jake", "CantProgram",
79+
"core-android/src/com/jake/Brain.java", 50);
80+
StackTraceElement s1 = new StackTraceElement("com.jake", "IsDrunk",
81+
"core-android/src/com/jake/Status.java", 510);
82+
StackTraceElement[] stackTrace = { s0, s1 };
83+
84+
when(exception.getMessage()).thenReturn(null);
85+
when(exception.getStackTrace()).thenReturn(stackTrace);
86+
87+
String logMessage = "Jake can't program";
88+
final SquashEntry logEntry = factory.create(logMessage, exception);
89+
SquashEntry deserialized = serializeAndDeserialize(logEntry);
90+
assertThat(deserialized.message).isEqualTo(logMessage);
91+
}
92+
93+
@Test public void testExceptionWithNoMessageOrLogMessage() throws Exception {
94+
final Throwable exception = mock(Throwable.class);
95+
96+
StackTraceElement s0 = new StackTraceElement("com.jake", "CantProgram",
97+
"core-android/src/com/jake/Brain.java", 50);
98+
StackTraceElement s1 = new StackTraceElement("com.jake", "IsDrunk",
99+
"core-android/src/com/jake/Status.java", 510);
100+
StackTraceElement[] stackTrace = { s0, s1 };
101+
102+
when(exception.getMessage()).thenReturn(null);
103+
when(exception.getStackTrace()).thenReturn(stackTrace);
104+
105+
final SquashEntry logEntry = factory.create(null, exception);
106+
SquashEntry deserialized = serializeAndDeserialize(logEntry);
107+
assertThat(deserialized.message).isEqualTo("No message");
108+
}
109+
75110
private void assertBacktracesMatch(StackTraceElement[] myLittleStackTrace,
76111
List<SquashBacktrace.StackElement> stackElements) {
77112
for (int i = 0, stackElementsSize = stackElements.size(); i < stackElementsSize; i++) {

0 commit comments

Comments
 (0)