11package io.sentry.android.core.anr
22
33import java.io.File
4- import java.nio.file.Files
5- import kotlin.test.AfterTest
64import kotlin.test.BeforeTest
75import kotlin.test.Test
86import kotlin.test.assertEquals
97import kotlin.test.assertFalse
108import kotlin.test.assertTrue
9+ import org.junit.Rule
10+ import org.junit.rules.TemporaryFolder
1111
1212class AnrProfileRotationHelperTest {
13- private lateinit var tempDir : File
13+ @get:Rule val tmpDir = TemporaryFolder ()
1414
1515 @BeforeTest
1616 fun setup () {
17- tempDir = Files .createTempDirectory(" anr_profile_rotation_test" ).toFile()
1817 AnrProfileRotationHelper .rotate()
1918 }
2019
21- @AfterTest
22- fun cleanup () {
23- if (::tempDir.isInitialized && tempDir.exists()) {
24- tempDir.deleteRecursively()
25- }
26- }
27-
2820 @Test
2921 fun `getFileForRecording returns file with correct name` () {
30- val file = AnrProfileRotationHelper .getFileForRecording(tempDir )
22+ val file = AnrProfileRotationHelper .getFileForRecording(tmpDir.root )
3123
3224 assertEquals(" anr_profile" , file.name)
33- assertEquals(tempDir , file.parentFile)
25+ assertEquals(tmpDir.root , file.parentFile)
3426 }
3527
3628 @Test
3729 fun `getLastFile returns last file` () {
38- val file = AnrProfileRotationHelper .getLastFile(tempDir )
30+ val file = AnrProfileRotationHelper .getLastFile(tmpDir.root )
3931
4032 assertEquals(" anr_profile_old" , file.name)
41- assertEquals(tempDir , file.parentFile)
33+ assertEquals(tmpDir.root , file.parentFile)
4234 }
4335
4436 @Test
4537 fun `deleteLastFile returns true when file does not exist` () {
46- val result = AnrProfileRotationHelper .deleteLastFile(tempDir )
38+ val result = AnrProfileRotationHelper .deleteLastFile(tmpDir.root )
4739
4840 assertTrue(result)
4941 }
5042
5143 @Test
5244 fun `deleteLastFile returns true when file is deleted successfully` () {
53- val lastFile = File (tempDir , " anr_profile_old" )
45+ val lastFile = File (tmpDir.root , " anr_profile_old" )
5446 lastFile.writeText(" test content" )
5547 assertTrue(lastFile.exists())
5648
57- val result = AnrProfileRotationHelper .deleteLastFile(tempDir )
49+ val result = AnrProfileRotationHelper .deleteLastFile(tmpDir.root )
5850
5951 assertTrue(result)
6052 assertFalse(lastFile.exists())
6153 }
6254
6355 @Test
6456 fun `rotate moves current file to last file` () {
65- val currentFile = File (tempDir , " anr_profile" )
57+ val currentFile = File (tmpDir.root , " anr_profile" )
6658 currentFile.writeText(" current content" )
6759
68- val lastFile = AnrProfileRotationHelper .getLastFile(tempDir )
60+ val lastFile = AnrProfileRotationHelper .getLastFile(tmpDir.root )
6961
7062 assertTrue(lastFile.exists())
7163 assertEquals(" current content" , lastFile.readText())
7264 }
7365
7466 @Test
7567 fun `rotate deletes existing last file before moving` () {
76- val currentFile = File (tempDir , " anr_profile" )
77- val lastFile = File (tempDir , " anr_profile_old" )
68+ val currentFile = File (tmpDir.root , " anr_profile" )
69+ val lastFile = File (tmpDir.root , " anr_profile_old" )
7870
7971 lastFile.writeText(" last content" )
8072 currentFile.writeText(" current content" )
8173
8274 assertTrue(lastFile.exists())
8375 assertTrue(currentFile.exists())
8476
85- val newLastFile = AnrProfileRotationHelper .getLastFile(tempDir )
77+ val newLastFile = AnrProfileRotationHelper .getLastFile(tmpDir.root )
8678
8779 assertTrue(newLastFile.exists())
8880 assertEquals(" current content" , newLastFile.readText())
8981 }
9082
9183 @Test
9284 fun `rotate does not directly perform file renaming` () {
93- val currentFile = File (tempDir , " anr_profile" )
85+ val currentFile = File (tmpDir.root , " anr_profile" )
9486 currentFile.writeText(" current" )
9587
96- val lastFile = File (tempDir , " anr_profile_old" )
88+ val lastFile = File (tmpDir.root , " anr_profile_old" )
9789 lastFile.writeText(" last" )
9890
9991 AnrProfileRotationHelper .rotate()
@@ -103,18 +95,18 @@ class AnrProfileRotationHelperTest {
10395 assertEquals(" last" , lastFile.readText())
10496
10597 // but once rotated, the last file should now contain the current file's content
106- AnrProfileRotationHelper .getFileForRecording(tempDir )
98+ AnrProfileRotationHelper .getFileForRecording(tmpDir.root )
10799 assertEquals(" current" , lastFile.readText())
108100 }
109101
110102 @Test
111103 fun `getFileForRecording triggers rotation when needed` () {
112- val currentFile = File (tempDir , " anr_profile" )
104+ val currentFile = File (tmpDir.root , " anr_profile" )
113105 currentFile.writeText(" content before rotation" )
114106
115- AnrProfileRotationHelper .getFileForRecording(tempDir )
107+ AnrProfileRotationHelper .getFileForRecording(tmpDir.root )
116108
117- val lastFile = File (tempDir , " anr_profile_old" )
109+ val lastFile = File (tmpDir.root , " anr_profile_old" )
118110 assertTrue(lastFile.exists())
119111 assertEquals(" content before rotation" , lastFile.readText())
120112 }
0 commit comments