Skip to content

Commit 2d6252b

Browse files
committed
Add tests
1 parent 5e1e6cd commit 2d6252b

File tree

3 files changed

+67
-12
lines changed

3 files changed

+67
-12
lines changed

firebase-crashlytics/src/androidTest/java/com/google/firebase/crashlytics/internal/common/NativeSessionFileGzipperTest.java

Lines changed: 59 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -14,18 +14,70 @@
1414

1515
package com.google.firebase.crashlytics.internal.common;
1616

17-
import org.junit.Test;
18-
17+
import android.content.Context;
18+
import com.google.firebase.crashlytics.internal.CrashlyticsTestCase;
19+
import java.io.ByteArrayOutputStream;
20+
import java.io.File;
21+
import java.io.FileOutputStream;
22+
import java.io.IOException;
1923
import java.util.Arrays;
2024
import java.util.List;
25+
import org.junit.Test;
26+
import org.mockito.internal.util.collections.Sets;
27+
28+
public class NativeSessionFileGzipperTest extends CrashlyticsTestCase {
29+
byte[] testContents = {0, 2, 20, 10};
30+
File testFile;
31+
File missingFile;
32+
File gzipDir;
33+
34+
@Override
35+
protected void setUp() throws Exception {
36+
super.setUp();
37+
final Context context = getContext();
38+
testFile = new File(context.getFilesDir(), "testFile");
39+
try (FileOutputStream fout = new FileOutputStream(testFile);
40+
ByteArrayOutputStream stream = new ByteArrayOutputStream()) {
41+
stream.write(testContents);
42+
stream.writeTo(fout);
43+
}
44+
File baseDirectory = context.getFilesDir();
45+
missingFile = new File(baseDirectory, "missingFile");
46+
gzipDir = new File(baseDirectory, "gzip");
47+
gzipDir.mkdirs();
48+
}
2149

22-
public class NativeSessionFileGzipperTest {
50+
@Test
51+
public void testProcessNativeSessions_putsFilesInCorrectLocation() throws IOException {
52+
String fileBackedSessionName = "file";
53+
String byteBackedSessionName = "byte";
54+
FileBackedNativeSessionFile fileSession =
55+
new FileBackedNativeSessionFile(fileBackedSessionName, testFile);
56+
BytesBackedNativeSessionFile byteSession =
57+
new BytesBackedNativeSessionFile(byteBackedSessionName, testContents);
58+
List<NativeSessionFile> files = Arrays.asList(fileSession, byteSession);
59+
NativeSessionFileGzipper.processNativeSessions(gzipDir, files);
60+
61+
assertEquals(
62+
Sets.newSet(
63+
new File(gzipDir, fileBackedSessionName), new File(gzipDir, byteBackedSessionName)),
64+
Sets.newSet(gzipDir.listFiles()));
65+
}
2366

2467
@Test
25-
public void testProcessNativeSessions_processesNativeSessions() {
68+
public void testProcessNativeSessionsWhenDataIsNull_putsFilesInCorrectLocation()
69+
throws IOException {
70+
// String fileBackedSessionName = "file";
71+
// String byteBackedSessionName = "byte";
72+
// FileBackedNativeSessionFile fileSession =
73+
// new FileBackedNativeSessionFile(fileBackedSessionName, missingFile);
74+
// BytesBackedNativeSessionFile byteSession =
75+
// new BytesBackedNativeSessionFile(byteBackedSessionName, testContents);
2676
// List<NativeSessionFile> files = Arrays.asList(fileSession, byteSession);
27-
// NativeSessionFileGzipper.processNativeSessions(directory, files);
28-
// FIXME:
29-
77+
// NativeSessionFileGzipper.processNativeSessions(gzipDir, files);
78+
//
79+
// assertEquals(Sets.newSet(
80+
// new File(gzipDir, byteBackedSessionName)),
81+
// Sets.newSet(gzipDir.listFiles()));
3082
}
3183
}

firebase-crashlytics/src/main/java/com/google/firebase/crashlytics/internal/common/FileBackedNativeSessionFile.java

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,9 @@ public String getName() {
4040

4141
@Override
4242
public InputStream getStream() {
43+
if (!file.exists() || !file.isFile()) {
44+
return null;
45+
}
4346
try {
4447
return new FileInputStream(file);
4548
} catch (FileNotFoundException f) {
@@ -61,14 +64,15 @@ public CrashlyticsReport.FilesPayload.File asFilePayload() {
6164
private byte[] asBytes() {
6265
final byte[] readBuffer = new byte[8192];
6366
final ByteArrayOutputStream bos = new ByteArrayOutputStream();
64-
try (InputStream stream = new FileInputStream(file)) {
67+
try (InputStream stream = getStream()) {
68+
if (stream == null) {
69+
return null;
70+
}
6571
int read;
6672
while ((read = stream.read(readBuffer)) > 0) {
6773
bos.write(readBuffer, 0, read);
6874
}
6975
return bos.toByteArray();
70-
} catch (FileNotFoundException e) {
71-
return null;
7276
} catch (IOException e) {
7377
return null;
7478
}

firebase-crashlytics/src/main/java/com/google/firebase/crashlytics/internal/common/NativeSessionFileGzipper.java

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -26,8 +26,7 @@
2626
/** Copies {@link NativeSessionFile} into gzipped files within a provided path. */
2727
class NativeSessionFileGzipper {
2828

29-
static void processNativeSessions(File nativeSessionDirectory, List<NativeSessionFile> streams)
30-
throws IOException {
29+
static void processNativeSessions(File nativeSessionDirectory, List<NativeSessionFile> streams) {
3130

3231
for (NativeSessionFile stream : streams) {
3332
InputStream inputStream = null;

0 commit comments

Comments
 (0)