improve std/tempfiles (#17920)

* improve std/tempfiles
* fixup
* fix windows
* improve test
* improve runnableExamples and tests
* address comment
This commit is contained in:
Timothee Cour 2021-05-11 07:35:43 -07:00 • committed by GitHub
commit e60672141a
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
3 changed files with 94 additions and 33 deletions

View file

@ -1,17 +1,49 @@
import std/[os, tempfiles]
discard """
joinable: false # not strictly necessary
"""
import std/tempfiles
import std/[os, nre]
doAssert createTempDir("nim", "tmp") != createTempDir("nim", "tmp")
const
prefix = "D20210502T100442" # safety precaution to only affect files/dirs with this prefix
suffix = ".tmp"
block:
var t1 = createTempFile("nim", ".tmp")
var t2 = createTempFile("nim", ".tmp")
var t1 = createTempFile(prefix, suffix)
var t2 = createTempFile(prefix, suffix)
defer:
close(t1.cfile)
close(t2.cfile)
removeFile(t1.path)
removeFile(t2.path)
doAssert t1.path != t2.path
write(t1.fd, "1234")
doAssert readAll(t2.fd) == ""
let s = "1234"
write(t1.cfile, s)
doAssert readAll(t2.cfile) == ""
doAssert readAll(t1.cfile) == ""
t1.cfile.setFilePos 0
doAssert readAll(t1.cfile) == s
close(t1.fd)
close(t2.fd)
removeFile(t1.path)
removeFile(t2.path)
block: # createTempDir
doAssertRaises(OSError): discard createTempDir(prefix, suffix, "nonexistent")
block:
let dir1 = createTempDir(prefix, suffix)
let dir2 = createTempDir(prefix, suffix)
defer:
removeDir(dir1)
removeDir(dir2)
doAssert dir1 != dir2
doAssert dirExists(dir1)
doAssert dir1.lastPathPart.contains(re"^D20210502T100442(\w+).tmp$")
doAssert dir1.parentDir == getTempDir()
block:
let dir3 = createTempDir(prefix, "_mytmp", ".")
doAssert dir3.lastPathPart.contains(re"^D20210502T100442(\w+)_mytmp$")
doAssert dir3.parentDir == "." # not getCurrentDir(): we honor the absolute/relative state of input `dir`
removeDir(dir3)