specify posix.unistd:
- before: |
pwd = require "posix.pwd"
unistd = require "posix.unistd"
-- Assume $USER is the process owner, egid is gid and euid is uid
ids = pwd.getpwnam (os.getenv "USER")
- describe exec:
- before:
exec = unistd.exec
- context with bad arguments:
badargs.diagnose (exec, "(string, table)")
- describe execp:
- before: |
bit = require "bit32"
fcntl = require "posix.fcntl"
syswait = require "posix.sys.wait"
execp = unistd.execp
dup2, fork, wait = unistd.dup2, unistd.fork, syswait.wait
open, O_WRONLY, O_APPEND = fcntl.open, fcntl.O_WRONLY, fcntl.O_APPEND
P_CHILD = 0
-- redirect output to /dev/null
function child (...)
quietly = open ("/dev/null", bit.bor (O_WRONLY, O_APPEND))
dup2 (quietly, 1)
execp (...)
expect ("not reached").to_be (true)
end
- context with bad arguments:
badargs.diagnose (execp, "(string, table)")
- it overwrites the running process with a shell invocation:
process = fork ()
if process == P_CHILD then
child ("date", {"+[%c]"})
else
p, msg, ret = wait (process)
expect (table.concat {msg, " ", tostring (ret)}).to_be "exited 0"
end
- "it sets argv[0]":
- describe getegid:
- before:
getegid = unistd.getegid
- context with bad arguments:
badargs.diagnose (getegid, "()")
- it returns the effective group id:
expect (getegid ()).to_be (ids.pw_gid)
- describe geteuid:
- before:
geteuid = unistd.geteuid
- context with bad arguments:
badargs.diagnose (geteuid, "()")
- it returns the effective user id:
expect (geteuid ()).to_be (ids.pw_uid)
- describe getgid:
- before:
getgid = unistd.getgid
- context with bad arguments:
badargs.diagnose (getgid, "()")
- it returns the group id:
expect (getgid ()).to_be (ids.pw_gid)
- describe gethostid:
- before:
gethostid = unistd.gethostid
- context with bad arguments:
badargs.diagnose (gethostid, "()")
- it returns an integer:
expect (math.floor (gethostid ())).to_be (gethostid ())
- describe getuid:
- before:
getuid = unistd.getuid
- context with bad arguments:
badargs.diagnose (getuid, "()")
- it returns the user id:
expect (getuid ()).to_be (ids.pw_uid)
- describe getpgrp:
- before:
getpgrp = unistd.getpgrp
- context with bad arguments:
badargs.diagnose (getpgrp, "()")
- it returns a positive integer:
expect (math.floor (getpgrp ())).to_be (getpgrp ())
expect (getpgrp () > 0).to_be (true)
- describe getpid:
- before:
getpid = unistd.getpid
- context with bad arguments:
badargs.diagnose (getpid, "()")
- it returns the a positive integer:
expect (math.floor (getpid ())).to_be (getpid ())
expect (getpid () > 0).to_be (true)
- describe getppid:
- before:
getppid = unistd.getppid
- context with bad arguments:
badargs.diagnose (getppid, "()")
- it returns a positive integer:
expect (math.floor (getppid ())).to_be (getppid ())
expect (getppid () > 0).to_be (true)
- it does not return the process id:
expect (getppid ()).not_to_be (unistd.getpid ())
- describe pathconf:
- before:
pathconf = unistd.pathconf
- context with bad arguments:
badargs.diagnose (pathconf, "(string, int)")
- it returns whether chown can be used on the given file:
expect (type (pathconf (".", unistd._PC_CHOWN_RESTRICTED))).to_be "number"
- it fetches the maximum number of links to the given file:
expect (type (pathconf (".", unistd._PC_LINK_MAX))).to_be "number"
- it fetches the maximum formatted line input length for a tty:
expect (type (pathconf (".", unistd._PC_MAX_CANON))).to_be "number"
- it fetches the maximum raw line input length for a tty:
expect (type (pathconf (".", unistd._PC_MAX_INPUT))).to_be "number"
- it fetches the maximum filename length in this directory:
expect (type (pathconf (".", unistd._PC_NAME_MAX))).to_be "number"
- it fetches whether accessing overlong filenames is an error:
expect (type (pathconf (".", unistd._PC_NO_TRUNC))).to_be "number"
- it fetches the maximum relative path length from this directory:
expect (type (pathconf (".", unistd._PC_PATH_MAX))).to_be "number"
- it fetches the size of the pipe buffer:
expect (type (pathconf (".", unistd._PC_PIPE_BUF))).to_be "number"
- it fetches whether special character processing can be disabled:
expect (type (pathconf (".", unistd._PC_VDISABLE))).to_be "number"
- describe sysconf:
- before:
sysconf = unistd.sysconf
- context with bad arguments:
badargs.diagnose (sysconf, "(int)")
- it fetches the maximum number of exec arguments:
expect (type (sysconf (unistd._SC_ARG_MAX))).to_be "number"
- it fetches the number processes per user:
expect (type (sysconf (unistd._SC_CHILD_MAX))).to_be "number"
- it fetches the number of clock ticks per second:
expect (type (sysconf (unistd._SC_CLK_TCK))).to_be "number"
- it fetches the job control version:
expect (type (sysconf (unistd._SC_JOB_CONTROL))).to_be "number"
- it fetches the maximum number of groups:
expect (type (sysconf (unistd._SC_NGROUPS_MAX))).to_be "number"
- it fetches the maximum number of open descriptors:
expect (type (sysconf (unistd._SC_OPEN_MAX))).to_be "number"
- it fetches the number of saved ids:
expect (type (sysconf (unistd._SC_SAVED_IDS))).to_be "number"
- it fetches the maximum number of open streams:
expect (type (sysconf (unistd._SC_STREAM_MAX))).to_be "number"
- it fetches the maximum length of a timezone name:
expect (type (sysconf (unistd._SC_TZNAME_MAX))).to_be "number"
- it fetches the POSIX.1 version:
expect (type (sysconf (unistd._SC_VERSION))).to_be "number"