|
Packit |
437b5e |
specify posix.stdlib:
|
|
Packit |
437b5e |
- before:
|
|
Packit |
437b5e |
stdlib = require "posix.stdlib"
|
|
Packit |
437b5e |
|
|
Packit |
437b5e |
|
|
Packit |
437b5e |
- describe abort:
|
|
Packit |
437b5e |
- context with bad arguments:
|
|
Packit |
437b5e |
badargs.diagnose (stdlib.abort, "()")
|
|
Packit |
437b5e |
|
|
Packit |
437b5e |
|
|
Packit |
437b5e |
- describe getenv:
|
|
Packit |
437b5e |
- before:
|
|
Packit |
437b5e |
getenv = stdlib.getenv
|
|
Packit |
437b5e |
|
|
Packit |
437b5e |
- context with bad arguments:
|
|
Packit |
437b5e |
badargs.diagnose (getenv, "(?string)")
|
|
Packit |
437b5e |
|
|
Packit |
437b5e |
- it fetches a table of process environment variables: |
|
|
Packit |
437b5e |
volatile = { _=true, CWD=true, LUA_PATH=true, PWD=true, SHLVL=true, }
|
|
Packit |
437b5e |
for k,v in pairs (getenv ()) do
|
|
Packit |
437b5e |
if not volatile[k] then
|
|
Packit |
437b5e |
expect (hell.spawn ('echo "' .. k .. '=$' .. k .. '"')).
|
|
Packit |
437b5e |
to_contain_output (k.."="..v)
|
|
Packit |
437b5e |
end
|
|
Packit |
437b5e |
end
|
|
Packit |
437b5e |
- it fetches a named process environment variable:
|
|
Packit |
437b5e |
expect (getenv "USER").to_be (cmd_output ('echo "$USER"'))
|
|
Packit |
437b5e |
expect (getenv "HOME").to_be (cmd_output ('echo "$HOME"'))
|
|
Packit |
437b5e |
expect (getenv "SHELL").to_be (cmd_output ('echo "$SHELL"'))
|
|
Packit |
437b5e |
- it returns nil for an absent environment setting:
|
|
Packit |
437b5e |
expect (getenv "very_unlikely_to_be_set").to_be (nil)
|
|
Packit |
437b5e |
|
|
Packit |
437b5e |
|
|
Packit |
437b5e |
- describe grantpt:
|
|
Packit |
437b5e |
- context with bad arguments:
|
|
Packit |
437b5e |
badargs.diagnose (stdlib.grantpt, "(int)")
|
|
Packit |
437b5e |
|
|
Packit |
437b5e |
|
|
Packit |
437b5e |
- describe mkdtemp:
|
|
Packit |
437b5e |
- before:
|
|
Packit |
437b5e |
st = require "posix.sys.stat"
|
|
Packit |
437b5e |
mkdtemp = stdlib.mkdtemp
|
|
Packit |
437b5e |
stat, IFMT, IFDIR, IRWXU = st.stat, st.S_IFMT, st.S_IFDIR, st.S_IRWXU
|
|
Packit |
437b5e |
IRWXA = bor (st.S_IRWXU, st.S_IRWXG, st.S_IRWXO)
|
|
Packit |
437b5e |
|
|
Packit |
437b5e |
- context with bad arguments:
|
|
Packit |
437b5e |
badargs.diagnose (mkdtemp, "(string)")
|
|
Packit |
437b5e |
|
|
Packit |
437b5e |
- it creates a temporary directory from a template:
|
|
Packit |
437b5e |
dir, errmsg = mkdtemp (template)
|
|
Packit |
437b5e |
expect (dir).not_to_be (nil)
|
|
Packit |
437b5e |
dirstat = stat (dir)
|
|
Packit |
437b5e |
expect (band (dirstat.st_mode, IFMT)).to_be (IFDIR)
|
|
Packit |
437b5e |
expect (band (dirstat.st_mode, IRWXA)).to_be (IRWXU)
|
|
Packit |
437b5e |
rmtmp (dir)
|
|
Packit |
437b5e |
|
|
Packit |
437b5e |
|
|
Packit |
437b5e |
- describe mkstemp:
|
|
Packit |
437b5e |
- before:
|
|
Packit |
437b5e |
fc = require "posix.fcntl"
|
|
Packit |
437b5e |
st = require "posix.sys.stat"
|
|
Packit |
437b5e |
unistd = require "posix.unistd"
|
|
Packit |
437b5e |
O_RDONLY, open = fc.O_RDONLY, fc.open
|
|
Packit |
437b5e |
mkstemp = stdlib.mkstemp
|
|
Packit |
437b5e |
close, isatty, read, write =
|
|
Packit |
437b5e |
unistd.close, unistd.isatty, unistd.read, unistd.write
|
|
Packit |
437b5e |
stat, IFMT, IFREG = st.stat, st.S_IFMT, st.S_IFREG
|
|
Packit |
437b5e |
IRW_U = bor (st.S_IRUSR, st.S_IWUSR)
|
|
Packit |
437b5e |
IRWXA = bor (st.S_IRWXU, st.S_IRWXG, st.S_IRWXO)
|
|
Packit |
437b5e |
fd, path = mkstemp (template)
|
|
Packit |
437b5e |
- after:
|
|
Packit |
437b5e |
close (fd)
|
|
Packit |
437b5e |
os.remove (path)
|
|
Packit |
437b5e |
|
|
Packit |
437b5e |
- context with bad arguments:
|
|
Packit |
437b5e |
badargs.diagnose (mkstemp, "(string)")
|
|
Packit |
437b5e |
|
|
Packit |
437b5e |
- it creates a temporary file from a template:
|
|
Packit |
437b5e |
expect (fd).not_to_be (nil)
|
|
Packit |
437b5e |
write (fd, "12345")
|
|
Packit |
437b5e |
expect (isatty (fd)).not_to_be (true)
|
|
Packit |
437b5e |
fstat = stat (path)
|
|
Packit |
437b5e |
expect (band (fstat.st_mode, IFMT)).to_be (IFREG)
|
|
Packit |
437b5e |
expect (band (fstat.st_mode, IRWXA)).to_be (IRW_U)
|
|
Packit |
437b5e |
expect (fstat.st_size).to_be (5)
|
|
Packit |
437b5e |
fd2 = open (path, O_RDONLY)
|
|
Packit |
437b5e |
expect (read (fd2, 5)).to_be "12345"
|
|
Packit |
437b5e |
close (fd2)
|
|
Packit |
437b5e |
- it creates a new temporary file on each call:
|
|
Packit |
437b5e |
fd2, another = mkstemp (template)
|
|
Packit |
437b5e |
expect (fd2).not_to_be (fd)
|
|
Packit |
437b5e |
expect (another).not_to_be (path)
|
|
Packit |
437b5e |
close (fd2)
|
|
Packit |
437b5e |
os.remove (another)
|
|
Packit |
437b5e |
|
|
Packit |
437b5e |
|
|
Packit |
437b5e |
- describe openpt:
|
|
Packit |
437b5e |
- before:
|
|
Packit |
437b5e |
fc = require "posix.fcntl"
|
|
Packit |
437b5e |
st = require "posix.sys.stat"
|
|
Packit |
437b5e |
close = require "posix.unistd".close
|
|
Packit |
437b5e |
grantpt, openpt, ptsname, unlockpt =
|
|
Packit |
437b5e |
stdlib.grantpt, stdlib.openpt, stdlib.ptsname, stdlib.unlockpt
|
|
Packit |
437b5e |
O_RDWR, O_NOCTTY, open = fc.O_RDWR, fc.O_NOCTTY, fc.open
|
|
Packit |
437b5e |
stat, IFMT, IFCHR = st.stat, st.S_IFMT, st.S_IFCHR
|
|
Packit |
437b5e |
|
|
Packit |
437b5e |
- context with bad arguments:
|
|
Packit |
437b5e |
badargs.diagnose (openpt, "(int)")
|
|
Packit |
437b5e |
|
|
Packit |
437b5e |
- it can create a pseudoterminal:
|
|
Packit |
437b5e |
masterfd = openpt (bor (O_RDWR, O_NOCTTY))
|
|
Packit |
437b5e |
expect (type (masterfd)).to_be "number"
|
|
Packit |
437b5e |
expect (masterfd > 0).to_be (true)
|
|
Packit |
437b5e |
expect (Emsg (grantpt (masterfd))).to_be ""
|
|
Packit |
437b5e |
expect (Emsg (unlockpt (masterfd))).to_be ""
|
|
Packit |
437b5e |
slavename = ptsname (masterfd)
|
|
Packit |
437b5e |
slavestat = stat (slavename)
|
|
Packit |
437b5e |
expect (band (slavestat.st_mode, IFMT)).to_be (IFCHR)
|
|
Packit |
437b5e |
slavefd = open (slavename, bor (O_RDWR, O_NOCTTY))
|
|
Packit |
437b5e |
expect (type (slavefd)).to_be "number"
|
|
Packit |
437b5e |
expect (slavefd > 0).to_be (true)
|
|
Packit |
437b5e |
close (slavefd)
|
|
Packit |
437b5e |
close (masterfd)
|
|
Packit |
437b5e |
|
|
Packit |
437b5e |
|
|
Packit |
437b5e |
- describe ptsname:
|
|
Packit |
437b5e |
- context with bad arguments:
|
|
Packit |
437b5e |
badargs.diagnose (stdlib.ptsname, "(int)")
|
|
Packit |
437b5e |
|
|
Packit |
437b5e |
|
|
Packit |
437b5e |
- describe realpath:
|
|
Packit |
437b5e |
- context with bad arguments:
|
|
Packit |
437b5e |
badargs.diagnose (stdlib.realpath, "(string)")
|
|
Packit |
437b5e |
|
|
Packit |
437b5e |
|
|
Packit |
437b5e |
- describe setenv:
|
|
Packit |
437b5e |
- before:
|
|
Packit |
437b5e |
getenv, setenv = stdlib.getenv, stdlib.setenv
|
|
Packit |
437b5e |
|
|
Packit |
437b5e |
- context with bad arguments:
|
|
Packit |
437b5e |
badargs.diagnose (stdlib.setenv, "(string, ?string, ?any)")
|
|
Packit |
437b5e |
|
|
Packit |
437b5e |
- it sets a new value in the process environment:
|
|
Packit |
437b5e |
setenv ("MYVAR", "123")
|
|
Packit |
437b5e |
expect (getenv "MYVAR").to_be "123"
|
|
Packit |
437b5e |
setenv ("MYVAR", nil)
|
|
Packit |
437b5e |
expect (getenv "MYVAR").to_be (nil)
|
|
Packit |
437b5e |
|
|
Packit |
437b5e |
|
|
Packit |
437b5e |
- describe unlockpt:
|
|
Packit |
437b5e |
- context with bad arguments:
|
|
Packit |
437b5e |
badargs.diagnose (stdlib.unlockpt, "(int)")
|