Skip to content

Commit c489766

Browse files
Merge pull request #65 from backtrace-labs/release
Release 3.7.4
2 parents cf9d827 + d4194f8 commit c489766

39 files changed

+201
-111
lines changed

.github/workflows/test.yml

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,6 @@ on:
44
push:
55
branches: [ master ]
66
pull_request:
7-
branches: [ master ]
87
schedule:
98
- cron: '0 0 * * *'
109

CHANGELOG.md

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,19 @@
11
# Backtrace Android Release Notes
22

3+
## Version 3.7.4
4+
- Feature: migrated to AndroidX
5+
- Improvement: removed READ_EXTERNAL_STORAGE permission from library AndroidManifest.xml
6+
7+
## Version 3.7.3
8+
- Bug: Crashpad attachment syntax changed
9+
10+
## Version 3.7.2
11+
- Bug: Fix issue rolling over Breadcrumb file
12+
- Feature: update gradle to latest
13+
- Feature: integrate crashpad via cmake
14+
- Improvement: Make local.properties optional
15+
- Improvement: Cleanup build scripts for speed
16+
317
## Version 3.7.1 - 14.06.2022
418
- Error type "crash" only on unhandled exceptions from main thread for other threads - error type will be "unhandled exception"
519

backtrace-library/build.gradle

