From cf7d6a7a0b60f13364109374094f2643b067ce84 Mon Sep 17 00:00:00 2001 From: "Justin M. Keyes" Date: Sun, 10 Apr 2016 22:46:15 -0400 Subject: defaults: Enable syntax/filetype for real. Fixes a bug in #4252: we enabled filetype/syntax if -u was passed, but not otherwise. So it did not work for an empty or missing vimrc. --- src/nvim/main.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/nvim/main.c b/src/nvim/main.c index 8a5c636e41..23ced5ebe5 100644 --- a/src/nvim/main.c +++ b/src/nvim/main.c @@ -335,7 +335,7 @@ int main(int argc, char **argv) source_startup_scripts(¶ms); // If using the runtime (-u is not NONE), enable syntax & filetype plugins. - if (params.use_vimrc != NULL && strcmp(params.use_vimrc, "NONE") != 0) { + if (params.use_vimrc == NULL || strcmp(params.use_vimrc, "NONE") != 0) { // Does ":filetype plugin indent on". filetype_maybe_enable(); // Sources syntax/syntax.vim, which calls `:filetype on`. -- cgit From 54188cdddefca38ff7a9fe201bc361c923cde331 Mon Sep 17 00:00:00 2001 From: "Justin M. Keyes" Date: Sun, 10 Apr 2016 22:49:34 -0400 Subject: test: move server_spec.lua Old layout was too granular, we do not need a server/ folder. --- test/functional/eval/server_spec.lua | 82 ++++++++++++++++++++++++++++++++++ test/functional/server/server_spec.lua | 82 ---------------------------------- 2 files changed, 82 insertions(+), 82 deletions(-) create mode 100644 test/functional/eval/server_spec.lua delete mode 100644 test/functional/server/server_spec.lua diff --git a/test/functional/eval/server_spec.lua b/test/functional/eval/server_spec.lua new file mode 100644 index 0000000000..7f53522c08 --- /dev/null +++ b/test/functional/eval/server_spec.lua @@ -0,0 +1,82 @@ + +local helpers = require('test.functional.helpers') +local nvim, eq, neq, eval = helpers.nvim, helpers.eq, helpers.neq, helpers.eval +local clear, funcs, meths = helpers.clear, helpers.funcs, helpers.meths +local os_name = helpers.os_name + +describe('serverstart(), serverstop()', function() + before_each(clear) + + it('sets $NVIM_LISTEN_ADDRESS on first invocation', function() + -- Unset $NVIM_LISTEN_ADDRESS + nvim('command', 'let $NVIM_LISTEN_ADDRESS = ""') + + local s = eval('serverstart()') + assert(s ~= nil and s:len() > 0, "serverstart() returned empty") + eq(s, eval('$NVIM_LISTEN_ADDRESS')) + nvim('command', "call serverstop('"..s.."')") + eq('', eval('$NVIM_LISTEN_ADDRESS')) + end) + + it('sets v:servername _only_ on nvim startup unless all servers are stopped', + function() + local initial_server = meths.get_vvar('servername') + assert(initial_server ~= nil and initial_server:len() > 0, + 'v:servername was not initialized') + + -- v:servername is readonly so we cannot unset it--but we can test that it + -- does not get set again thereafter. + local s = funcs.serverstart() + assert(s ~= nil and s:len() > 0, "serverstart() returned empty") + neq(initial_server, s) + + -- serverstop() does _not_ modify v:servername... + funcs.serverstop(s) + eq(initial_server, meths.get_vvar('servername')) + + -- ...unless we stop _all_ servers. + funcs.serverstop(funcs.serverlist()[1]) + eq('', meths.get_vvar('servername')) + + -- v:servername will take the next available server. + local servername = (os_name() == 'windows' + and [[\\.\pipe\Xtest-functional-server-server-pipe]] + or 'Xtest-functional-server-server-socket') + funcs.serverstart(servername) + eq(servername, meths.get_vvar('servername')) + end) + + it('serverstop() ignores invalid input', function() + nvim('command', "call serverstop('')") + nvim('command', "call serverstop('bogus-socket-name')") + end) + +end) + +describe('serverlist()', function() + before_each(clear) + + it('returns the list of servers', function() + -- There should already be at least one server. + local n = eval('len(serverlist())') + + -- Add a few + local servs = {'should-not-exist', 'another-one-that-shouldnt'} + for _, s in ipairs(servs) do + eq(s, eval('serverstart("'..s..'")')) + end + + local new_servs = eval('serverlist()') + + -- Exactly #servs servers should be added. + eq(n + #servs, #new_servs) + -- The new servers should be at the end of the list. + for i = 1, #servs do + eq(servs[i], new_servs[i + n]) + nvim('command', 'call serverstop("'..servs[i]..'")') + end + -- After calling serverstop() on the new servers, they should no longer be + -- in the list. + eq(n, eval('len(serverlist())')) + end) +end) diff --git a/test/functional/server/server_spec.lua b/test/functional/server/server_spec.lua deleted file mode 100644 index 7f53522c08..0000000000 --- a/test/functional/server/server_spec.lua +++ /dev/null @@ -1,82 +0,0 @@ - -local helpers = require('test.functional.helpers') -local nvim, eq, neq, eval = helpers.nvim, helpers.eq, helpers.neq, helpers.eval -local clear, funcs, meths = helpers.clear, helpers.funcs, helpers.meths -local os_name = helpers.os_name - -describe('serverstart(), serverstop()', function() - before_each(clear) - - it('sets $NVIM_LISTEN_ADDRESS on first invocation', function() - -- Unset $NVIM_LISTEN_ADDRESS - nvim('command', 'let $NVIM_LISTEN_ADDRESS = ""') - - local s = eval('serverstart()') - assert(s ~= nil and s:len() > 0, "serverstart() returned empty") - eq(s, eval('$NVIM_LISTEN_ADDRESS')) - nvim('command', "call serverstop('"..s.."')") - eq('', eval('$NVIM_LISTEN_ADDRESS')) - end) - - it('sets v:servername _only_ on nvim startup unless all servers are stopped', - function() - local initial_server = meths.get_vvar('servername') - assert(initial_server ~= nil and initial_server:len() > 0, - 'v:servername was not initialized') - - -- v:servername is readonly so we cannot unset it--but we can test that it - -- does not get set again thereafter. - local s = funcs.serverstart() - assert(s ~= nil and s:len() > 0, "serverstart() returned empty") - neq(initial_server, s) - - -- serverstop() does _not_ modify v:servername... - funcs.serverstop(s) - eq(initial_server, meths.get_vvar('servername')) - - -- ...unless we stop _all_ servers. - funcs.serverstop(funcs.serverlist()[1]) - eq('', meths.get_vvar('servername')) - - -- v:servername will take the next available server. - local servername = (os_name() == 'windows' - and [[\\.\pipe\Xtest-functional-server-server-pipe]] - or 'Xtest-functional-server-server-socket') - funcs.serverstart(servername) - eq(servername, meths.get_vvar('servername')) - end) - - it('serverstop() ignores invalid input', function() - nvim('command', "call serverstop('')") - nvim('command', "call serverstop('bogus-socket-name')") - end) - -end) - -describe('serverlist()', function() - before_each(clear) - - it('returns the list of servers', function() - -- There should already be at least one server. - local n = eval('len(serverlist())') - - -- Add a few - local servs = {'should-not-exist', 'another-one-that-shouldnt'} - for _, s in ipairs(servs) do - eq(s, eval('serverstart("'..s..'")')) - end - - local new_servs = eval('serverlist()') - - -- Exactly #servs servers should be added. - eq(n + #servs, #new_servs) - -- The new servers should be at the end of the list. - for i = 1, #servs do - eq(servs[i], new_servs[i + n]) - nvim('command', 'call serverstop("'..servs[i]..'")') - end - -- After calling serverstop() on the new servers, they should no longer be - -- in the list. - eq(n, eval('len(serverlist())')) - end) -end) -- cgit From 523ff9c55cfd4e82877e110b24eb049f405703d5 Mon Sep 17 00:00:00 2001 From: "Justin M. Keyes" Date: Mon, 11 Apr 2016 01:59:32 -0400 Subject: test: defaults_spec.lua --- runtime/doc/vim_diff.txt | 4 +- test/functional/options/defaults_spec.lua | 85 +++++++++++++++++++++++++++++++ 2 files changed, 86 insertions(+), 3 deletions(-) create mode 100644 test/functional/options/defaults_spec.lua diff --git a/runtime/doc/vim_diff.txt b/runtime/doc/vim_diff.txt index 17e16911bc..17ee5975dd 100644 --- a/runtime/doc/vim_diff.txt +++ b/runtime/doc/vim_diff.txt @@ -31,9 +31,7 @@ these differences. 2. Defaults *nvim-defaults* - Syntax highlighting is enabled by default -- Filetype-related plugins and scripts are enabled by default - Note: these defaults can be disabled with the "-u NONE" command line - argument. |-u| +- ":filetype plugin indent on" is enabled by default - 'autoindent' is set by default - 'autoread' is set by default diff --git a/test/functional/options/defaults_spec.lua b/test/functional/options/defaults_spec.lua new file mode 100644 index 0000000000..7f0892ee3a --- /dev/null +++ b/test/functional/options/defaults_spec.lua @@ -0,0 +1,85 @@ +local helpers = require('test.functional.helpers') +local Screen = require('test.functional.ui.screen') +local clear, feed = helpers.clear, helpers.feed +local eval, eq, neq = helpers.eval, helpers.eq, helpers.neq +local execute, source, expect = helpers.execute, helpers.source, helpers.expect + +local function init_session(...) + local args = { helpers.nvim_prog, '-i', 'NONE', '--embed', + '--cmd', 'set shortmess+=I background=light noswapfile noautoindent', + '--cmd', 'set laststatus=1 undodir=. directory=. viewdir=. backupdir=.' + } + for _, v in ipairs({...}) do + table.insert(args, v) + end + helpers.set_session(helpers.spawn(args)) +end + +describe('startup defaults', function() + before_each(function() + clear() + end) + + describe(':filetype', function() + local function expect_filetype(expected) + local screen = Screen.new(48, 4) + screen:attach() + execute('filetype') + screen:expect([[ + ^ | + ~ | + ~ | + ]]..expected + ) + end + + it('enabled by `-u NORC`', function() + init_session('-u', 'NORC') + expect_filetype( + 'filetype detection:ON plugin:ON indent:ON |') + end) + + it('disabled by `-u NONE`', function() + init_session('-u', 'NONE') + expect_filetype( + 'filetype detection:OFF plugin:OFF indent:OFF |') + end) + + it('overridden by early `filetype on`', function() + init_session('-u', 'NORC', '--cmd', 'filetype on') + expect_filetype( + 'filetype detection:ON plugin:OFF indent:OFF |') + end) + + it('overridden by early `filetype plugin on`', function() + init_session('-u', 'NORC', '--cmd', 'filetype plugin on') + expect_filetype( + 'filetype detection:ON plugin:ON indent:OFF |') + end) + + it('overridden by early `filetype indent on`', function() + init_session('-u', 'NORC', '--cmd', 'filetype indent on') + expect_filetype( + 'filetype detection:ON plugin:OFF indent:ON |') + end) + end) + + describe('syntax', function() + it('enabled by `-u NORC`', function() + init_session('-u', 'NORC') + eq(1, eval('g:syntax_on')) + end) + + it('disabled by `-u NONE`', function() + init_session('-u', 'NONE') + eq(0, eval('exists("g:syntax_on")')) + end) + + it('overridden by early `syntax off`', function() + init_session('-u', 'NORC', '--cmd', 'syntax off') + eq(0, eval('exists("g:syntax_on")')) + end) + end) +end) + + -- cgit