diff options
Diffstat (limited to 'Build/source/libs/luafilesystem/tests/test.lua')
-rw-r--r-- | Build/source/libs/luafilesystem/tests/test.lua | 80 |
1 files changed, 80 insertions, 0 deletions
diff --git a/Build/source/libs/luafilesystem/tests/test.lua b/Build/source/libs/luafilesystem/tests/test.lua new file mode 100644 index 00000000000..66ec52a2f8b --- /dev/null +++ b/Build/source/libs/luafilesystem/tests/test.lua @@ -0,0 +1,80 @@ +#!/usr/local/bin/lua50
+
+local tmp = "/tmp"
+local sep = "/"
+local upper = ".."
+
+require"lfs"
+
+function attrdir (path)
+ for file in lfs.dir(path) do
+ if file ~= "." and file ~= ".." then
+ local f = path..sep..file
+ print ("\t=> "..f.." <=")
+ local attr = lfs.attributes (f)
+ assert (type(attr) == "table")
+ if attr.mode == "directory" then
+ attrdir (f)
+ else
+ for name, value in pairs(attr) do
+ print (name, value)
+ end
+ end
+ end
+ end
+end
+
+-- Checking changing directories
+local current = assert (lfs.currentdir())
+local reldir = string.gsub (current, "^.*%"..sep.."([^"..sep.."])$", "%1")
+assert (lfs.chdir (upper), "could not change to upper directory")
+assert (lfs.chdir (reldir), "could not change back to current directory")
+assert (lfs.currentdir() == current, "error trying to change directories")
+assert (lfs.chdir ("this couldn't be an actual directory") == nil, "could change to a non-existent directory")
+
+-- Changing creating and removing directories
+local tmpdir = tmp..sep.."lfs_tmp_dir"
+local tmpfile = tmpdir..sep.."tmp_file"
+assert (lfs.mkdir (tmpdir), "could not make a new directory")
+local attrib, errmsg = lfs.attributes (tmpdir)
+if not attrib then
+ error ("could not get attributes of file `"..tmpdir.."':\n"..errmsg)
+end
+local f = io.open(tmpfile, "w")
+f:close()
+
+-- Change access time
+assert (lfs.touch (tmpfile, 86401))
+local new_att = assert (lfs.attributes (tmpfile))
+assert (new_att.access == 86401, "could not set access time")
+assert (new_att.modification == 86401, "could not set modification time")
+
+-- Change access and modification time
+assert (lfs.touch (tmpfile, 86403, 86402))
+local new_att = assert (lfs.attributes (tmpfile))
+assert (new_att.access == 86403, "could not set access time")
+assert (new_att.modification == 86402, "could not set modification time")
+
+-- Restore access time to current value
+assert (lfs.touch (tmpfile))
+new_att = assert (lfs.attributes (tmpfile))
+assert (new_att.access == attrib.access)
+assert (new_att.modification == attrib.modification)
+
+-- Remove new file and directory
+assert (os.remove (tmpfile), "could not remove new file")
+assert (lfs.rmdir (tmpdir), "could not remove new directory")
+assert (lfs.mkdir (tmpdir..sep.."lfs_tmp_dir") == nil, "could create a directory inside a non-existent one")
+
+-- Trying to get attributes of a non-existent file
+assert (lfs.attributes ("this couldn't be an actual file") == nil, "could get attributes of a non-existent file")
+assert (type(lfs.attributes (upper)) == "table", "couldn't get attributes of upper directory")
+
+-- Stressing directory iterator
+count = 0
+for i = 1, 4000 do
+ for file in lfs.dir (tmp) do
+ count = count + 1
+ end
+end
+print"Ok!"
|