diff options
author | Araq <rumpf_a@web.de> | 2018-10-15 12:20:52 +0200 |
---|---|---|
committer | Araq <rumpf_a@web.de> | 2018-10-15 12:20:52 +0200 |
commit | 0c04da6f2644f97ff86d541e0c95dd92c7fb7753 (patch) | |
tree | 71ad88c107a1b7e7a4965cd5b31978244cca725f /tests | |
parent | bf01d7136eaa8ac545a4fb74869bfa5834917b3c (diff) | |
parent | 3bef8511437664caaa6e997c2dc6d7f6ce36597a (diff) | |
download | Nim-0c04da6f2644f97ff86d541e0c95dd92c7fb7753.tar.gz |
Merge branch 'devel' of github.com:nim-lang/Nim into devel
Diffstat (limited to 'tests')
-rw-r--r-- | tests/stdlib/tos.nim | 207 |
1 files changed, 113 insertions, 94 deletions
diff --git a/tests/stdlib/tos.nim b/tests/stdlib/tos.nim index 829e35c7b..c10f7036b 100644 --- a/tests/stdlib/tos.nim +++ b/tests/stdlib/tos.nim @@ -53,124 +53,125 @@ true import os, strutils -let files = @["these.txt", "are.x", "testing.r", "files.q"] -let dirs = @["some", "created", "test", "dirs"] +block fileOperations: + let files = @["these.txt", "are.x", "testing.r", "files.q"] + let dirs = @["some", "created", "test", "dirs"] -let dname = "__really_obscure_dir_name" + let dname = "__really_obscure_dir_name" -createDir(dname) -echo dirExists(dname) - -# Test creating files and dirs -for dir in dirs: - createDir(dname/dir) - echo dirExists(dname/dir) + createDir(dname) + echo dirExists(dname) -for file in files: - let fh = open(dname/file, fmReadWrite) - fh.close() - echo fileExists(dname/file) + # Test creating files and dirs + for dir in dirs: + createDir(dname/dir) + echo dirExists(dname/dir) -echo "All:" + for file in files: + let fh = open(dname/file, fmReadWrite) + fh.close() + echo fileExists(dname/file) -template norm(x): untyped = - (when defined(windows): x.replace('\\', '/') else: x) + echo "All:" -for path in walkPattern(dname/"*"): - echo path.norm + template norm(x): untyped = + (when defined(windows): x.replace('\\', '/') else: x) -echo "Files:" + for path in walkPattern(dname/"*"): + echo path.norm -for path in walkFiles(dname/"*"): - echo path.norm + echo "Files:" -echo "Dirs:" + for path in walkFiles(dname/"*"): + echo path.norm -for path in walkDirs(dname/"*"): - echo path.norm + echo "Dirs:" -# Test removal of files dirs -for dir in dirs: - removeDir(dname/dir) - echo dirExists(dname/dir) + for path in walkDirs(dname/"*"): + echo path.norm -for file in files: - removeFile(dname/file) - echo fileExists(dname/file) + # Test removal of files dirs + for dir in dirs: + removeDir(dname/dir) + echo dirExists(dname/dir) -removeDir(dname) -echo dirExists(dname) + for file in files: + removeFile(dname/file) + echo fileExists(dname/file) -# createDir should create recursive directories -createDir(dirs[0] / dirs[1]) -echo dirExists(dirs[0] / dirs[1]) # true -removeDir(dirs[0]) + removeDir(dname) + echo dirExists(dname) -# createDir should properly handle trailing separator -createDir(dname / "") -echo dirExists(dname) # true -removeDir(dname) + # createDir should create recursive directories + createDir(dirs[0] / dirs[1]) + echo dirExists(dirs[0] / dirs[1]) # true + removeDir(dirs[0]) -# createDir should raise IOError if the path exists -# and is not a directory -open(dname, fmWrite).close -try: - createDir(dname) -except IOError: - echo "Raises" -removeFile(dname) + # createDir should properly handle trailing separator + createDir(dname / "") + echo dirExists(dname) # true + removeDir(dname) -# removeFile should not remove directory -createDir(dname) -try: + # createDir should raise IOError if the path exists + # and is not a directory + open(dname, fmWrite).close + try: + createDir(dname) + except IOError: + echo "Raises" removeFile(dname) -except OSError: - echo "Raises" -removeDir(dname) -# test copyDir: -createDir("a/b") -open("a/b/file.txt", fmWrite).close -createDir("a/b/c") -open("a/b/c/fileC.txt", fmWrite).close - -copyDir("a", "../dest/a") -removeDir("a") + # removeFile should not remove directory + createDir(dname) + try: + removeFile(dname) + except OSError: + echo "Raises" + removeDir(dname) -echo dirExists("../dest/a/b") -echo fileExists("../dest/a/b/file.txt") + # test copyDir: + createDir("a/b") + open("a/b/file.txt", fmWrite).close + createDir("a/b/c") + open("a/b/c/fileC.txt", fmWrite).close -echo fileExists("../dest/a/b/c/fileC.txt") -removeDir("../dest") + copyDir("a", "../dest/a") + removeDir("a") -# test copyDir: -# if separator at the end of a path -createDir("a/b") -open("a/file.txt", fmWrite).close + echo dirExists("../dest/a/b") + echo fileExists("../dest/a/b/file.txt") -copyDir("a/", "../dest/a/") -removeDir("a") + echo fileExists("../dest/a/b/c/fileC.txt") + removeDir("../dest") -echo dirExists("../dest/a/b") -echo fileExists("../dest/a/file.txt") -removeDir("../dest") + # test copyDir: + # if separator at the end of a path + createDir("a/b") + open("a/file.txt", fmWrite).close -# Test get/set modification times -# Should support at least microsecond resolution -import times -let tm = fromUnix(0) + 100.microseconds -writeFile("a", "") -setLastModificationTime("a", tm) + copyDir("a/", "../dest/a/") + removeDir("a") -when defined(macosx): - echo "true" -else: - echo getLastModificationTime("a") == tm -removeFile("a") + echo dirExists("../dest/a/b") + echo fileExists("../dest/a/file.txt") + removeDir("../dest") -when defined(posix): - - block normalizedPath: +import times +block modificationTime: + # Test get/set modification times + # Should support at least microsecond resolution + let tm = fromUnix(0) + 100.microseconds + writeFile("a", "") + setLastModificationTime("a", tm) + + when defined(macosx): + echo "true" + else: + echo getLastModificationTime("a") == tm + removeFile("a") + +block normalizedPath: + when defined(posix): block relative: doAssert normalizedPath(".") == "." doAssert normalizedPath("..") == ".." @@ -198,9 +199,7 @@ when defined(posix): doAssert normalizedPath("/a/b/c/..") == "/a/b" doAssert normalizedPath("/a/b/c/../") == "/a/b" -else: - - block normalizedPath: + else: block relative: doAssert normalizedPath(".") == "." doAssert normalizedPath("..") == ".." @@ -227,3 +226,23 @@ else: doAssert normalizedPath("\\a\\\\\\b") == "\\a\\b" doAssert normalizedPath("\\a\\b\\c\\..") == "\\a\\b" doAssert normalizedPath("\\a\\b\\c\\..\\") == "\\a\\b" + +block isHidden: + when defined(posix): + doAssert ".foo.txt".isHidden + doAssert "bar/.foo.ext".isHidden + doAssert: not "bar".isHidden + doAssert: not "foo/".isHidden + # Corner cases: paths are not normalized when determining `isHidden` + doAssert: not ".foo/.".isHidden + doAssert: not ".foo/..".isHidden + +block absolutePath: + doAssertRaises(ValueError): discard absolutePath("a", "b") + doAssert absolutePath("a") == getCurrentDir() / "a" + doAssert absolutePath("a", "/b") == "/b" / "a" + when defined(Posix): + doAssert absolutePath("a", "/b/") == "/b" / "a" + doAssert absolutePath("a", "/b/c") == "/b/c" / "a" + doAssert absolutePath("/a", "b/") == "/a" + |