aboutsummaryrefslogtreecommitdiff
path: root/test/helpers.lua
diff options
context:
space:
mode:
authorJustin M. Keyes <justinkz@gmail.com>2017-03-29 20:07:39 +0200
committerJustin M. Keyes <justinkz@gmail.com>2017-03-30 02:55:00 +0200
commit1ea9ebf112d6c9d6355038afb4aaee794187cb23 (patch)
treecec418a7bae041575d91b8eabbc0f3b1926b8a56 /test/helpers.lua
parent1f478cebeb929332e90c1b50de4b8a4f311a0df2 (diff)
downloadrneovim-1ea9ebf112d6c9d6355038afb4aaee794187cb23.tar.gz
rneovim-1ea9ebf112d6c9d6355038afb4aaee794187cb23.tar.bz2
rneovim-1ea9ebf112d6c9d6355038afb4aaee794187cb23.zip
test: Use workspace-local temp directory.
Closes #6291
Diffstat (limited to 'test/helpers.lua')
-rw-r--r--test/helpers.lua41
1 files changed, 27 insertions, 14 deletions
diff --git a/test/helpers.lua b/test/helpers.lua
index 1a86effa1c..82451bc61d 100644
--- a/test/helpers.lua
+++ b/test/helpers.lua
@@ -106,20 +106,33 @@ local uname = (function()
end)
end)()
-local function tmpname()
- local fname = os.tmpname()
- if uname() == 'Windows' and fname:sub(1, 2) == '\\s' then
- -- In Windows tmpname() returns a filename starting with
- -- special sequence \s, prepend $TEMP path
- local tmpdir = os.getenv('TEMP')
- return tmpdir..fname
- elseif fname:match('^/tmp') and uname() == 'Darwin' then
- -- In OS X /tmp links to /private/tmp
- return '/private'..fname
- else
- return fname
- end
-end
+local tmpname = (function()
+ local seq = 0
+ local tmpdir = os.getenv('TMPDIR') and os.getenv('TMPDIR') or os.getenv('TEMP')
+ -- Is $TMPDIR defined local to the project workspace?
+ local in_workspace = not not (tmpdir and string.find(tmpdir, 'Xtest'))
+ return (function()
+ if in_workspace then
+ -- Cannot control os.tmpname() dir, so hack our own tmpname() impl.
+ seq = seq + 1
+ local fname = tmpdir..'/nvim-test-lua-'..seq
+ io.open(fname, 'w'):close()
+ return fname
+ else
+ local fname = os.tmpname()
+ if uname() == 'Windows' and fname:sub(1, 2) == '\\s' then
+ -- In Windows tmpname() returns a filename starting with
+ -- special sequence \s, prepend $TEMP path
+ return tmpdir..fname
+ elseif fname:match('^/tmp') and uname() == 'Darwin' then
+ -- In OS X /tmp links to /private/tmp
+ return '/private'..fname
+ else
+ return fname
+ end
+ end
+ end)
+end)()
local function map(func, tab)
local rettab = {}