Skip to content

Commit

Permalink
chore(test): add tests for isatty terminal function
Browse files Browse the repository at this point in the history
  • Loading branch information
Tieske committed Mar 24, 2024
1 parent e0bb244 commit 32b4f3d
Show file tree
Hide file tree
Showing 2 changed files with 107 additions and 0 deletions.
13 changes: 13 additions & 0 deletions spec/04-term_helper.lua
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
-- sub-script executed for isatty test
local writefile = require("pl.utils").writefile
local isatty = require("system").isatty
assert(arg[1] == "--", "missing -- argument")
local tempfile = assert(arg[2], "missing tempfile argument")

-- print("my temp file: ", tempfile)

assert(writefile(tempfile, [[{
stdin = ]]..tostring(isatty(io.stdin))..[[,
stdout = ]]..tostring(isatty(io.stdout))..[[,
stderr = ]]..tostring(isatty(io.stderr))..[[,
}]]))
94 changes: 94 additions & 0 deletions spec/04-term_spec.lua
Original file line number Diff line number Diff line change
@@ -0,0 +1,94 @@
-- Import the library that contains the environment-related functions
local system = require("system")
require("spec.helpers")

describe("Terminal:", function()

describe("isatty()", function()

local newtmpfile = require("pl.path").tmpname

-- set each param to true to make it a tty, to false for a stream
local function getttyresults(sin, sout, serr)
assert(type(sin) == "boolean", "sin must be a boolean")
assert(type(sout) == "boolean", "sout must be a boolean")
assert(type(serr) == "boolean", "serr must be a boolean")

local tmpfile = "./spec/04-term_helper.output"
local execcmd = "lua ./spec/04-term_helper.lua -- " .. tmpfile

sin = sin and "" or 'echo "hello" | '
if system.windows then
sout = sout and "" or (" > " .. newtmpfile())
serr = serr and "" or (" 2> " .. newtmpfile())
else
sout = sout and "" or (" > " .. newtmpfile())
serr = serr and "" or (" 2> " .. newtmpfile())
end

local cmd = sin .. execcmd .. sout .. serr

-- print("cmd: ", cmd)

os.remove(tmpfile)
assert(os.execute(cmd))
local result = assert(require("pl.utils").readfile(tmpfile))
os.remove(tmpfile)

-- print("result: ", result)

return assert(load("return " .. result))()
end



it("returns true for all if a terminal", function()
assert.are.same(
{
stdin = true,
stdout = true,
stderr = true,
},
getttyresults(true, true, true)
)
end)


it("returns false for stdin if not a terminal", function()
assert.are.same(
{
stdin = false,
stdout = true,
stderr = true,
},
getttyresults(false, true, true)
)
end)


it("returns false for stdout if not a terminal", function()
assert.are.same(
{
stdin = true,
stdout = false,
stderr = true,
},
getttyresults(true, false, true)
)
end)


it("returns false for stderr if not a terminal", function()
assert.are.same(
{
stdin = true,
stdout = true,
stderr = false,
},
getttyresults(true, true, false)
)
end)

end)

end)

0 comments on commit 32b4f3d

Please sign in to comment.