summaryrefslogtreecommitdiff
path: root/tests/modules/stdin/test.lua
diff options
context:
space:
mode:
authorSaikari <[email protected]>2026-02-01 14:20:33 +0300
committerSaikari <[email protected]>2026-02-01 14:20:33 +0300
commit5313286703675d51f54cde0a8d0ea382619ae84c (patch)
treec09c9c70965b2cd473a1e37ee4dd2af1c314aaf9 /tests/modules/stdin/test.lua
parent554f7a23f12ba4df73c23de64d52855e82a37088 (diff)
refactor: restructure test function and improve output handling
Diffstat (limited to 'tests/modules/stdin/test.lua')
-rw-r--r--tests/modules/stdin/test.lua137
1 files changed, 69 insertions, 68 deletions
diff --git a/tests/modules/stdin/test.lua b/tests/modules/stdin/test.lua
index 72551ed9c..c58e0705d 100644
--- a/tests/modules/stdin/test.lua
+++ b/tests/modules/stdin/test.lua
@@ -1,75 +1,76 @@
-target("test")
- set_kind("phony")
- on_run(function (target)
- local xmake = path.unix(os.programfile())
- if os.host() == "windows" then
- xmake = xmake:gsub("/", "\\")
- end
+function main(t)
+local xmake = path.unix(os.programfile())
+if os.host() == "windows" then
+ xmake = xmake:gsub("/", "\\")
+end
- local function test_shell(name, cmd, expect)
- print("testing " .. name .. ": " .. cmd)
- local outfile = os.tmpfile()
- local errfile = os.tmpfile()
- local full_cmd = string.format("%s > \"%s\" 2> \"%s\"", cmd, outfile, errfile)
- local ret = -1
- try {
- function ()
- if os.host() ~= "windows" then
- ret = os.execv("sh", {"-c", full_cmd})
- else
- ret = os.exec(full_cmd)
- end
- end
- }
- local out = ""
- if os.isfile(outfile) then
- out = io.readfile(outfile)
- if out and out:find("\0", 1, true) then
- out = out:gsub("\0", "")
- end
- end
- local err = ""
- if os.isfile(errfile) then
- err = io.readfile(errfile)
- end
- if out:find(expect) then
- print(" -> passed")
+local function test_shell(name, cmd, expect)
+ print("testing " .. name .. ": " .. cmd)
+ local outfile = os.tmpfile()
+ local errfile = os.tmpfile()
+ local full_cmd = string.format("%s > \"%s\" 2> \"%s\"", cmd, outfile, errfile)
+ local ret = -1
+ try {
+ function ()
+ if os.host() ~= "windows" then
+ ret = os.execv("sh", {"-c", full_cmd})
else
- print(" -> failed")
- raise("[test_stdin]: Test failed! Expect: ", expect)
+ ret = os.exec(full_cmd)
end
- print(" out: " .. (out or ""))
- print(" err: " .. (err or ""))
- os.tryrm(outfile)
- os.tryrm(errfile)
end
+ }
+ local out = ""
+ if os.isfile(outfile) then
+ out = io.readfile(outfile)
+ if out and out:find("\0", 1, true) then
+ out = out:gsub("\0", "")
+ end
+ end
+ local err = ""
+ if os.isfile(errfile) then
+ err = io.readfile(errfile)
+ end
+ local passed = out:find(expect)
+ if passed then
+ print(" -> passed")
+ else
+ print(" -> failed")
+ end
+ print(" out: " .. (out or ""))
+ print(" err: " .. (err or ""))
+ if not passed then
+ raise("[test_stdin]: Test failed! Expect: ", expect)
+ end
+ os.tryrm(outfile)
+ os.tryrm(errfile)
+end
- local pwsh = ""
- if os.host() == "windows" then
- -- Test cmd
- test_shell("cmd_single", string.format('cmd /c echo "print(\'hello_cmd\')" | %s l --stdin', xmake), "hello_cmd")
- test_shell("cmd_multi", string.format('cmd /c echo "print(\'line1\')\\nprint(\'line2\')" | %s l --stdin', xmake), "line1[\r\n]+line2")
- -- Test powershell (if available)
- local pwsh = "powershell"
- if os.exec("pwsh -v") == 0 then
- pwsh = "pwsh"
- end
- test_shell("pwsh_single", string.format('%s -c "echo \\"print(\'hello_pwsh\')\\" | %s l --stdin"', pwsh, xmake), "hello_pwsh")
- test_shell("pwsh_multi", string.format('%s -c "echo \\"print(\'pline1\')\\nprint(\'pline2\')\\" | %s l --stdin"', pwsh, xmake), "pline1[\r\n]+pline2")
- else
- -- Linux/MacOS
- local pwsh = ""
- try { function () os.iorun("pwsh -v"); pwsh = "pwsh" end }
- if pwsh == "" then
- try { function () os.iorun("powershell -v"); pwsh = "powershell" end }
- end
+local pwsh = ""
+if os.host() == "windows" then
+ -- Test cmd
+ test_shell("cmd_single", string.format('cmd /c echo "print(\'hello_cmd\')" | %s l --stdin', xmake), "hello_cmd")
+ test_shell("cmd_multi", string.format('cmd /c echo "print(\'line1\')\\nprint(\'line2\')" | %s l --stdin', xmake), "line1[\r\n]+line2")
+ -- Test powershell (if available)
+ local pwsh = "powershell"
+ if os.exec("pwsh -v") == 0 then
+ pwsh = "pwsh"
+ end
+ test_shell("pwsh_single", string.format('%s -c "echo \\"print(\'hello_pwsh\')\\" | %s l --stdin"', pwsh, xmake), "hello_pwsh")
+ test_shell("pwsh_multi", string.format('%s -c "echo \\"print(\'pline1\')\\nprint(\'pline2\')\\" | %s l --stdin"', pwsh, xmake), "pline1[\r\n]+pline2")
+else
+ -- Linux/MacOS
+ local pwsh = ""
+ try { function () os.iorun("pwsh -v"); pwsh = "pwsh" end }
+ if pwsh == "" then
+ try { function () os.iorun("powershell -v"); pwsh = "powershell" end }
+ end
- if pwsh ~= "" then
- test_shell("pwsh_single", string.format('%s -c "echo \\"print(\'hello_pwsh\')\\" | %s l --stdin"', pwsh, xmake), "hello_pwsh")
- test_shell("pwsh_multi", string.format('%s -c "echo \\"print(\'pline1\')\\nprint(\'pline2\')\\" | %s l --stdin"', pwsh, xmake), "pline1[\r\n]+pline2")
- end
+ if pwsh ~= "" then
+ test_shell("pwsh_single", string.format('%s -c "echo \\"print(\'hello_pwsh\')\\" | %s l --stdin"', pwsh, xmake), "hello_pwsh")
+ test_shell("pwsh_multi", string.format('%s -c "echo \\"print(\'pline1\')\\nprint(\'pline2\')\\" | %s l --stdin"', pwsh, xmake), "pline1[\r\n]+pline2")
+ end
- test_shell("sh_single", string.format('echo "print(\'hello_sh\')" | %s l --stdin', xmake), "hello_sh")
- test_shell("sh_multi", string.format('printf "print(\'shell_line1\')\\nprint(\'shell_line2\')" | %s l --stdin', xmake), "shell_line1[\r\n]+shell_line2")
- end
- end)
+ test_shell("sh_single", string.format('echo "print(\'hello_sh\')" | %s l --stdin', xmake), "hello_sh")
+ test_shell("sh_multi", string.format('printf "print(\'shell_line1\')\\nprint(\'shell_line2\')" | %s l --stdin', xmake), "shell_line1[\r\n]+shell_line2")
+end
+end