aboutsummaryrefslogtreecommitdiff
path: root/test/functional/options/defaults_spec.lua
diff options
context:
space:
mode:
authorZyX <kp-pav@yandex.ru>2016-06-26 18:16:54 +0300
committerZyX <kp-pav@yandex.ru>2016-07-10 02:04:27 +0300
commit3878626c056ada19a27fe7f0b0df48a6eea0c9af (patch)
tree9ef7c3eebd2b141f855d647ec74edfc8712ef9ec /test/functional/options/defaults_spec.lua
parent5fc72882ccf5aefbcfe96f6f895cc8046aa70923 (diff)
downloadrneovim-3878626c056ada19a27fe7f0b0df48a6eea0c9af.tar.gz
rneovim-3878626c056ada19a27fe7f0b0df48a6eea0c9af.tar.bz2
rneovim-3878626c056ada19a27fe7f0b0df48a6eea0c9af.zip
functests: Add tests for XDG defaults
Diffstat (limited to 'test/functional/options/defaults_spec.lua')
-rw-r--r--test/functional/options/defaults_spec.lua169
1 files changed, 168 insertions, 1 deletions
diff --git a/test/functional/options/defaults_spec.lua b/test/functional/options/defaults_spec.lua
index 161791ab21..cc9944947b 100644
--- a/test/functional/options/defaults_spec.lua
+++ b/test/functional/options/defaults_spec.lua
@@ -1,7 +1,12 @@
local helpers = require('test.functional.helpers')(after_each)
+
local Screen = require('test.functional.ui.screen')
-local eval, eq = helpers.eval, helpers.eq
+
+local meths = helpers.meths
local execute = helpers.execute
+local clear = helpers.clear
+local eval = helpers.eval
+local eq = helpers.eq
local function init_session(...)
local args = { helpers.nvim_prog, '-i', 'NONE', '--embed',
@@ -76,3 +81,165 @@ describe('startup defaults', function()
end)
end)
end)
+
+describe('XDG-based defaults', function()
+ -- Need to be in separate describe() block to not run clear() twice.
+ -- Do not put before_each() here for the same reasons.
+ describe('with too long XDG variables', function()
+ before_each(function()
+ clear({env={
+ XDG_CONFIG_HOME=('/x'):rep(4096),
+ XDG_CONFIG_DIRS=(('/a'):rep(2048)
+ .. ':' .. ('/b'):rep(2048)
+ .. (':/c'):rep(512)),
+ XDG_DATA_HOME=('/X'):rep(4096),
+ XDG_DATA_DIRS=(('/A'):rep(2048)
+ .. ':' .. ('/B'):rep(2048)
+ .. (':/C'):rep(512)),
+ }})
+ end)
+
+ it('are correctly set', function()
+ eq((('/x'):rep(4096) .. '/nvim'
+ .. ',' .. ('/a'):rep(2048) .. '/nvim'
+ .. ',' .. ('/b'):rep(2048) .. '/nvim'
+ .. (',' .. '/c/nvim'):rep(512)
+ .. ',' .. ('/X'):rep(4096) .. '/nvim/site'
+ .. ',' .. ('/A'):rep(2048) .. '/nvim/site'
+ .. ',' .. ('/B'):rep(2048) .. '/nvim/site'
+ .. (',' .. '/C/nvim/site'):rep(512)
+ .. ',' .. eval('$VIMRUNTIME')
+ .. (',' .. '/C/nvim/site/after'):rep(512)
+ .. ',' .. ('/B'):rep(2048) .. '/nvim/site/after'
+ .. ',' .. ('/A'):rep(2048) .. '/nvim/site/after'
+ .. ',' .. ('/X'):rep(4096) .. '/nvim/site/after'
+ .. (',' .. '/c/nvim/after'):rep(512)
+ .. ',' .. ('/b'):rep(2048) .. '/nvim/after'
+ .. ',' .. ('/a'):rep(2048) .. '/nvim/after'
+ .. ',' .. ('/x'):rep(4096) .. '/nvim/after'
+ ), meths.get_option('runtimepath'))
+ meths.command('set runtimepath&')
+ meths.command('set backupdir&')
+ meths.command('set directory&')
+ meths.command('set undodir&')
+ meths.command('set viewdir&')
+ eq((('/x'):rep(4096) .. '/nvim'
+ .. ',' .. ('/a'):rep(2048) .. '/nvim'
+ .. ',' .. ('/b'):rep(2048) .. '/nvim'
+ .. (',' .. '/c/nvim'):rep(512)
+ .. ',' .. ('/X'):rep(4096) .. '/nvim/site'
+ .. ',' .. ('/A'):rep(2048) .. '/nvim/site'
+ .. ',' .. ('/B'):rep(2048) .. '/nvim/site'
+ .. (',' .. '/C/nvim/site'):rep(512)
+ .. ',' .. eval('$VIMRUNTIME')
+ .. (',' .. '/C/nvim/site/after'):rep(512)
+ .. ',' .. ('/B'):rep(2048) .. '/nvim/site/after'
+ .. ',' .. ('/A'):rep(2048) .. '/nvim/site/after'
+ .. ',' .. ('/X'):rep(4096) .. '/nvim/site/after'
+ .. (',' .. '/c/nvim/after'):rep(512)
+ .. ',' .. ('/b'):rep(2048) .. '/nvim/after'
+ .. ',' .. ('/a'):rep(2048) .. '/nvim/after'
+ .. ',' .. ('/x'):rep(4096) .. '/nvim/after'
+ ), meths.get_option('runtimepath'))
+ eq('.,' .. ('/X'):rep(4096) .. '/nvim/backup',
+ meths.get_option('backupdir'))
+ eq(('/X'):rep(4096) .. '/nvim/swap//', meths.get_option('directory'))
+ eq(('/X'):rep(4096) .. '/nvim/undo', meths.get_option('undodir'))
+ eq(('/X'):rep(4096) .. '/nvim/view', meths.get_option('viewdir'))
+ end)
+ end)
+
+ describe('with XDG variables that can be expanded', function()
+ before_each(function()
+ clear({env={
+ XDG_CONFIG_HOME='$XDG_DATA_HOME',
+ XDG_CONFIG_DIRS='$XDG_DATA_DIRS',
+ XDG_DATA_HOME='$XDG_CONFIG_HOME',
+ XDG_DATA_DIRS='$XDG_CONFIG_DIRS',
+ }})
+ end)
+
+ it('are not expanded', function()
+ eq(('$XDG_DATA_HOME/nvim'
+ .. ',$XDG_DATA_DIRS/nvim'
+ .. ',$XDG_CONFIG_HOME/nvim/site'
+ .. ',$XDG_CONFIG_DIRS/nvim/site'
+ .. ',' .. eval('$VIMRUNTIME')
+ .. ',$XDG_CONFIG_DIRS/nvim/site/after'
+ .. ',$XDG_CONFIG_HOME/nvim/site/after'
+ .. ',$XDG_DATA_DIRS/nvim/after'
+ .. ',$XDG_DATA_HOME/nvim/after'
+ ), meths.get_option('runtimepath'))
+ meths.command('set runtimepath&')
+ meths.command('set backupdir&')
+ meths.command('set directory&')
+ meths.command('set undodir&')
+ meths.command('set viewdir&')
+ eq(('$XDG_DATA_HOME/nvim'
+ .. ',$XDG_DATA_DIRS/nvim'
+ .. ',$XDG_CONFIG_HOME/nvim/site'
+ .. ',$XDG_CONFIG_DIRS/nvim/site'
+ .. ',' .. eval('$VIMRUNTIME')
+ .. ',$XDG_CONFIG_DIRS/nvim/site/after'
+ .. ',$XDG_CONFIG_HOME/nvim/site/after'
+ .. ',$XDG_DATA_DIRS/nvim/after'
+ .. ',$XDG_DATA_HOME/nvim/after'
+ ), meths.get_option('runtimepath'))
+ eq('.,$XDG_CONFIG_HOME/nvim/backup', meths.get_option('backupdir'))
+ eq('$XDG_CONFIG_HOME/nvim/swap//', meths.get_option('directory'))
+ eq('$XDG_CONFIG_HOME/nvim/undo', meths.get_option('undodir'))
+ eq('$XDG_CONFIG_HOME/nvim/view', meths.get_option('viewdir'))
+ end)
+ end)
+
+ describe('with commas', function()
+ before_each(function()
+ clear({env={
+ XDG_CONFIG_HOME=', , ,',
+ XDG_CONFIG_DIRS=',-,-,:-,-,-',
+ XDG_DATA_HOME=',=,=,',
+ XDG_DATA_DIRS=',≡,≡,:≡,≡,≡',
+ }})
+ end)
+
+ it('are escaped properly', function()
+ eq(('\\, \\, \\,/nvim'
+ .. ',\\,-\\,-\\,/nvim'
+ .. ',-\\,-\\,-/nvim'
+ .. ',\\,=\\,=\\,/nvim/site'
+ .. ',\\,≡\\,≡\\,/nvim/site'
+ .. ',≡\\,≡\\,≡/nvim/site'
+ .. ',' .. eval('$VIMRUNTIME')
+ .. ',≡\\,≡\\,≡/nvim/site/after'
+ .. ',\\,≡\\,≡\\,/nvim/site/after'
+ .. ',\\,=\\,=\\,/nvim/site/after'
+ .. ',-\\,-\\,-/nvim/after'
+ .. ',\\,-\\,-\\,/nvim/after'
+ .. ',\\, \\, \\,/nvim/after'
+ ), meths.get_option('runtimepath'))
+ meths.command('set runtimepath&')
+ meths.command('set backupdir&')
+ meths.command('set directory&')
+ meths.command('set undodir&')
+ meths.command('set viewdir&')
+ eq(('\\, \\, \\,/nvim'
+ .. ',\\,-\\,-\\,/nvim'
+ .. ',-\\,-\\,-/nvim'
+ .. ',\\,=\\,=\\,/nvim/site'
+ .. ',\\,≡\\,≡\\,/nvim/site'
+ .. ',≡\\,≡\\,≡/nvim/site'
+ .. ',' .. eval('$VIMRUNTIME')
+ .. ',≡\\,≡\\,≡/nvim/site/after'
+ .. ',\\,≡\\,≡\\,/nvim/site/after'
+ .. ',\\,=\\,=\\,/nvim/site/after'
+ .. ',-\\,-\\,-/nvim/after'
+ .. ',\\,-\\,-\\,/nvim/after'
+ .. ',\\, \\, \\,/nvim/after'
+ ), meths.get_option('runtimepath'))
+ eq('.,\\,=\\,=\\,/nvim/backup', meths.get_option('backupdir'))
+ eq('\\,=\\,=\\,/nvim/swap//', meths.get_option('directory'))
+ eq('\\,=\\,=\\,/nvim/undo', meths.get_option('undodir'))
+ eq('\\,=\\,=\\,/nvim/view', meths.get_option('viewdir'))
+ end)
+ end)
+end)