mirror of
https://github.com/neovim/neovim.git
synced 2025-10-26 12:27:24 +00:00
test: simplify platform detection (#21020)
Extend the capabilities of is_os to detect more platforms such as
freebsd and openbsd. Also remove `iswin()` helper function as it can be
replaced by `is_os("win")`.
This commit is contained in:
@@ -71,13 +71,13 @@ describe("backtick expansion", function()
|
||||
end)
|
||||
|
||||
it("with default 'shell'", function()
|
||||
if helpers.iswin() then
|
||||
if helpers.is_os('win') then
|
||||
command(":silent args `dir /b *2`")
|
||||
else
|
||||
command(":silent args `echo ***2`")
|
||||
end
|
||||
eq({ "file2", }, eval("argv()"))
|
||||
if helpers.iswin() then
|
||||
if helpers.is_os('win') then
|
||||
command(":silent args `dir /s/b *4`")
|
||||
eq({ "subdir\\file4", }, eval("map(argv(), 'fnamemodify(v:val, \":.\")')"))
|
||||
else
|
||||
|
||||
@@ -1,15 +1,16 @@
|
||||
local helpers = require('test.functional.helpers')(after_each)
|
||||
local eq, clear, call, iswin, write_file, command =
|
||||
helpers.eq, helpers.clear, helpers.call, helpers.iswin, helpers.write_file,
|
||||
local eq, clear, call, write_file, command =
|
||||
helpers.eq, helpers.clear, helpers.call, helpers.write_file,
|
||||
helpers.command
|
||||
local exc_exec = helpers.exc_exec
|
||||
local eval = helpers.eval
|
||||
local is_os = helpers.is_os
|
||||
|
||||
describe('executable()', function()
|
||||
before_each(clear)
|
||||
|
||||
it('returns 1 for commands in $PATH', function()
|
||||
local exe = iswin() and 'ping' or 'ls'
|
||||
local exe = is_os('win') and 'ping' or 'ls'
|
||||
eq(1, call('executable', exe))
|
||||
command('let $PATH = fnamemodify("./test/functional/fixtures/bin", ":p")')
|
||||
eq(1, call('executable', 'null'))
|
||||
@@ -17,7 +18,7 @@ describe('executable()', function()
|
||||
eq(1, call('executable', 'false'))
|
||||
end)
|
||||
|
||||
if iswin() then
|
||||
if is_os('win') then
|
||||
it('exepath respects shellslash', function()
|
||||
command('let $PATH = fnamemodify("./test/functional/fixtures/bin", ":p")')
|
||||
eq([[test\functional\fixtures\bin\null.CMD]], call('fnamemodify', call('exepath', 'null'), ':.'))
|
||||
@@ -56,8 +57,8 @@ describe('executable()', function()
|
||||
-- Some executable in build/bin/, *not* in $PATH nor CWD.
|
||||
local sibling_exe = 'printargs-test'
|
||||
-- Windows: siblings are in Nvim's "pseudo-$PATH".
|
||||
local expected = iswin() and 1 or 0
|
||||
if iswin() then
|
||||
local expected = is_os('win') and 1 or 0
|
||||
if is_os('win') then
|
||||
eq('arg1=lemon;arg2=sky;arg3=tree;',
|
||||
call('system', sibling_exe..' lemon sky tree'))
|
||||
end
|
||||
@@ -69,7 +70,7 @@ describe('executable()', function()
|
||||
clear()
|
||||
write_file('Xtest_not_executable', 'non-executable file')
|
||||
write_file('Xtest_executable', 'executable file (exec-bit set)')
|
||||
if not iswin() then -- N/A for Windows.
|
||||
if not is_os('win') then -- N/A for Windows.
|
||||
call('system', {'chmod', '-x', 'Xtest_not_executable'})
|
||||
call('system', {'chmod', '+x', 'Xtest_executable'})
|
||||
end
|
||||
@@ -90,14 +91,17 @@ describe('executable()', function()
|
||||
end)
|
||||
|
||||
it('set, qualified as a path', function()
|
||||
local expected = iswin() and 0 or 1
|
||||
local expected = is_os('win') and 0 or 1
|
||||
eq(expected, call('executable', './Xtest_executable'))
|
||||
end)
|
||||
end)
|
||||
end)
|
||||
|
||||
describe('executable() (Windows)', function()
|
||||
if not iswin() then return end -- N/A for Unix.
|
||||
if not is_os('win') then
|
||||
pending('N/A for non-windows')
|
||||
return
|
||||
end
|
||||
|
||||
local exts = {'bat', 'exe', 'com', 'cmd'}
|
||||
setup(function()
|
||||
|
||||
@@ -8,7 +8,7 @@ local funcs = helpers.funcs
|
||||
local Screen = require('test.functional.ui.screen')
|
||||
local command = helpers.command
|
||||
local feed = helpers.feed
|
||||
local iswin = helpers.iswin
|
||||
local is_os = helpers.is_os
|
||||
|
||||
describe('execute()', function()
|
||||
before_each(clear)
|
||||
@@ -265,7 +265,7 @@ describe('execute()', function()
|
||||
-- This deviates from vim behavior, but is consistent
|
||||
-- with how nvim currently displays the output.
|
||||
it('captures shell-command output', function()
|
||||
local win_lf = iswin() and '\13' or ''
|
||||
local win_lf = is_os('win') and '\13' or ''
|
||||
eq('\n:!echo foo\r\n\nfoo'..win_lf..'\n', funcs.execute('!echo foo'))
|
||||
end)
|
||||
|
||||
|
||||
@@ -1,19 +1,20 @@
|
||||
local helpers = require('test.functional.helpers')(after_each)
|
||||
local eq, clear, call, iswin =
|
||||
helpers.eq, helpers.clear, helpers.call, helpers.iswin
|
||||
local eq, clear, call =
|
||||
helpers.eq, helpers.clear, helpers.call
|
||||
local command = helpers.command
|
||||
local exc_exec = helpers.exc_exec
|
||||
local matches = helpers.matches
|
||||
local is_os = helpers.is_os
|
||||
|
||||
describe('exepath()', function()
|
||||
before_each(clear)
|
||||
|
||||
it('returns 1 for commands in $PATH', function()
|
||||
local exe = iswin() and 'ping' or 'ls'
|
||||
local ext_pat = iswin() and '%.EXE$' or '$'
|
||||
local exe = is_os('win') and 'ping' or 'ls'
|
||||
local ext_pat = is_os('win') and '%.EXE$' or '$'
|
||||
matches(exe .. ext_pat, call('exepath', exe))
|
||||
command('let $PATH = fnamemodify("./test/functional/fixtures/bin", ":p")')
|
||||
ext_pat = iswin() and '%.CMD$' or '$'
|
||||
ext_pat = is_os('win') and '%.CMD$' or '$'
|
||||
matches('null' .. ext_pat, call('exepath', 'null'))
|
||||
matches('true' .. ext_pat, call('exepath', 'true'))
|
||||
matches('false' .. ext_pat, call('exepath', 'false'))
|
||||
@@ -30,7 +31,7 @@ describe('exepath()', function()
|
||||
end
|
||||
end)
|
||||
|
||||
if iswin() then
|
||||
if is_os('win') then
|
||||
it('append extension if omitted', function()
|
||||
local filename = 'cmd'
|
||||
local pathext = '.exe'
|
||||
|
||||
@@ -1,12 +1,12 @@
|
||||
local helpers = require('test.functional.helpers')(after_each)
|
||||
local clear = helpers.clear
|
||||
local eq = helpers.eq
|
||||
local iswin = helpers.iswin
|
||||
local fnamemodify = helpers.funcs.fnamemodify
|
||||
local getcwd = helpers.funcs.getcwd
|
||||
local command = helpers.command
|
||||
local write_file = helpers.write_file
|
||||
local alter_slashes = helpers.alter_slashes
|
||||
local is_os = helpers.is_os
|
||||
|
||||
local function eq_slashconvert(expected, got)
|
||||
eq(alter_slashes(expected), alter_slashes(got))
|
||||
@@ -27,7 +27,7 @@ describe('fnamemodify()', function()
|
||||
local root = helpers.pathroot()
|
||||
eq(root, fnamemodify([[/]], ':p:h'))
|
||||
eq(root, fnamemodify([[/]], ':p'))
|
||||
if iswin() then
|
||||
if is_os('win') then
|
||||
eq(root, fnamemodify([[\]], ':p:h'))
|
||||
eq(root, fnamemodify([[\]], ':p'))
|
||||
command('set shellslash')
|
||||
@@ -114,7 +114,7 @@ describe('fnamemodify()', function()
|
||||
it('handles shell escape', function()
|
||||
local expected
|
||||
|
||||
if iswin() then
|
||||
if is_os('win') then
|
||||
-- we expand with double-quotes on Windows
|
||||
expected = [["hello there! quote ' newline]] .. '\n' .. [["]]
|
||||
else
|
||||
|
||||
@@ -9,12 +9,12 @@ local helpers = require('test.functional.helpers')(after_each)
|
||||
|
||||
local clear = helpers.clear
|
||||
local eval = helpers.eval
|
||||
local iswin = helpers.iswin
|
||||
local matches = helpers.matches
|
||||
local is_os = helpers.is_os
|
||||
|
||||
before_each(clear)
|
||||
|
||||
it('windowsversion()', function()
|
||||
clear()
|
||||
matches(iswin() and '^%d+%.%d+$' or '^$', eval('windowsversion()'))
|
||||
matches(is_os('win') and '^%d+%.%d+$' or '^$', eval('windowsversion()'))
|
||||
end)
|
||||
|
||||
@@ -2,7 +2,7 @@ local helpers = require('test.functional.helpers')(after_each)
|
||||
local eq = helpers.eq
|
||||
local clear = helpers.clear
|
||||
local funcs = helpers.funcs
|
||||
local iswin = helpers.iswin
|
||||
local is_os = helpers.is_os
|
||||
|
||||
describe('has()', function()
|
||||
before_each(clear)
|
||||
@@ -51,7 +51,7 @@ describe('has()', function()
|
||||
end)
|
||||
|
||||
it('"unnamedplus"', function()
|
||||
if (not iswin()) and funcs.has("clipboard") == 1 then
|
||||
if (not is_os('win')) and funcs.has("clipboard") == 1 then
|
||||
eq(1, funcs.has("unnamedplus"))
|
||||
else
|
||||
eq(0, funcs.has("unnamedplus"))
|
||||
|
||||
@@ -3,7 +3,7 @@ local eq = helpers.eq
|
||||
local ok = helpers.ok
|
||||
local call = helpers.call
|
||||
local clear = helpers.clear
|
||||
local iswin = helpers.iswin
|
||||
local is_os = helpers.is_os
|
||||
|
||||
describe('hostname()', function()
|
||||
before_each(clear)
|
||||
@@ -13,8 +13,8 @@ describe('hostname()', function()
|
||||
ok(string.len(actual) > 0)
|
||||
if call('executable', 'hostname') == 1 then
|
||||
local expected = string.gsub(call('system', 'hostname'), '[\n\r]', '')
|
||||
eq((iswin() and expected:upper() or expected),
|
||||
(iswin() and actual:upper() or actual))
|
||||
eq((is_os('win') and expected:upper() or expected),
|
||||
(is_os('win') and actual:upper() or actual))
|
||||
end
|
||||
end)
|
||||
end)
|
||||
|
||||
@@ -5,7 +5,7 @@ local eval, eq = helpers.eval, helpers.eq
|
||||
local command = helpers.command
|
||||
local nvim = helpers.nvim
|
||||
local exc_exec = helpers.exc_exec
|
||||
local iswin = helpers.iswin
|
||||
local is_os = helpers.is_os
|
||||
|
||||
describe('msgpack*() functions', function()
|
||||
before_each(clear)
|
||||
@@ -467,7 +467,7 @@ describe('msgpackparse() function', function()
|
||||
eval(cmd)
|
||||
eval(cmd) -- do it again (try to force segfault)
|
||||
local api_info = eval(cmd) -- do it again
|
||||
if iswin() then
|
||||
if is_os('win') then
|
||||
helpers.assert_alive()
|
||||
pending('msgpackparse() has a bug on windows')
|
||||
return
|
||||
|
||||
@@ -1,11 +1,11 @@
|
||||
local helpers = require('test.functional.helpers')(after_each)
|
||||
local eq, neq, eval = helpers.eq, helpers.neq, helpers.eval
|
||||
local clear, funcs, meths = helpers.clear, helpers.funcs, helpers.meths
|
||||
local iswin = helpers.iswin
|
||||
local ok = helpers.ok
|
||||
local matches = helpers.matches
|
||||
local pcall_err = helpers.pcall_err
|
||||
local mkdir = helpers.mkdir
|
||||
local is_os = helpers.is_os
|
||||
|
||||
local function clear_serverlist()
|
||||
for _, server in pairs(funcs.serverlist()) do
|
||||
@@ -19,7 +19,7 @@ describe('server', function()
|
||||
mkdir(dir)
|
||||
clear({ env={ XDG_RUNTIME_DIR=dir } })
|
||||
matches(dir, funcs.stdpath('run'))
|
||||
if not iswin() then
|
||||
if not is_os('win') then
|
||||
matches(dir, funcs.serverstart())
|
||||
end
|
||||
end)
|
||||
@@ -65,7 +65,7 @@ describe('server', function()
|
||||
eq('', meths.get_vvar('servername'))
|
||||
|
||||
-- v:servername and $NVIM take the next available server.
|
||||
local servername = (iswin() and [[\\.\pipe\Xtest-functional-server-pipe]]
|
||||
local servername = (is_os('win') and [[\\.\pipe\Xtest-functional-server-pipe]]
|
||||
or './Xtest-functional-server-socket')
|
||||
funcs.serverstart(servername)
|
||||
eq(servername, meths.get_vvar('servername'))
|
||||
@@ -130,7 +130,7 @@ describe('server', function()
|
||||
local n = eval('len(serverlist())')
|
||||
|
||||
-- Add some servers.
|
||||
local servs = (iswin()
|
||||
local servs = (is_os('win')
|
||||
and { [[\\.\pipe\Xtest-pipe0934]], [[\\.\pipe\Xtest-pipe4324]] }
|
||||
or { [[./Xtest-pipe0934]], [[./Xtest-pipe4324]] })
|
||||
for _, s in ipairs(servs) do
|
||||
@@ -164,7 +164,7 @@ describe('startup --listen', function()
|
||||
end)
|
||||
|
||||
it('sets v:servername, overrides $NVIM_LISTEN_ADDRESS', function()
|
||||
local addr = (iswin() and [[\\.\pipe\Xtest-listen-pipe]]
|
||||
local addr = (is_os('win') and [[\\.\pipe\Xtest-listen-pipe]]
|
||||
or './Xtest-listen-pipe')
|
||||
clear({ env={ NVIM_LISTEN_ADDRESS='./Xtest-env-pipe' },
|
||||
args={ '--listen', addr } })
|
||||
|
||||
@@ -9,9 +9,9 @@ local command = helpers.command
|
||||
local insert = helpers.insert
|
||||
local expect = helpers.expect
|
||||
local exc_exec = helpers.exc_exec
|
||||
local iswin = helpers.iswin
|
||||
local os_kill = helpers.os_kill
|
||||
local pcall_err = helpers.pcall_err
|
||||
local is_os = helpers.is_os
|
||||
|
||||
local Screen = require('test.functional.ui.screen')
|
||||
|
||||
@@ -85,7 +85,7 @@ describe('system()', function()
|
||||
end)
|
||||
|
||||
it('does NOT run in shell', function()
|
||||
if iswin() then
|
||||
if is_os('win') then
|
||||
eq("%PATH%\n", eval("system(['powershell', '-NoProfile', '-NoLogo', '-ExecutionPolicy', 'RemoteSigned', '-Command', 'Write-Output', '%PATH%'])"))
|
||||
else
|
||||
eq("* $PATH %PATH%\n", eval("system(['echo', '*', '$PATH', '%PATH%'])"))
|
||||
@@ -94,7 +94,7 @@ describe('system()', function()
|
||||
end)
|
||||
|
||||
it('sets v:shell_error', function()
|
||||
if iswin() then
|
||||
if is_os('win') then
|
||||
eval([[system("cmd.exe /c exit")]])
|
||||
eq(0, eval('v:shell_error'))
|
||||
eval([[system("cmd.exe /c exit 1")]])
|
||||
@@ -123,7 +123,7 @@ describe('system()', function()
|
||||
screen:attach()
|
||||
end)
|
||||
|
||||
if iswin() then
|
||||
if is_os('win') then
|
||||
local function test_more()
|
||||
eq('root = true', eval([[get(split(system('"more" ".editorconfig"'), "\n"), 0, '')]]))
|
||||
end
|
||||
@@ -184,7 +184,7 @@ describe('system()', function()
|
||||
-- * on Windows, expected to default to Western European enc
|
||||
-- * on Linux, expected to default to UTF8
|
||||
command([[let &shellcmdflag = '-NoLogo -NoProfile -ExecutionPolicy RemoteSigned -Command ']])
|
||||
eq(iswin() and '??\n' or 'ああ\n', eval([[system('Write-Output "ああ"')]]))
|
||||
eq(is_os('win') and '??\n' or 'ああ\n', eval([[system('Write-Output "ああ"')]]))
|
||||
end)
|
||||
|
||||
it('`echo` and waits for its return', function()
|
||||
@@ -213,7 +213,7 @@ describe('system()', function()
|
||||
|
||||
screen:try_resize(72, 14)
|
||||
feed(':4verbose echo system("echo hi")<cr>')
|
||||
if iswin() then
|
||||
if is_os('win') then
|
||||
screen:expect{any=[[Executing command: "'fake_shell' 'cmdflag' '"echo hi"'"]]}
|
||||
else
|
||||
screen:expect{any=[[Executing command: "'fake_shell' 'cmdflag' 'echo hi'"]]}
|
||||
@@ -243,7 +243,7 @@ describe('system()', function()
|
||||
end)
|
||||
|
||||
it('`yes` interrupted with CTRL-C', function()
|
||||
feed(':call system("' .. (iswin()
|
||||
feed(':call system("' .. (is_os('win')
|
||||
and 'for /L %I in (1,0,2) do @echo y'
|
||||
or 'yes') .. '")<cr>')
|
||||
screen:expect([[
|
||||
@@ -260,7 +260,7 @@ describe('system()', function()
|
||||
~ |
|
||||
~ |
|
||||
~ |
|
||||
]] .. (iswin()
|
||||
]] .. (is_os('win')
|
||||
and [[
|
||||
:call system("for /L %I in (1,0,2) do @echo y") |]]
|
||||
or [[
|
||||
@@ -286,7 +286,7 @@ describe('system()', function()
|
||||
|
||||
it('`yes` interrupted with mapped CTRL-C', function()
|
||||
command('nnoremap <C-C> i')
|
||||
feed(':call system("' .. (iswin()
|
||||
feed(':call system("' .. (is_os('win')
|
||||
and 'for /L %I in (1,0,2) do @echo y'
|
||||
or 'yes') .. '")<cr>')
|
||||
screen:expect([[
|
||||
@@ -303,7 +303,7 @@ describe('system()', function()
|
||||
~ |
|
||||
~ |
|
||||
~ |
|
||||
]] .. (iswin()
|
||||
]] .. (is_os('win')
|
||||
and [[
|
||||
:call system("for /L %I in (1,0,2) do @echo y") |]]
|
||||
or [[
|
||||
@@ -330,7 +330,7 @@ describe('system()', function()
|
||||
|
||||
describe('passing no input', function()
|
||||
it('returns the program output', function()
|
||||
if iswin() then
|
||||
if is_os('win') then
|
||||
eq("echoed\n", eval('system("echo echoed")'))
|
||||
else
|
||||
eq("echoed", eval('system("echo -n echoed")'))
|
||||
@@ -438,7 +438,7 @@ describe('systemlist()', function()
|
||||
before_each(clear)
|
||||
|
||||
it('sets v:shell_error', function()
|
||||
if iswin() then
|
||||
if is_os('win') then
|
||||
eval([[systemlist("cmd.exe /c exit")]])
|
||||
eq(0, eval('v:shell_error'))
|
||||
eval([[systemlist("cmd.exe /c exit 1")]])
|
||||
@@ -617,12 +617,12 @@ describe('systemlist()', function()
|
||||
return
|
||||
end
|
||||
helpers.set_shell_powershell()
|
||||
eq({iswin() and 'あ\r' or 'あ'}, eval([[systemlist('Write-Output あ')]]))
|
||||
eq({is_os('win') and 'あ\r' or 'あ'}, eval([[systemlist('Write-Output あ')]]))
|
||||
-- Sanity test w/ default encoding
|
||||
-- * on Windows, expected to default to Western European enc
|
||||
-- * on Linux, expected to default to UTF8
|
||||
command([[let &shellcmdflag = '-NoLogo -NoProfile -ExecutionPolicy RemoteSigned -Command ']])
|
||||
eq({iswin() and '?\r' or 'あ'}, eval([[systemlist('Write-Output あ')]]))
|
||||
eq({is_os('win') and '?\r' or 'あ'}, eval([[systemlist('Write-Output あ')]]))
|
||||
end)
|
||||
|
||||
end)
|
||||
@@ -639,7 +639,7 @@ describe('shell :!', function()
|
||||
1
|
||||
4
|
||||
2]])
|
||||
if iswin() then
|
||||
if is_os('win') then
|
||||
feed(':4verbose %!sort /R<cr>')
|
||||
screen:expect{
|
||||
any=[[Executing command: .?& { Get%-Content .* | & sort /R } 2>&1 | Out%-File %-Encoding UTF8 .*; exit $LastExitCode"]]
|
||||
|
||||
Reference in New Issue
Block a user