Lines changed: 10 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -11,16 +11,16 @@ androidGitVersion {
1111

1212
android {
1313

14-
compileSdkVersion 30
14+
compileSdkVersion 32
1515

1616
defaultConfig {
1717
minSdkVersion 21
18-
targetSdkVersion 30
18+
targetSdkVersion 32
1919
versionName androidGitVersion.name()
2020
versionCode androidGitVersion.code()
2121
buildConfigField("String", "VERSION_NAME", "\"${versionName}\"")
2222

23-
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
23+
testInstrumentationRunner 'androidx.test.runner.AndroidJUnitRunner'
2424

2525
externalNativeBuild {
2626
cmake {
@@ -53,6 +53,7 @@ android {
5353
sourceSets {
5454
main {
5555
}
56+
androidTest.manifest.srcFile "src/androidTest/java/backtraceio/library/AndroidManifest.xml"
5657
}
5758

5859
// Needed until we migrate to AndroidX
@@ -66,14 +67,14 @@ android {
6667
dependencies {
6768
implementation fileTree(dir: 'libs', include: ['*.jar'])
6869
implementation 'com.google.code.gson:gson:2.9.1'
69-
implementation 'com.android.support:appcompat-v7:28.0.0'
70+
implementation 'androidx.appcompat:appcompat:1.5.0'
7071
implementation 'com.squareup:tape:1.2.3'
71-
testImplementation 'junit:junit:4.12'
72+
testImplementation 'junit:junit:4.13.2'
7273
androidTestImplementation 'net.jodah:concurrentunit:0.4.4'
73-
androidTestImplementation 'com.android.support.test:runner:1.0.2'
74-
androidTestImplementation 'com.android.support.test:rules:1.0.2'
75-
androidTestImplementation 'com.android.support.test:runner:1.0.2'
76-
androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.2'
74+
androidTestImplementation 'androidx.test.ext:junit:1.1.3'
75+
androidTestImplementation 'androidx.test:rules:1.4.0'
76+
androidTestImplementation 'androidx.test.ext:junit:1.1.3'
77+
androidTestImplementation 'androidx.test.espresso:espresso-core:3.4.0'
7778
}
7879

7980
apply from: 'publish.gradle'
Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
2+
package="backtraceio.library">
3+
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
4+
<uses-permission android:name="android.permission.INTERNET"/>
5+
<application/>
6+
</manifest>

backtrace-library/src/androidTest/java/backtraceio/library/BacktraceClientAttachmentsTest.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -6,8 +6,8 @@
66
import static org.junit.Assert.assertNotNull;
77

88
import android.content.Context;
9-
import android.support.test.InstrumentationRegistry;
10-
import android.support.test.runner.AndroidJUnit4;
9+
import androidx.test.platform.app.InstrumentationRegistry;
10+
import androidx.test.ext.junit.runners.AndroidJUnit4;
1111

1212
import net.jodah.concurrentunit.Waiter;
1313

@@ -38,7 +38,7 @@ public class BacktraceClientAttachmentsTest {
3838

3939
@Before
4040
public void setUp() {
41-
context = InstrumentationRegistry.getContext();
41+
context = InstrumentationRegistry.getInstrumentation().getContext();
4242
credentials = new BacktraceCredentials("https://example-endpoint.com/", "");
4343

4444
database = new BacktraceDatabase(context, context.getFilesDir().getAbsolutePath());

backtrace-library/src/androidTest/java/backtraceio/library/BacktraceClientBreadcrumbsTest.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -7,8 +7,8 @@
77
import static org.junit.Assert.assertNull;
88

99
import android.content.Context;
10-
import android.support.test.InstrumentationRegistry;
11-
import android.support.test.runner.AndroidJUnit4;
10+
import androidx.test.platform.app.InstrumentationRegistry;
11+
import androidx.test.ext.junit.runners.AndroidJUnit4;
1212

1313
import junit.framework.TestCase;
1414

@@ -47,7 +47,7 @@ public class BacktraceClientBreadcrumbsTest {
4747

4848
@Before
4949
public void setUp() {
50-
context = InstrumentationRegistry.getContext();
50+
context = InstrumentationRegistry.getInstrumentation().getContext();
5151
credentials = new BacktraceCredentials("https://example-endpoint.com/", "");
5252

5353
BacktraceDatabase database = new BacktraceDatabase(context, context.getFilesDir().getAbsolutePath());

backtrace-library/src/androidTest/java/backtraceio/library/BacktraceClientEventsTest.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -5,8 +5,8 @@
55

66
import android.content.Context;
77
import android.net.Uri;
8-
import android.support.test.InstrumentationRegistry;
9-
import android.support.test.runner.AndroidJUnit4;
8+
import androidx.test.platform.app.InstrumentationRegistry;
9+
import androidx.test.ext.junit.runners.AndroidJUnit4;
1010

1111
import net.jodah.concurrentunit.Waiter;
1212

@@ -39,7 +39,7 @@ public class BacktraceClientEventsTest {
3939

4040
@Before
4141
public void setUp() {
42-
context = InstrumentationRegistry.getContext();
42+
context = InstrumentationRegistry.getInstrumentation().getContext();
4343
credentials = new BacktraceCredentials(Uri.parse("https://submit.backtrace.io/backtrace/123/json"));
4444
}
4545

backtrace-library/src/androidTest/java/backtraceio/library/BacktraceClientMetricsTest.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -9,8 +9,8 @@
99
import static org.junit.Assert.assertTrue;
1010

1111
import android.content.Context;
12-
import android.support.test.InstrumentationRegistry;
13-
import android.support.test.runner.AndroidJUnit4;
12+
import androidx.test.platform.app.InstrumentationRegistry;
13+
import androidx.test.ext.junit.runners.AndroidJUnit4;
1414

1515
import net.jodah.concurrentunit.Waiter;
1616

@@ -51,7 +51,7 @@ public class BacktraceClientMetricsTest {
5151

5252
@Before
5353
public void setUp() {
54-
context = InstrumentationRegistry.getContext();
54+
context = InstrumentationRegistry.getInstrumentation().getContext();
5555
credentials = new BacktraceCredentials("https://universe.sp.backtrace.io:6098", token);
5656
BacktraceDatabase database = new BacktraceDatabase(context, context.getFilesDir().getAbsolutePath());
5757

backtrace-library/src/androidTest/java/backtraceio/library/BacktraceClientProguardTest.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -6,8 +6,8 @@
66
import static org.junit.Assert.assertNull;
77

88
import android.content.Context;
9-
import android.support.test.InstrumentationRegistry;
10-
import android.support.test.runner.AndroidJUnit4;
9+
import androidx.test.platform.app.InstrumentationRegistry;
10+
import androidx.test.ext.junit.runners.AndroidJUnit4;
1111

1212
import net.jodah.concurrentunit.Waiter;
1313

@@ -43,7 +43,7 @@ public class BacktraceClientProguardTest {
4343

4444
@Before
4545
public void setUp() {
46-
context = InstrumentationRegistry.getContext();
46+
context = InstrumentationRegistry.getInstrumentation().getContext();
4747
credentials = new BacktraceCredentials("https://example-endpoint.com/", "");
4848
}
4949

backtrace-library/src/androidTest/java/backtraceio/library/BacktraceClientSendTest.java

Lines changed: 61 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -4,21 +4,26 @@
44
import static org.junit.Assert.assertEquals;
55
import static org.junit.Assert.assertNotNull;
66
import static org.junit.Assert.assertNull;
7+
import static org.junit.Assert.assertTrue;
78

89
import android.content.Context;
9-
import android.support.test.InstrumentationRegistry;
10-
import android.support.test.runner.AndroidJUnit4;
10+
import androidx.test.platform.app.InstrumentationRegistry;
11+
import androidx.test.ext.junit.runners.AndroidJUnit4;
1112

1213
import net.jodah.concurrentunit.Waiter;
1314

15+
import org.json.JSONException;
16+
import org.json.JSONObject;
1417
import org.junit.Before;
1518
import org.junit.Test;
1619
import org.junit.runner.RunWith;
1720

21+
import java.io.IOException;
1822
import java.util.HashMap;
1923
import java.util.Map;
2024
import java.util.concurrent.TimeUnit;
2125

26+
import backtraceio.library.common.BacktraceSerializeHelper;
2227
import backtraceio.library.events.OnServerResponseEventListener;
2328
import backtraceio.library.events.RequestHandler;
2429
import backtraceio.library.models.BacktraceData;
@@ -37,7 +42,7 @@ public class BacktraceClientSendTest {
3742

3843
@Before
3944
public void setUp() {
40-
context = InstrumentationRegistry.getContext();
45+
context = InstrumentationRegistry.getInstrumentation().getContext();
4146
credentials = new BacktraceCredentials("https://example-endpoint.com/", "");
4247
}
4348

@@ -74,6 +79,59 @@ public void onEvent(BacktraceResult backtraceResult) {
7479
}
7580
}
7681

82+
@Test
83+
public void sendExceptionWithManyCause() {
84+
// GIVEN
85+
final String lastExceptionExpectedMessage = "New Exception";
86+
final Exception causedException = new Exception(new IOException(new IllegalArgumentException(lastExceptionExpectedMessage)));
87+
final StackTraceElement[] stackTraceElements = new StackTraceElement[1];
88+
stackTraceElements[0] = new StackTraceElement("BacktraceClientSendTest.class", "sendCausedException", "BacktraceClientSendTest.java", 1);
89+
causedException.setStackTrace(stackTraceElements);
90+
91+
final BacktraceClient backtraceClient = new BacktraceClient(context, credentials);
92+
final Waiter waiter = new Waiter();
93+
final String mainExceptionExpectedMessage = "java.io.IOException: java.lang.IllegalArgumentException: New Exception";
94+
RequestHandler rh = data -> {
95+
String jsonString = BacktraceSerializeHelper.toJson(data);
96+
97+
try {
98+
// THEN
99+
final JSONObject jsonObject = new JSONObject(jsonString);
100+
final JSONObject exceptionProperties = jsonObject.getJSONObject("annotations").getJSONObject("Exception properties");
101+
final String mainExceptionMessage = jsonObject.getJSONObject("annotations").getJSONObject("Exception").getString("message");
102+
103+
assertEquals(mainExceptionExpectedMessage, mainExceptionMessage);
104+
assertTrue(exceptionProperties.getJSONArray("stack-trace").length() > 0);
105+
assertEquals(mainExceptionExpectedMessage, exceptionProperties.get("detail-message"));
106+
107+
final JSONObject firstCause = exceptionProperties.getJSONObject("cause");
108+
assertEquals("java.lang.IllegalArgumentException: New Exception", firstCause.getString("detail-message"));
109+
110+
final JSONObject secondCause = firstCause.getJSONObject("cause");
111+
assertEquals(lastExceptionExpectedMessage, secondCause.getString("detail-message"));
112+
} catch (JSONException e) {
113+
e.printStackTrace();
114+
fail(e.getMessage());
115+
}
116+
117+
return new BacktraceResult(data.report, data.report.message,
118+
BacktraceResultStatus.Ok);
119+
};
120+
backtraceClient.setOnRequestHandler(rh);
121+
122+
// WHEN
123+
backtraceClient.send(new BacktraceReport(causedException), backtraceResult -> {
124+
waiter.resume();
125+
});
126+
127+
// WAIT FOR THE RESULT FROM ANOTHER THREAD
128+
try {
129+
waiter.await(5, TimeUnit.SECONDS);
130+
} catch (Exception ex) {
131+
fail(ex.getMessage());
132+
}
133+
}
134+
77135
@Test
78136
public void sendBacktraceReportWithString() {
79137
// GIVEN

0 commit comments

Comments
 (0)