Skip to content

Commit 852ea9f

Browse files
fzhinkinSpace Team
authored andcommitted
KT-81078 Deprecate kotlin.io.createTempDir, createTempFile with error
See KTLC-281 for the motivation and approval ^KT-81078 fixed
1 parent 992b01e commit 852ea9f

File tree

4 files changed

+56
-52
lines changed

4 files changed

+56
-52
lines changed

libraries/stdlib/jvm/src/kotlin/io/files/Utils.kt

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,7 @@ import java.io.IOException
3636
* @throws IOException in case of input/output error.
3737
* @throws IllegalArgumentException if [prefix] is shorter than three symbols.
3838
*/
39+
@DeprecatedSinceKotlin(warningSince = "1.4", errorSince = "2.3")
3940
@Deprecated(
4041
"Avoid creating temporary directories in the default temp location with this function " +
4142
"due to too wide permissions on the newly created directory. " +
@@ -76,6 +77,7 @@ public fun createTempDir(prefix: String = "tmp", suffix: String? = null, directo
7677
* @throws IOException in case of input/output error.
7778
* @throws IllegalArgumentException if [prefix] is shorter than three symbols.
7879
*/
80+
@DeprecatedSinceKotlin(warningSince = "1.4", errorSince = "2.3")
7981
@Deprecated(
8082
"Avoid creating temporary files in the default temp location with this function " +
8183
"due to too wide permissions on the newly created file. " +

libraries/stdlib/jvm/test/io/FileTreeWalks.kt

Lines changed: 15 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,8 @@ package test.io
88
import java.io.File
99
import java.io.IOException
1010
import java.util.*
11+
import kotlin.io.path.createTempDirectory
12+
import kotlin.io.path.createTempFile
1113
import kotlin.test.*
1214

1315
class FileTreeWalkTest {
@@ -16,7 +18,7 @@ class FileTreeWalkTest {
1618
val referenceFilenames =
1719
listOf("1", "1/2", "1/3", "1/3/4.txt", "1/3/5.txt", "6", "7.txt", "8", "8/9.txt")
1820
fun createTestFiles(): File {
19-
val basedir = @Suppress("DEPRECATION") createTempDir()
21+
val basedir = createTempDirectory().toFile()
2022
for (name in referenceFilenames) {
2123
val file = basedir.resolve(name)
2224
if (file.extension.isEmpty())
@@ -52,7 +54,7 @@ class FileTreeWalkTest {
5254
}
5355

5456
@Test fun singleFile() {
55-
val testFile = @Suppress("DEPRECATION") createTempFile()
57+
val testFile = createTempFile().toFile()
5658
val nonExistantFile = testFile.resolve("foo")
5759
try {
5860
for (walk in listOf(File::walkTopDown, File::walkBottomUp)) {
@@ -437,26 +439,26 @@ class FileTreeWalkTest {
437439
}
438440
}
439441

440-
@Suppress("DEPRECATION")
441442
@Test fun streamFileTree() {
442-
val dir = createTempDir()
443+
val dir = createTempDirectory()
444+
val dirAsFile = dir.toFile()
443445
try {
444-
val subDir1 = createTempDir(prefix = "d1_", directory = dir)
445-
val subDir2 = createTempDir(prefix = "d2_", directory = dir)
446-
createTempDir(prefix = "d1_", directory = subDir1)
446+
val subDir1 = createTempDirectory(prefix = "d1_", directory = dir)
447+
val subDir2 = createTempDirectory(prefix = "d2_", directory = dir)
448+
createTempDirectory(prefix = "d1_", directory = subDir1)
447449
createTempFile(prefix = "f1_", directory = subDir1)
448-
createTempDir(prefix = "d1_", directory = subDir2)
449-
assertEquals(6, dir.walkTopDown().count())
450+
createTempDirectory(prefix = "d1_", directory = subDir2)
451+
assertEquals(6, dirAsFile.walkTopDown().count())
450452
} finally {
451-
dir.deleteRecursively()
453+
dirAsFile.deleteRecursively()
452454
}
453-
dir.mkdir()
455+
dirAsFile.mkdir()
454456
try {
455-
val it = dir.walkTopDown().iterator()
457+
val it = dirAsFile.walkTopDown().iterator()
456458
it.next()
457459
assertFailsWith<NoSuchElementException>("Second call to next() should fail.") { it.next() }
458460
} finally {
459-
dir.delete()
461+
dirAsFile.delete()
460462
}
461463
}
462464

libraries/stdlib/jvm/test/io/Files.kt

Lines changed: 36 additions & 37 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,8 @@ package test.io
77

88
import test.assertArrayContentEquals
99
import java.io.*
10+
import kotlin.io.path.createTempDirectory
11+
import kotlin.io.path.createTempFile
1012
import kotlin.io.walkTopDown
1113
import kotlin.random.Random
1214
import kotlin.test.*
@@ -17,14 +19,13 @@ class FilesTest {
1719
private val isBackslashSeparator = File.separatorChar == '\\'
1820

1921

20-
@Suppress("DEPRECATION")
2122
@Test fun testPath() {
2223
val fileSuf = System.currentTimeMillis().toString()
23-
val file1 = createTempFile("temp", fileSuf)
24+
val file1 = createTempFile("temp", fileSuf).toFile()
2425
assertTrue(file1.path.endsWith(fileSuf), file1.path)
2526
}
2627

27-
@Suppress("DEPRECATION")
28+
@Suppress("DEPRECATION_ERROR")
2829
@Test fun testCreateTempDir() {
2930
val dirSuf = System.currentTimeMillis().toString()
3031
val dir1 = createTempDir("temp", dirSuf)
@@ -44,39 +45,38 @@ class FilesTest {
4445
dir3.delete()
4546
}
4647

47-
@Suppress("DEPRECATION")
48+
@Suppress("DEPRECATION_ERROR")
4849
@Test fun testCreateTempFile() {
4950
val fileSuf = System.currentTimeMillis().toString()
50-
val file1 = createTempFile("temp", fileSuf)
51+
val file1 = kotlin.io.createTempFile("temp", fileSuf)
5152
assertTrue(file1.exists() && file1.name.startsWith("temp") && file1.name.endsWith(fileSuf))
5253
assertFailsWith(IllegalArgumentException::class) {
53-
createTempFile("a")
54+
kotlin.io.createTempFile("a")
5455
}
5556

56-
val file2 = createTempFile("temp")
57+
val file2 = kotlin.io.createTempFile("temp")
5758
assertTrue(file2.exists() && file2.name.startsWith("temp") && file2.name.endsWith(".tmp"))
5859

59-
val file3 = createTempFile()
60+
val file3 = kotlin.io.createTempFile()
6061
assertTrue(file3.exists() && file3.name.startsWith("tmp") && file3.name.endsWith(".tmp"))
6162

6263
file1.delete()
6364
file2.delete()
6465
file3.delete()
6566
}
6667

67-
@Suppress("DEPRECATION")
6868
@Test fun listFilesWithFilter() {
69-
val dir = createTempDir("temp")
69+
val dir = createTempDirectory("temp")
7070

71-
createTempFile("temp1", ".kt", dir)
72-
createTempFile("temp2", ".java", dir)
73-
createTempFile("temp3", ".kt", dir)
71+
createTempFile(prefix = "temp1", suffix = ".kt", directory = dir)
72+
createTempFile(prefix = "temp2", suffix = ".java", directory = dir)
73+
createTempFile(prefix = "temp3", suffix = ".kt", directory = dir)
7474

7575
// This line works only with Kotlin File.listFiles(filter)
76-
val result = dir.listFiles { it -> it.name.endsWith(".kt") } // todo ambiguity on SAM
76+
val result = dir.toFile().listFiles { it -> it.name.endsWith(".kt") } // todo ambiguity on SAM
7777
assertEquals(2, result!!.size)
7878
// This line works both with Kotlin File.listFiles(filter) and the same Java function because of SAM
79-
val result2 = dir.listFiles { it -> it.name.endsWith(".kt") }
79+
val result2 = dir.toFile().listFiles { it -> it.name.endsWith(".kt") }
8080
assertEquals(2, result2!!.size)
8181
}
8282

@@ -370,7 +370,7 @@ class FilesTest {
370370
}
371371

372372
@Test fun writeReadText() {
373-
val file = @Suppress("DEPRECATION") createTempFile()
373+
val file = createTempFile().toFile()
374374
try {
375375
val expected = String(CharArray(DEFAULT_BUFFER_SIZE * 2) { Random.nextInt(0, 1024).toChar() })
376376
file.writeText(expected)
@@ -395,7 +395,7 @@ class FilesTest {
395395
}
396396

397397
@Test fun writeReadBytes() {
398-
val file = @Suppress("DEPRECATION") createTempFile()
398+
val file = createTempFile().toFile()
399399
try {
400400
val expected = Random.nextBytes(DEFAULT_BUFFER_SIZE * 4)
401401
file.writeBytes(expected)
@@ -431,8 +431,8 @@ class FilesTest {
431431
}
432432

433433
@Test fun testCopyTo() {
434-
val srcFile = @Suppress("DEPRECATION") createTempFile()
435-
val dstFile = @Suppress("DEPRECATION") createTempFile()
434+
val srcFile = createTempFile().toFile()
435+
val dstFile = createTempFile().toFile()
436436
try {
437437
srcFile.writeText("Hello, World!")
438438
assertFailsWith(FileAlreadyExistsException::class, "copy do not overwrite existing file") {
@@ -497,8 +497,8 @@ class FilesTest {
497497

498498
@Test fun copyToNameWithoutParent() {
499499
val currentDir = File("").absoluteFile!!
500-
val srcFile = @Suppress("DEPRECATION") createTempFile()
501-
val dstFile = @Suppress("DEPRECATION") createTempFile(directory = currentDir)
500+
val srcFile = createTempFile().toFile()
501+
val dstFile = createTempFile(directory = currentDir.toPath()).toFile()
502502
try {
503503
srcFile.writeText("Hello, World!", Charsets.UTF_8)
504504
dstFile.delete()
@@ -516,7 +516,7 @@ class FilesTest {
516516
}
517517

518518
@Test fun deleteRecursively() {
519-
val dir = @Suppress("DEPRECATION") createTempDir()
519+
val dir = createTempDirectory().toFile()
520520
dir.delete()
521521
dir.mkdir()
522522
val subDir = File(dir, "subdir");
@@ -567,22 +567,22 @@ class FilesTest {
567567
}
568568
}
569569

570-
@Suppress("DEPRECATION")
571570
@Test fun copyRecursively() {
572-
val src = createTempDir()
573-
val dst = createTempDir()
571+
val srcPath = createTempDirectory()
572+
val src = srcPath.toFile()
573+
val dst = createTempDirectory().toFile()
574574
dst.delete()
575575
fun check() = compareDirectories(src, dst)
576576

577577
try {
578-
val subDir1 = createTempDir(prefix = "d1_", directory = src)
579-
val subDir2 = createTempDir(prefix = "d2_", directory = src)
580-
createTempDir(prefix = "d1_", directory = subDir1)
581-
val file1 = createTempFile(prefix = "f1_", directory = src)
582-
val file2 = createTempFile(prefix = "f2_", directory = subDir1)
578+
val subDir1 = createTempDirectory(prefix = "d1_", directory = srcPath)
579+
val subDir2 = createTempDirectory(prefix = "d2_", directory = srcPath)
580+
createTempDirectory(prefix = "d1_", directory = subDir1)
581+
val file1 = createTempFile(prefix = "f1_", directory = srcPath).toFile()
582+
val file2 = createTempFile(prefix = "f2_", directory = subDir1).toFile()
583583
file1.writeText("hello")
584584
file2.writeText("wazzup")
585-
createTempDir(prefix = "d1_", directory = subDir2)
585+
createTempDirectory(prefix = "d1_", directory = subDir2)
586586

587587
assertTrue(src.copyRecursively(dst))
588588
check()
@@ -602,7 +602,7 @@ class FilesTest {
602602
}
603603
assertEquals(2, conflicts)
604604

605-
if (subDir1.setReadable(false)) {
605+
if (subDir1.toFile().setReadable(false)) {
606606
try {
607607
dst.deleteRecursively()
608608
var caught = false
@@ -617,7 +617,7 @@ class FilesTest {
617617
assertTrue(caught)
618618
check()
619619
} finally {
620-
subDir1.setReadable(true)
620+
subDir1.toFile().setReadable(true)
621621
}
622622
}
623623

@@ -634,10 +634,9 @@ class FilesTest {
634634
}
635635
}
636636

637-
@Suppress("DEPRECATION")
638637
@Test fun copyRecursivelyWithOverwrite() {
639-
val src = createTempDir()
640-
val dst = createTempDir()
638+
val src = createTempDirectory().toFile()
639+
val dst = createTempDirectory().toFile()
641640
fun check() = compareDirectories(src, dst)
642641

643642
try {
@@ -681,7 +680,7 @@ class FilesTest {
681680
}
682681

683682
@Test fun helpers2() {
684-
val file = @Suppress("DEPRECATION") createTempFile()
683+
val file = createTempFile().toFile()
685684
val writer = file.printWriter()
686685
val str1 = "Hello, world!"
687686
val str2 = "Everything is wonderful!"

libraries/stdlib/jvm/test/io/IOStreams.kt

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,11 +8,12 @@ package test.io
88
import kotlin.test.*
99
import java.io.Writer
1010
import java.io.BufferedReader
11+
import kotlin.io.path.createTempFile
1112
import kotlin.random.Random
1213

1314
class IOStreamsTest {
1415
@Test fun testGetStreamOfFile() {
15-
val tmpFile = @Suppress("DEPRECATION") createTempFile()
16+
val tmpFile = createTempFile().toFile()
1617
var writer: Writer? = null
1718
try {
1819
writer = tmpFile.outputStream().writer()
@@ -46,7 +47,7 @@ class IOStreamsTest {
4647
}
4748

4849
@Test fun readWriteBytes() {
49-
val file = @Suppress("DEPRECATION") createTempFile("temp", Random.nextLong().toString())
50+
val file = createTempFile("temp", Random.nextLong().toString()).toFile()
5051
try {
5152
val bytes = Random.nextBytes(256_000)
5253

0 commit comments

Comments
 (0)