63 lines
1.6 KiB
Kotlin
63 lines
1.6 KiB
Kotlin
package co.electriccoin.zcash.spackle.io
|
|
|
|
import kotlinx.coroutines.ExperimentalCoroutinesApi
|
|
import kotlinx.coroutines.test.runTest
|
|
import org.junit.Test
|
|
import java.io.File
|
|
import java.util.UUID
|
|
import kotlin.test.assertFalse
|
|
import kotlin.test.assertNotEquals
|
|
import kotlin.test.assertNotNull
|
|
import kotlin.test.assertTrue
|
|
|
|
@OptIn(ExperimentalCoroutinesApi::class)
|
|
class WriteAtomicallyTest {
|
|
// Putting in the build directory so that it doesn't show up as dirty in git
|
|
private fun newFile() = File(File("build"), "atomic_file_test-${UUID.randomUUID()}")
|
|
|
|
@Test
|
|
fun `file has temp name`() = runTest {
|
|
val testFile = newFile()
|
|
try {
|
|
testFile.writeAtomically {
|
|
it.writeText("test text")
|
|
assertNotEquals(testFile.name, it.name)
|
|
}
|
|
} finally {
|
|
testFile.delete()
|
|
}
|
|
}
|
|
|
|
@Test
|
|
fun `temp file deleted`() = runTest {
|
|
val testFile = newFile()
|
|
try {
|
|
var tempFile: File? = null
|
|
|
|
testFile.writeAtomically {
|
|
tempFile = it
|
|
it.writeText("test text")
|
|
}
|
|
|
|
assertNotNull(tempFile)
|
|
assertFalse(tempFile!!.exists())
|
|
} finally {
|
|
testFile.delete()
|
|
}
|
|
}
|
|
|
|
@Test
|
|
fun `file is renamed`() = runTest {
|
|
val testFile = newFile()
|
|
try {
|
|
testFile.writeAtomically {
|
|
it.writeText("test text")
|
|
}
|
|
|
|
assertTrue(testFile.exists())
|
|
} finally {
|
|
testFile.delete()
|
|
}
|
|
}
|
|
}
|