diff options
Diffstat (limited to 'tests/stdlib/tgetfileinfo.nim')
-rw-r--r-- | tests/stdlib/tgetfileinfo.nim | 38 |
1 files changed, 34 insertions, 4 deletions
diff --git a/tests/stdlib/tgetfileinfo.nim b/tests/stdlib/tgetfileinfo.nim index 019c2eb7f..ae1480a4c 100644 --- a/tests/stdlib/tgetfileinfo.nim +++ b/tests/stdlib/tgetfileinfo.nim @@ -1,8 +1,11 @@ discard """ + matrix: "--mm:refc; --mm:orc" output: "pcDir\npcFile\npcLinkToDir\npcLinkToFile\n" + joinable: false """ import os, strutils +import std/[syncio, assertions] # Cases # 1 - String : Existing File : Symlink true # 2 - String : Existing File : Symlink false @@ -14,13 +17,13 @@ import os, strutils # 8 - Handle : Invalid Handle proc genBadFileName(limit = 100): string = - ## Generates a filename of a nonexistant file. + ## Generates a filename of a nonexistent file. ## Returns "" if generation fails. result = "a" var hitLimit = true for i in 0..100: - if existsFile(result): + if fileExists(result): result.add("a") else: hitLimit = false @@ -77,8 +80,8 @@ proc testGetFileInfo = # Case 6 and 8 block: let - testFile: TFile = nil - testHandle = TFileHandle(-1) + testFile: File = nil + testHandle = FileHandle(-1) try: discard getFileInfo(testFile) echo("Handle : Invalid File : Failure") @@ -125,10 +128,37 @@ proc testGetFileInfo = echo pcLinkToDir echo pcLinkToFile + doAssert dirInfo.isSpecial == false + doAssert fileInfo.isSpecial == false + when defined(posix): + doAssert linkDirInfo.isSpecial == false + doAssert linkFileInfo.isSpecial == false + removeDir(dirPath) removeFile(filePath) when defined(posix): removeFile(linkDirPath) removeFile(linkFilePath) + # Test that `isSpecial` is set correctly + block: + when defined(posix): + let + tmp = getTempDir() + fifoPath = tmp / "test-fifo" + linkFifoPath = tmp / "test-link-fifo" + + doAssert execShellCmd("mkfifo " & fifoPath) == 0 + createSymlink(fifoPath, linkFifoPath) + + let + fifoInfo = getFileInfo(fifoPath) + linkFifoInfo = getFileInfo(linkFifoPath) + + doAssert fifoInfo.isSpecial == true + doAssert linkFifoInfo.isSpecial == true + + removeFile(fifoPath) + removeFile(linkFifoPath) + testGetFileInfo() |