From fcd62342d531bdeacbd41a8dfa6163301f1fdf9b Mon Sep 17 00:00:00 2001 From: w0rp Date: Mon, 16 Jul 2018 08:45:55 +0100 Subject: [PATCH] Only temporarily replace TMPDIR if it's defined to be an empty string --- autoload/ale/util.vim | 3 +-- test/test_tmpdir_wrapper.vader | 27 +++++++++++++++++++++++---- 2 files changed, 24 insertions(+), 6 deletions(-) diff --git a/autoload/ale/util.vim b/autoload/ale/util.vim index eb2877b2..fb6dc085 100644 --- a/autoload/ale/util.vim +++ b/autoload/ale/util.vim @@ -280,7 +280,7 @@ endfunction function! ale#util#Tempname() abort let l:clear_tempdir = 0 - if has('unix') && empty($TMPDIR) + if exists('$TMPDIR') && empty($TMPDIR) let l:clear_tempdir = 1 let $TMPDIR = '/tmp' endif @@ -290,7 +290,6 @@ function! ale#util#Tempname() abort finally if l:clear_tempdir let $TMPDIR = '' - silent! unlet! $TMPDIR endif endtry diff --git a/test/test_tmpdir_wrapper.vader b/test/test_tmpdir_wrapper.vader index 4d87061f..151b8943 100644 --- a/test/test_tmpdir_wrapper.vader +++ b/test/test_tmpdir_wrapper.vader @@ -1,13 +1,32 @@ Before: - Save $TMPDIR + let g:exists = exists('$TMPDIR') + let g:old_value = $TMPDIR After: - Restore + if g:exists + let $TMPDIR = g:old_value + else + silent! unlet! $TMPDIR + endif -Execute(ale#util#Tempname should create files in /tmp if $TMPDIR isn't set): + unlet! g:exists + unlet! g:old_value + +Execute(ale#util#Tempname shouldn't set $TMPDIR to an empty string if it isn't set): + " You can't run this test twice on old Vim versions. + if has('unix') + Assert ale#util#Tempname() =~# '^/tmp' + Assert !exists('$TMPDIR'), '$TMPDIR exists where it shouldn''t' + endif + +Execute(ale#util#Tempname shouldn't replace $TMPDIR and reset them to an empty string.): if has('unix') let $TMPDIR = '' Assert ale#util#Tempname() =~# '^/tmp' - " We should unlet the environment variable again. + + if !has('nvim') + Assert exists('$TMPDIR'), '$TMPDIR doesn''t exist where it should' + endif + AssertEqual '', $TMPDIR endif