aboutsummaryrefslogtreecommitdiff
path: root/test/helpers.lua
diff options
context:
space:
mode:
authorZyX <kp-pav@yandex.ru>2017-03-17 00:04:03 +0300
committerZyX <kp-pav@yandex.ru>2017-03-19 14:13:21 +0300
commit0320a58082f922b54cb36ce57064c07a9e781aa8 (patch)
tree74f18e6450124946c5e7b1c8708232241fe55f01 /test/helpers.lua
parent65c41e6c2b5015ff0b0485aadd362c0883a02a85 (diff)
downloadrneovim-0320a58082f922b54cb36ce57064c07a9e781aa8.tar.gz
rneovim-0320a58082f922b54cb36ce57064c07a9e781aa8.tar.bz2
rneovim-0320a58082f922b54cb36ce57064c07a9e781aa8.zip
functests: Check that `-s` works as expected
Diffstat (limited to 'test/helpers.lua')
-rw-r--r--test/helpers.lua39
1 files changed, 37 insertions, 2 deletions
diff --git a/test/helpers.lua b/test/helpers.lua
index e5224349c2..6ee95a4396 100644
--- a/test/helpers.lua
+++ b/test/helpers.lua
@@ -1,6 +1,38 @@
local assert = require('luassert')
local lfs = require('lfs')
+local quote_me = '[^.%w%+%-%@%_%/]' -- complement (needn't quote)
+local function shell_quote(str)
+ if string.find(str, quote_me) or str == '' then
+ return '"' .. str:gsub('[$%%"\\]', '\\%0') .. '"'
+ else
+ return str
+ end
+end
+
+local function argss_to_cmd(...)
+ local cmd = ''
+ for i = 1, select('#', ...) do
+ local arg = select(i, ...)
+ if type(arg) == 'string' then
+ cmd = cmd .. ' ' ..shell_quote(arg)
+ else
+ for _, arg in ipairs(arg) do
+ cmd = cmd .. ' ' .. shell_quote(arg)
+ end
+ end
+ end
+ return cmd
+end
+
+local function popen_r(...)
+ return io.popen(argss_to_cmd(...), 'r')
+end
+
+local function popen_w(...)
+ return io.popen(argss_to_cmd(...), 'w')
+end
+
local check_logs_useless_lines = {
['Warning: noted but unhandled ioctl']=1,
['could cause spurious value errors to appear']=2,
@@ -95,7 +127,7 @@ local uname = (function()
return platform
end
- local status, f = pcall(io.popen, "uname -s")
+ local status, f = pcall(popen_r, 'uname', '-s')
if status then
platform = f:read("*l")
f:close()
@@ -215,7 +247,7 @@ local function check_cores(app)
end
local function which(exe)
- local pipe = io.popen('which ' .. exe, 'r')
+ local pipe = popen_r('which', exe)
local ret = pipe:read('*a')
pipe:close()
if ret == '' then
@@ -238,4 +270,7 @@ return {
check_cores = check_cores,
hasenv = hasenv,
which = which,
+ argss_to_cmd = argss_to_cmd,
+ popen_r = popen_r,
+ popen_w = popen_w,
}