environ_spec.lua (2369B)
1 local t = require('test.testutil') 2 local n = require('test.functional.testnvim')() 3 4 local clear = n.clear 5 local eq = t.eq 6 local environ = n.fn.environ 7 local exists = n.fn.exists 8 local system = n.fn.system 9 local nvim_prog = n.nvim_prog 10 local command = n.command 11 local eval = n.eval 12 local setenv = n.fn.setenv 13 14 describe('environment variables', function() 15 it('environ() handles empty env variable', function() 16 clear({ env = { EMPTY_VAR = '' } }) 17 eq('', environ()['EMPTY_VAR']) 18 eq(nil, environ()['DOES_NOT_EXIST']) 19 end) 20 21 it('exists() handles empty env variable', function() 22 clear({ env = { EMPTY_VAR = '' } }) 23 eq(1, exists('$EMPTY_VAR')) 24 eq(0, exists('$DOES_NOT_EXIST')) 25 end) 26 end) 27 28 describe('empty $HOME', function() 29 local original_home = os.getenv('HOME') 30 31 before_each(clear) 32 33 -- recover $HOME after each test 34 after_each(function() 35 if original_home ~= nil then 36 setenv('HOME', original_home) 37 end 38 os.remove('test_empty_home') 39 os.remove('./~') 40 end) 41 42 local function tilde_in_cwd() 43 -- get files in cwd 44 command("let test_empty_home_cwd_files = split(globpath('.', '*'), '\n')") 45 -- get the index of the file named '~' 46 command('let test_empty_home_tilde_index = index(test_empty_home_cwd_files, "./~")') 47 return eval('test_empty_home_tilde_index') ~= -1 48 end 49 50 local function write_and_test_tilde() 51 system({ 52 nvim_prog, 53 '-u', 54 'NONE', 55 '-i', 56 'NONE', 57 '--headless', 58 '-c', 59 'write test_empty_home', 60 '+q', 61 }) 62 eq(false, tilde_in_cwd()) 63 end 64 65 it("'~' folder not created in cwd if $HOME and related env not defined", function() 66 command('unlet $HOME') 67 write_and_test_tilde() 68 69 command("let $HOMEDRIVE='C:'") 70 command("let $USERPROFILE='C:\\'") 71 write_and_test_tilde() 72 73 command('unlet $HOMEDRIVE') 74 write_and_test_tilde() 75 76 command('unlet $USERPROFILE') 77 write_and_test_tilde() 78 79 command("let $HOME='%USERPROFILE%'") 80 command("let $USERPROFILE='C:\\'") 81 write_and_test_tilde() 82 end) 83 84 it("'~' folder not created in cwd if writing a file with invalid $HOME", function() 85 setenv('HOME', '/path/does/not/exist') 86 write_and_test_tilde() 87 end) 88 89 it("'~' folder not created in cwd if writing a file with $HOME=''", function() 90 command("let $HOME=''") 91 write_and_test_tilde() 92 end) 93 end)