|
Packit |
437b5e |
specify posix.sys.stat:
|
|
Packit |
437b5e |
- before:
|
|
Packit |
437b5e |
st = require "posix.sys.stat"
|
|
Packit |
437b5e |
|
|
Packit |
437b5e |
S_IRWXU, S_IRWXG, S_IRWXO = st.S_IRWXU, st.S_IRWXG, st.S_IRWXO
|
|
Packit |
437b5e |
S_ISBLK, S_ISCHR, S_ISDIR, S_ISFIFO, S_ISREG, S_ISLNK, S_ISSOCK =
|
|
Packit |
437b5e |
st.S_ISBLK, st.S_ISCHR, st.S_ISDIR, st.S_ISFIFO, st.S_ISREG, st.S_ISLNK, st.S_ISSOCK
|
|
Packit |
437b5e |
RWXALL = bor (S_IRWXU, S_IRWXG, S_IRWXO)
|
|
Packit |
437b5e |
|
|
Packit |
437b5e |
dir = posix.mkdtemp (template)
|
|
Packit |
437b5e |
posix.mkdir (dir .. "/subdir")
|
|
Packit |
437b5e |
posix.link ("subdir", dir .. "/soft", true)
|
|
Packit |
437b5e |
touch (dir .. "/file")
|
|
Packit |
437b5e |
posix.link (dir .. "/file", dir .. "/hard")
|
|
Packit |
437b5e |
posix.link ("no such destination", dir .. "/dangling", true)
|
|
Packit |
437b5e |
posix.mkfifo (dir .. "/fifo")
|
|
Packit |
437b5e |
|
|
Packit |
437b5e |
- after:
|
|
Packit |
437b5e |
rmtmp (dir)
|
|
Packit |
437b5e |
|
|
Packit |
437b5e |
|
|
Packit |
437b5e |
- describe chmod:
|
|
Packit |
437b5e |
- before:
|
|
Packit |
437b5e |
chmod, lstat = st.chmod, st.lstat
|
|
Packit |
437b5e |
chmod (dir .. "/file", bor (st.S_IRWXU, st.S_IRGRP, st.S_IXGRP))
|
|
Packit |
437b5e |
|
|
Packit |
437b5e |
- context with bad arguments: |
|
|
Packit |
437b5e |
badargs.diagnose (chmod, "(string, int)")
|
|
Packit |
437b5e |
|
|
Packit |
437b5e |
examples {
|
|
Packit |
437b5e |
["it diagnoses non-existent files"] = function ()
|
|
Packit |
437b5e |
expect (Emsg (chmod (dir .. "/not existing file", st.S_IRWXU))).
|
|
Packit |
437b5e |
to_contain "No such file or directory"
|
|
Packit |
437b5e |
end
|
|
Packit |
437b5e |
}
|
|
Packit |
437b5e |
|
|
Packit |
437b5e |
- it sets file mode:
|
|
Packit |
437b5e |
mode = bor (st.S_IRUSR, st.S_IWUSR, st.S_IXGRP, st.S_IROTH)
|
|
Packit |
437b5e |
chmod (dir .. "/file", mode)
|
|
Packit |
437b5e |
expect (band (lstat (dir .. "/file").st_mode, RWXALL)).to_be (mode)
|
|
Packit |
437b5e |
|
|
Packit |
437b5e |
|
|
Packit |
437b5e |
- describe lstat:
|
|
Packit |
437b5e |
- before:
|
|
Packit |
437b5e |
# choose a format without seconds, that won't cause a race condition
|
|
Packit |
437b5e |
fmt = "%b %d %H:%M"
|
|
Packit |
437b5e |
now = os.date (fmt)
|
|
Packit |
437b5e |
getegid, geteuid = posix.getegid, posix.geteuid
|
|
Packit |
437b5e |
|
|
Packit |
437b5e |
lstat = st.lstat
|
|
Packit |
437b5e |
|
|
Packit |
437b5e |
- context with bad arguments:
|
|
Packit |
437b5e |
badargs.diagnose (lstat, "(string)")
|
|
Packit |
437b5e |
|
|
Packit |
437b5e |
- it returns a PosixStat:
|
|
Packit |
437b5e |
expect (prototype (lstat (dir .. "/file"))).to_be "PosixStat"
|
|
Packit |
437b5e |
- it fetches the device id:
|
|
Packit |
437b5e |
dev = lstat (dir .. "/file").st_dev
|
|
Packit |
437b5e |
expect (type (dev)).to_be "number"
|
|
Packit |
437b5e |
expect (dev >= 0).to_be (true)
|
|
Packit |
437b5e |
expect (dev).to_be (lstat (dir).st_dev)
|
|
Packit |
437b5e |
- it fetches the file inode:
|
|
Packit |
437b5e |
ino = lstat (dir .. "/file").st_ino
|
|
Packit |
437b5e |
expect (type (ino)).to_be "number"
|
|
Packit |
437b5e |
expect (ino >= 0).to_be (true)
|
|
Packit |
437b5e |
expect (ino).to_be (lstat (dir .. "/hard").st_ino)
|
|
Packit |
437b5e |
expect (ino).not_to_be (lstat (dir .. "/soft").st_ino)
|
|
Packit |
437b5e |
- context with file mode:
|
|
Packit |
437b5e |
- it fetches the file access mode:
|
|
Packit |
437b5e |
mode = lstat (dir).st_mode
|
|
Packit |
437b5e |
expect (type (mode)).to_be "number"
|
|
Packit |
437b5e |
expect (band (mode, S_IRWXU)).to_be (S_IRWXU)
|
|
Packit |
437b5e |
- it recognises directories:
|
|
Packit |
437b5e |
expect (S_ISBLK (lstat (dir).st_mode)).to_be (0)
|
|
Packit |
437b5e |
expect (S_ISCHR (lstat (dir).st_mode)).to_be (0)
|
|
Packit |
437b5e |
expect (S_ISDIR (lstat (dir).st_mode)).not_to_be (0)
|
|
Packit |
437b5e |
expect (S_ISFIFO (lstat (dir).st_mode)).to_be (0)
|
|
Packit |
437b5e |
expect (S_ISREG (lstat (dir).st_mode)).to_be (0)
|
|
Packit |
437b5e |
expect (S_ISLNK (lstat (dir).st_mode)).to_be (0)
|
|
Packit |
437b5e |
expect (S_ISSOCK (lstat (dir).st_mode)).to_be (0)
|
|
Packit |
437b5e |
- it recognises fifos:
|
|
Packit |
437b5e |
expect (S_ISBLK (lstat (dir .. "/fifo").st_mode)).to_be (0)
|
|
Packit |
437b5e |
expect (S_ISCHR (lstat (dir .. "/fifo").st_mode)).to_be (0)
|
|
Packit |
437b5e |
expect (S_ISDIR (lstat (dir .. "/fifo").st_mode)).to_be (0)
|
|
Packit |
437b5e |
expect (S_ISFIFO (lstat (dir .. "/fifo").st_mode)).not_to_be (0)
|
|
Packit |
437b5e |
expect (S_ISREG (lstat (dir .. "/fifo").st_mode)).to_be (0)
|
|
Packit |
437b5e |
expect (S_ISLNK (lstat (dir .. "/fifo").st_mode)).to_be (0)
|
|
Packit |
437b5e |
expect (S_ISSOCK (lstat (dir .. "/fifo").st_mode)).to_be (0)
|
|
Packit |
437b5e |
- it recognises regular files:
|
|
Packit |
437b5e |
expect (S_ISBLK (lstat (dir .. "/file").st_mode)).to_be (0)
|
|
Packit |
437b5e |
expect (S_ISCHR (lstat (dir .. "/file").st_mode)).to_be (0)
|
|
Packit |
437b5e |
expect (S_ISDIR (lstat (dir .. "/file").st_mode)).to_be (0)
|
|
Packit |
437b5e |
expect (S_ISFIFO (lstat (dir .. "/file").st_mode)).to_be (0)
|
|
Packit |
437b5e |
expect (S_ISREG (lstat (dir .. "/file").st_mode)).not_to_be (0)
|
|
Packit |
437b5e |
expect (S_ISLNK (lstat (dir .. "/file").st_mode)).to_be (0)
|
|
Packit |
437b5e |
expect (S_ISSOCK (lstat (dir .. "/file").st_mode)).to_be (0)
|
|
Packit |
437b5e |
- it recognises soft links:
|
|
Packit |
437b5e |
expect (S_ISBLK (lstat (dir .. "/soft").st_mode)).to_be (0)
|
|
Packit |
437b5e |
expect (S_ISCHR (lstat (dir .. "/soft").st_mode)).to_be (0)
|
|
Packit |
437b5e |
expect (S_ISDIR (lstat (dir .. "/soft").st_mode)).to_be (0)
|
|
Packit |
437b5e |
expect (S_ISFIFO (lstat (dir .. "/soft").st_mode)).to_be (0)
|
|
Packit |
437b5e |
expect (S_ISREG (lstat (dir .. "/soft").st_mode)).to_be (0)
|
|
Packit |
437b5e |
expect (S_ISLNK (lstat (dir .. "/soft").st_mode)).not_to_be (0)
|
|
Packit |
437b5e |
expect (S_ISSOCK (lstat (dir .. "/soft").st_mode)).to_be (0)
|
|
Packit |
437b5e |
- it fetches the number of links:
|
|
Packit |
437b5e |
expect (lstat (dir .. "/file").st_nlink).to_be (2)
|
|
Packit |
437b5e |
expect (lstat (dir .. "/soft").st_nlink).to_be (1)
|
|
Packit |
437b5e |
expect (lstat (dir .. "/hard").st_nlink).
|
|
Packit |
437b5e |
to_be (lstat (dir .. "/file").st_nlink)
|
|
Packit |
437b5e |
expect (lstat (dir .. "/subdir").st_nlink).to_be (2)
|
|
Packit |
437b5e |
- it fetches the owner id:
|
|
Packit |
437b5e |
expect (lstat (dir .. "/file").st_uid).to_be (geteuid ())
|
|
Packit |
437b5e |
expect (lstat (dir .. "/subdir").st_uid).to_be (geteuid ())
|
|
Packit |
437b5e |
- it fetches the owner group id:
|
|
Packit |
437b5e |
expect (lstat (dir .. "/file").st_gid).to_be (getegid ())
|
|
Packit |
437b5e |
expect (lstat (dir .. "/subdir").st_gid).to_be (getegid ())
|
|
Packit |
437b5e |
- it fetches the device special file id:
|
|
Packit |
437b5e |
pending "mknod not yet bound"
|
|
Packit |
437b5e |
- it fetches the file size:
|
|
Packit |
437b5e |
# skip directory size, which is system dependent
|
|
Packit |
437b5e |
expect (lstat (dir .. "/file").st_size).to_be (0)
|
|
Packit |
437b5e |
expect (lstat (dir .. "/soft").st_size).to_be (string.len ("subdir"))
|
|
Packit |
437b5e |
expect (lstat (dir .. "/hard").st_size).
|
|
Packit |
437b5e |
to_be (lstat (dir .. "/file").st_size)
|
|
Packit |
437b5e |
- it fetches the file access time:
|
|
Packit |
437b5e |
expect (os.date (fmt, lstat (dir .. "/file").st_atime)).to_be (os.date (fmt))
|
|
Packit |
437b5e |
- it fetches the file modification time:
|
|
Packit |
437b5e |
expect (os.date (fmt, lstat (dir .. "/file").st_mtime)).to_be (now)
|
|
Packit |
437b5e |
- it fetches the file change time:
|
|
Packit |
437b5e |
expect (os.date (fmt, lstat (dir .. "/file").st_ctime)).to_be (now)
|
|
Packit |
437b5e |
- it fetches the device block size:
|
|
Packit |
437b5e |
blksize = lstat (dir .. "/file").st_blksize
|
|
Packit |
437b5e |
expect (type (blksize)).to_be "number"
|
|
Packit |
437b5e |
expect (blksize > 0).to_be (true)
|
|
Packit |
437b5e |
expect (blksize).to_be (lstat (dir .. "/hard").st_blksize)
|
|
Packit |
437b5e |
- it fetches the number of blocks:
|
|
Packit |
437b5e |
blocks = lstat (dir .. "/file").st_blocks
|
|
Packit |
437b5e |
expect (type (blocks)).to_be "number"
|
|
Packit |
437b5e |
expect (blocks >= 0).to_be (true)
|
|
Packit |
437b5e |
expect (blocks).to_be (lstat (dir .. "/hard").st_blocks)
|
|
Packit |
437b5e |
|
|
Packit |
437b5e |
|
|
Packit |
437b5e |
- describe mkdir:
|
|
Packit |
437b5e |
- before:
|
|
Packit |
437b5e |
dir = posix.mkdtemp (template)
|
|
Packit |
437b5e |
lstat, mkdir = st.lstat, st.mkdir
|
|
Packit |
437b5e |
|
|
Packit |
437b5e |
- after:
|
|
Packit |
437b5e |
rmtmp (dir)
|
|
Packit |
437b5e |
|
|
Packit |
437b5e |
- context with bad arguments:
|
|
Packit |
437b5e |
badargs.diagnose (mkdir, "(string, ?int)")
|
|
Packit |
437b5e |
|
|
Packit |
437b5e |
- it creates the named directory:
|
|
Packit |
437b5e |
expect (Emsg (mkdir (dir .. "/subdir"))).not_to_contain "exists"
|
|
Packit |
437b5e |
mode = lstat (dir .. "/subdir").st_mode
|
|
Packit |
437b5e |
expect (st.S_ISDIR (mode)).not_to_be (0)
|
|
Packit |
437b5e |
- it sets the new directory permissions:
|
|
Packit |
437b5e |
mkdir (dir .. "/subdir", S_IRWXU)
|
|
Packit |
437b5e |
mode = lstat (dir .. "/subdir").st_mode
|
|
Packit |
437b5e |
expect (band (mode, RWXALL)).to_be (S_IRWXU)
|
|
Packit |
437b5e |
- it diagnoses already existing directory:
|
|
Packit |
437b5e |
expect (Emsg (mkdir (dir, RWXALL))).to_contain "exists"
|
|
Packit |
437b5e |
|
|
Packit |
437b5e |
|
|
Packit |
437b5e |
- describe mkfifo:
|
|
Packit |
437b5e |
- before:
|
|
Packit |
437b5e |
dir = posix.mkdtemp (template)
|
|
Packit |
437b5e |
lstat, mkfifo = st.lstat, st.mkfifo
|
|
Packit |
437b5e |
|
|
Packit |
437b5e |
- after:
|
|
Packit |
437b5e |
rmtmp (dir)
|
|
Packit |
437b5e |
|
|
Packit |
437b5e |
- context with bad arguments:
|
|
Packit |
437b5e |
badargs.diagnose (mkfifo, "(string, ?int)")
|
|
Packit |
437b5e |
|
|
Packit |
437b5e |
- it creates the named fifo:
|
|
Packit |
437b5e |
expect (Emsg (mkfifo (dir .. "/fifo"))).not_to_contain "exists"
|
|
Packit |
437b5e |
mode = lstat (dir .. "/fifo").st_mode
|
|
Packit |
437b5e |
expect (st.S_ISFIFO (mode)).not_to_be (0)
|
|
Packit |
437b5e |
- it sets the new fifo permissions:
|
|
Packit |
437b5e |
mkfifo (dir .. "/fifo", S_IRWXU)
|
|
Packit |
437b5e |
mode = lstat (dir .. "/fifo").st_mode
|
|
Packit |
437b5e |
expect (band (mode, RWXALL)).to_be (S_IRWXU)
|
|
Packit |
437b5e |
- it diagnoses already existing fifo:
|
|
Packit |
437b5e |
expect (Emsg (mkfifo (dir, RWXALL))).to_contain "exists"
|
|
Packit |
437b5e |
|
|
Packit |
437b5e |
|
|
Packit |
437b5e |
- describe stat:
|
|
Packit |
437b5e |
- before:
|
|
Packit |
437b5e |
# choose a format without seconds, that won't cause a race condition
|
|
Packit |
437b5e |
fmt = "%b %d %H:%M"
|
|
Packit |
437b5e |
now = os.date (fmt)
|
|
Packit |
437b5e |
getegid, geteuid = posix.getegid, posix.geteuid
|
|
Packit |
437b5e |
|
|
Packit |
437b5e |
stat = st.stat
|
|
Packit |
437b5e |
|
|
Packit |
437b5e |
- context with bad arguments:
|
|
Packit |
437b5e |
badargs.diagnose (stat, "(string)")
|
|
Packit |
437b5e |
|
|
Packit |
437b5e |
- it returns a PosixStat:
|
|
Packit |
437b5e |
expect (prototype (stat (dir .. "/file"))).to_be "PosixStat"
|
|
Packit |
437b5e |
- it fetches the device id:
|
|
Packit |
437b5e |
dev = stat (dir .. "/file").st_dev
|
|
Packit |
437b5e |
expect (type (dev)).to_be "number"
|
|
Packit |
437b5e |
expect (dev >= 0).to_be (true)
|
|
Packit |
437b5e |
expect (dev).to_be (stat (dir).st_dev)
|
|
Packit |
437b5e |
- it fetches the file inode:
|
|
Packit |
437b5e |
ino = stat (dir .. "/file").st_ino
|
|
Packit |
437b5e |
expect (type (ino)).to_be "number"
|
|
Packit |
437b5e |
expect (ino >= 0).to_be (true)
|
|
Packit |
437b5e |
expect (ino).to_be (stat (dir .. "/hard").st_ino)
|
|
Packit |
437b5e |
expect (ino).not_to_be (stat (dir .. "/soft").st_ino)
|
|
Packit |
437b5e |
- context with file mode:
|
|
Packit |
437b5e |
- it fetches the file access mode:
|
|
Packit |
437b5e |
mode = stat (dir).st_mode
|
|
Packit |
437b5e |
expect (type (mode)).to_be "number"
|
|
Packit |
437b5e |
expect (band (mode, S_IRWXU)).to_be (S_IRWXU)
|
|
Packit |
437b5e |
- it recognises directories:
|
|
Packit |
437b5e |
expect (S_ISBLK (stat (dir).st_mode)).to_be (0)
|
|
Packit |
437b5e |
expect (S_ISCHR (stat (dir).st_mode)).to_be (0)
|
|
Packit |
437b5e |
expect (S_ISDIR (stat (dir).st_mode)).not_to_be (0)
|
|
Packit |
437b5e |
expect (S_ISFIFO (stat (dir).st_mode)).to_be (0)
|
|
Packit |
437b5e |
expect (S_ISREG (stat (dir).st_mode)).to_be (0)
|
|
Packit |
437b5e |
expect (S_ISLNK (stat (dir).st_mode)).to_be (0)
|
|
Packit |
437b5e |
expect (S_ISSOCK (stat (dir).st_mode)).to_be (0)
|
|
Packit |
437b5e |
- it recognises fifos:
|
|
Packit |
437b5e |
expect (S_ISBLK (stat (dir .. "/fifo").st_mode)).to_be (0)
|
|
Packit |
437b5e |
expect (S_ISCHR (stat (dir .. "/fifo").st_mode)).to_be (0)
|
|
Packit |
437b5e |
expect (S_ISDIR (stat (dir .. "/fifo").st_mode)).to_be (0)
|
|
Packit |
437b5e |
expect (S_ISFIFO (stat (dir .. "/fifo").st_mode)).not_to_be (0)
|
|
Packit |
437b5e |
expect (S_ISREG (stat (dir .. "/fifo").st_mode)).to_be (0)
|
|
Packit |
437b5e |
expect (S_ISLNK (stat (dir .. "/fifo").st_mode)).to_be (0)
|
|
Packit |
437b5e |
expect (S_ISSOCK (stat (dir .. "/fifo").st_mode)).to_be (0)
|
|
Packit |
437b5e |
- it recognises regular files:
|
|
Packit |
437b5e |
expect (S_ISBLK (stat (dir .. "/file").st_mode)).to_be (0)
|
|
Packit |
437b5e |
expect (S_ISCHR (stat (dir .. "/file").st_mode)).to_be (0)
|
|
Packit |
437b5e |
expect (S_ISDIR (stat (dir .. "/file").st_mode)).to_be (0)
|
|
Packit |
437b5e |
expect (S_ISFIFO (stat (dir .. "/file").st_mode)).to_be (0)
|
|
Packit |
437b5e |
expect (S_ISREG (stat (dir .. "/file").st_mode)).not_to_be (0)
|
|
Packit |
437b5e |
expect (S_ISLNK (stat (dir .. "/file").st_mode)).to_be (0)
|
|
Packit |
437b5e |
expect (S_ISSOCK (stat (dir .. "/file").st_mode)).to_be (0)
|
|
Packit |
437b5e |
- it recognises soft links:
|
|
Packit |
437b5e |
expect (S_ISBLK (stat (dir .. "/soft").st_mode)).to_be (0)
|
|
Packit |
437b5e |
expect (S_ISCHR (stat (dir .. "/soft").st_mode)).to_be (0)
|
|
Packit |
437b5e |
expect (S_ISDIR (stat (dir .. "/soft").st_mode)).not_to_be (0)
|
|
Packit |
437b5e |
expect (S_ISFIFO (stat (dir .. "/soft").st_mode)).to_be (0)
|
|
Packit |
437b5e |
expect (S_ISREG (stat (dir .. "/soft").st_mode)).to_be (0)
|
|
Packit |
437b5e |
expect (S_ISLNK (stat (dir .. "/soft").st_mode)).to_be (0)
|
|
Packit |
437b5e |
expect (S_ISSOCK (stat (dir .. "/soft").st_mode)).to_be (0)
|
|
Packit |
437b5e |
- it fetches the number of links:
|
|
Packit |
437b5e |
expect (stat (dir .. "/file").st_nlink).to_be (2)
|
|
Packit |
437b5e |
expect (stat (dir .. "/soft").st_nlink).
|
|
Packit |
437b5e |
to_be (stat (dir .. "/subdir").st_nlink)
|
|
Packit |
437b5e |
expect (stat (dir .. "/hard").st_nlink).
|
|
Packit |
437b5e |
to_be (stat (dir .. "/file").st_nlink)
|
|
Packit |
437b5e |
expect (stat (dir .. "/subdir").st_nlink).to_be (2)
|
|
Packit |
437b5e |
- it fetches the owner id:
|
|
Packit |
437b5e |
expect (stat (dir .. "/file").st_uid).to_be (geteuid ())
|
|
Packit |
437b5e |
expect (stat (dir .. "/subdir").st_uid).to_be (geteuid ())
|
|
Packit |
437b5e |
- it fetches the owner group id:
|
|
Packit |
437b5e |
expect (stat (dir .. "/file").st_gid).to_be (getegid ())
|
|
Packit |
437b5e |
expect (stat (dir .. "/subdir").st_gid).to_be (getegid ())
|
|
Packit |
437b5e |
- it fetches the device special file id:
|
|
Packit |
437b5e |
pending "mknod not yet bound"
|
|
Packit |
437b5e |
- it fetches the file size:
|
|
Packit |
437b5e |
# skip directory size, which is system dependent
|
|
Packit |
437b5e |
expect (stat (dir .. "/file").st_size).to_be (0)
|
|
Packit |
437b5e |
expect (stat (dir .. "/soft").st_size).not_to_be (string.len ("subdir"))
|
|
Packit |
437b5e |
expect (stat (dir .. "/hard").st_size).
|
|
Packit |
437b5e |
to_be (stat (dir .. "/file").st_size)
|
|
Packit |
437b5e |
- it fetches the file access time:
|
|
Packit |
437b5e |
expect (os.date (fmt, stat (dir .. "/file").st_atime)).to_be (os.date (fmt))
|
|
Packit |
437b5e |
- it fetches the file modification time:
|
|
Packit |
437b5e |
expect (os.date (fmt, stat (dir .. "/file").st_mtime)).to_be (now)
|
|
Packit |
437b5e |
- it fetches the file change time:
|
|
Packit |
437b5e |
expect (os.date (fmt, stat (dir .. "/file").st_ctime)).to_be (now)
|
|
Packit |
437b5e |
- it fetches the device block size:
|
|
Packit |
437b5e |
blksize = stat (dir .. "/file").st_blksize
|
|
Packit |
437b5e |
expect (type (blksize)).to_be "number"
|
|
Packit |
437b5e |
expect (blksize > 0).to_be (true)
|
|
Packit |
437b5e |
expect (blksize).to_be (stat (dir .. "/hard").st_blksize)
|
|
Packit |
437b5e |
- it fetches the number of blocks:
|
|
Packit |
437b5e |
blocks = stat (dir .. "/file").st_blocks
|
|
Packit |
437b5e |
expect (type (blocks)).to_be "number"
|
|
Packit |
437b5e |
expect (blocks >= 0).to_be (true)
|
|
Packit |
437b5e |
expect (blocks).to_be (stat (dir .. "/hard").st_blocks)
|
|
Packit |
437b5e |
|
|
Packit |
437b5e |
|
|
Packit |
437b5e |
- describe umask:
|
|
Packit |
437b5e |
- before:
|
|
Packit |
437b5e |
lstat, umask = st.lstat, st.umask
|
|
Packit |
437b5e |
newmask = band (st.S_IWGRP, st.S_IRWXO)
|
|
Packit |
437b5e |
origmask = umask (newmask)
|
|
Packit |
437b5e |
- after:
|
|
Packit |
437b5e |
umask (origmask)
|
|
Packit |
437b5e |
|
|
Packit |
437b5e |
- context with bad arguments:
|
|
Packit |
437b5e |
badargs.diagnose (umask, "(int)")
|
|
Packit |
437b5e |
|
|
Packit |
437b5e |
- it returns current umask:
|
|
Packit |
437b5e |
expect (umask (0)).to_be (newmask)
|
|
Packit |
437b5e |
expect (umask (newmask)).to_be (0)
|
|
Packit |
437b5e |
- it controls the mode of newly created files:
|
|
Packit |
437b5e |
all = bor (st.S_IRWXU, st.S_IRWXG, st.S_IRWXO)
|
|
Packit |
437b5e |
xxx, mask = dir .. "/xxx", bor (st.S_IRWXO, st.S_IWGRP, st.S_IXGRP)
|
|
Packit |
437b5e |
umask (mask)
|
|
Packit |
437b5e |
touch (xxx)
|
|
Packit |
437b5e |
expect (band (lstat (xxx).st_mode, all)).to_be (bor (st.S_IRUSR, st.S_IWUSR, st.S_IRGRP))
|
|
Packit |
437b5e |
os.remove (xxx)
|