Skip to content
This repository was archived by the owner on Aug 30, 2023. It is now read-only.

Commit f691d68

Browse files
committed
Merge branch 'master' of github.com:getsentry/sentry-android into feat/ndk-submodule
2 parents 5f43c79 + 4e57e30 commit f691d68

File tree

4 files changed

+60
-21
lines changed

4 files changed

+60
-21
lines changed

sentry-android-core/src/main/java/io/sentry/android/core/AndroidOptionsInitializer.java

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,10 @@
55
import io.sentry.core.SentryLevel;
66
import io.sentry.core.SentryOptions;
77
import java.io.File;
8+
<<<<<<< HEAD
89
import java.lang.reflect.Method;
10+
=======
11+
>>>>>>> 4e57e30dc213ea5cc7e328d05f565f5aeb9b5c8b
912

1013
class AndroidOptionsInitializer {
1114
static void init(SentryOptions options, Context context) {
@@ -20,6 +23,7 @@ static void init(SentryOptions options, Context context, ILogger logger) {
2023
options.setSentryClientName("sentry.java.android/0.0.1");
2124

2225
ManifestMetadataReader.applyMetadata(context, options);
26+
createsEnvelopeDirPath(options, context);
2327

2428
if (options.isEnableNdk()) {
2529
try {
@@ -46,4 +50,13 @@ static void init(SentryOptions options, Context context, ILogger logger) {
4650
options.addEventProcessor(new DefaultAndroidEventProcessor(context, options));
4751
options.setSerializer(new AndroidSerializer(options.getLogger()));
4852
}
53+
54+
private static void createsEnvelopeDirPath(SentryOptions options, Context context) {
55+
File cacheDir = context.getCacheDir().getAbsoluteFile();
56+
File envelopesDir = new File(cacheDir, "sentry-envelopes");
57+
if (!envelopesDir.exists()) {
58+
envelopesDir.mkdirs();
59+
}
60+
options.setCacheDirPath(envelopesDir.getAbsolutePath());
61+
}
4962
}

sentry-android-core/src/test/java/io/sentry/android/core/AndroidOptionsInitializerTest.kt

Lines changed: 24 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -5,12 +5,15 @@ import androidx.test.core.app.ApplicationProvider
55
import androidx.test.ext.junit.runners.AndroidJUnit4
66
import com.nhaarman.mockitokotlin2.doReturn
77
import com.nhaarman.mockitokotlin2.mock
8+
import com.nhaarman.mockitokotlin2.whenever
89
import io.sentry.core.ILogger
910
import io.sentry.core.SentryOptions
11+
import java.io.File
1012
import kotlin.test.BeforeTest
1113
import kotlin.test.Test
1214
import kotlin.test.assertEquals
1315
import kotlin.test.assertNotNull
16+
import kotlin.test.assertTrue
1417
import org.junit.runner.RunWith
1518

1619
@RunWith(AndroidJUnit4::class)
@@ -25,9 +28,7 @@ class AndroidOptionsInitializerTest {
2528
@Test
2629
fun `logger set to AndroidLogger`() {
2730
val sentryOptions = SentryOptions()
28-
val mockContext = mock<Context> {
29-
on { applicationContext } doReturn context
30-
}
31+
val mockContext = createMockContext()
3132

3233
AndroidOptionsInitializer.init(sentryOptions, mockContext)
3334
val logger = sentryOptions.javaClass.declaredFields.first { it.name == "logger" }
@@ -41,13 +42,30 @@ class AndroidOptionsInitializerTest {
4142
@Test
4243
fun `AndroidEventProcessor added to processors list`() {
4344
val sentryOptions = SentryOptions()
44-
val mockContext = mock<Context> {
45-
on { applicationContext } doReturn context
46-
}
45+
val mockContext = createMockContext()
4746
val mockLogger = mock<ILogger>()
4847

4948
AndroidOptionsInitializer.init(sentryOptions, mockContext, mockLogger)
5049
val actual = sentryOptions.eventProcessors.firstOrNull { it::class == DefaultAndroidEventProcessor::class }
5150
assertNotNull(actual)
5251
}
52+
53+
@Test
54+
fun `envelopesDir should be created at initialization`() {
55+
val sentryOptions = SentryOptions()
56+
val mockContext = createMockContext()
57+
val mockLogger = mock<ILogger>()
58+
59+
AndroidOptionsInitializer.init(sentryOptions, mockContext, mockLogger)
60+
61+
assertTrue(sentryOptions.cacheDirPath.endsWith("${File.separator}cache${File.separator}sentry-envelopes"))
62+
}
63+
64+
private fun createMockContext(): Context {
65+
val mockContext = mock<Context> {
66+
on { applicationContext } doReturn context
67+
}
68+
whenever(mockContext.cacheDir).thenReturn(File("${File.separator}cache"))
69+
return mockContext
70+
}
5371
}

sentry-android-core/src/test/java/io/sentry/android/core/SentryInitProviderTest.kt

Lines changed: 14 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@ import com.nhaarman.mockitokotlin2.mock
1212
import com.nhaarman.mockitokotlin2.whenever
1313
import io.sentry.core.InvalidDsnException
1414
import io.sentry.core.Sentry
15+
import java.io.File
1516
import kotlin.test.BeforeTest
1617
import kotlin.test.Test
1718
import kotlin.test.assertFailsWith
@@ -46,9 +47,7 @@ class SentryInitProviderTest {
4647
assertFalse(Sentry.isEnabled())
4748
providerInfo.authority = AUTHORITY
4849

49-
val mockContext = mock<Context> {
50-
on { applicationContext } doReturn context
51-
}
50+
val mockContext = createMockContext()
5251
val metaData = Bundle()
5352
mockMetaData(mockContext, metaData)
5453

@@ -66,9 +65,7 @@ class SentryInitProviderTest {
6665
assertFalse(Sentry.isEnabled())
6766
providerInfo.authority = AUTHORITY
6867

69-
val mockContext = mock<Context> {
70-
on { applicationContext } doReturn context
71-
}
68+
val mockContext = createMockContext()
7269
val metaData = Bundle()
7370
mockMetaData(mockContext, metaData)
7471

@@ -86,9 +83,7 @@ class SentryInitProviderTest {
8683
assertFalse(Sentry.isEnabled())
8784
providerInfo.authority = AUTHORITY
8885

89-
val mockContext = mock<Context> {
90-
on { applicationContext } doReturn context
91-
}
86+
val mockContext = createMockContext()
9287
val metaData = Bundle()
9388
mockMetaData(mockContext, metaData)
9489

@@ -106,9 +101,7 @@ class SentryInitProviderTest {
106101
assertFalse(Sentry.isEnabled())
107102
providerInfo.authority = AUTHORITY
108103

109-
val mockContext = mock<Context> {
110-
on { applicationContext } doReturn context
111-
}
104+
val mockContext = createMockContext()
112105
val metaData = Bundle()
113106
mockMetaData(mockContext, metaData)
114107

@@ -124,9 +117,7 @@ class SentryInitProviderTest {
124117
assertFalse(Sentry.isEnabled())
125118
providerInfo.authority = AUTHORITY
126119

127-
val mockContext = mock<Context> {
128-
on { applicationContext } doReturn context
129-
}
120+
val mockContext = createMockContext()
130121
val metaData = Bundle()
131122
mockMetaData(mockContext, metaData)
132123

@@ -148,6 +139,14 @@ class SentryInitProviderTest {
148139
mockApplicationInfo.metaData = metaData
149140
}
150141

142+
private fun createMockContext(): Context {
143+
val mockContext = mock<Context> {
144+
on { applicationContext } doReturn context
145+
}
146+
whenever(mockContext.cacheDir).thenReturn(File("${File.separator}cache"))
147+
return mockContext
148+
}
149+
151150
companion object {
152151
private const val AUTHORITY = "io.sentry.sample.SentryInitProvider"
153152
}

sentry-core/src/main/java/io/sentry/core/SentryOptions.java

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@ public class SentryOptions {
1818
private ISerializer serializer;
1919
private String sentryClientName;
2020
private BeforeSecondCallback beforeSend;
21+
private String cacheDirPath;
2122

2223
public void addEventProcessor(EventProcessor eventProcessor) {
2324
eventProcessors.add(eventProcessor);
@@ -102,6 +103,14 @@ public void setBeforeSend(BeforeSecondCallback beforeSend) {
102103
this.beforeSend = beforeSend;
103104
}
104105

106+
public String getCacheDirPath() {
107+
return cacheDirPath;
108+
}
109+
110+
public void setCacheDirPath(String cacheDirPath) {
111+
this.cacheDirPath = cacheDirPath;
112+
}
113+
105114
public interface BeforeSecondCallback {
106115
SentryEvent execute(SentryEvent event);
107116
}

0 commit comments

Comments
 (0)