improve std/tempfiles (#17920)
* improve std/tempfiles * fixup * fix windows * improve test * improve runnableExamples and tests * address comment
This commit is contained in:
parent
2c2ec48bc4
commit
e60672141a
3 changed files with 94 additions and 33 deletions
|
|
@ -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)
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue