diff options
| author | ZyX <kp-pav@yandex.ru> | 2017-04-08 01:54:58 +0300 | 
|---|---|---|
| committer | ZyX <kp-pav@yandex.ru> | 2017-04-08 01:54:58 +0300 | 
| commit | 043d8ff9f2389f8deab7934aa0ab4ce88a747f01 (patch) | |
| tree | 4d6fa32d7c1ddaa99c15f80c1a4ba95d5f3ca2da /test/helpers.lua | |
| parent | 5992cdf3c27ee9c73cea22e288c6ea6d54867394 (diff) | |
| parent | 13352c00f1909d9296c5f276a3735f5e6f231b39 (diff) | |
| download | rneovim-043d8ff9f2389f8deab7934aa0ab4ce88a747f01.tar.gz rneovim-043d8ff9f2389f8deab7934aa0ab4ce88a747f01.tar.bz2 rneovim-043d8ff9f2389f8deab7934aa0ab4ce88a747f01.zip  | |
Merge branch 'master' into luaviml'/lua
Diffstat (limited to 'test/helpers.lua')
| -rw-r--r-- | test/helpers.lua | 78 | 
1 files changed, 64 insertions, 14 deletions
diff --git a/test/helpers.lua b/test/helpers.lua index 18f47e950b..eaf7f4cff4 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 = {} @@ -233,6 +246,41 @@ local function shallowcopy(orig)    return copy  end +local function concat_tables(...) +  local ret = {} +  for i = 1, select('#', ...) do +    local tbl = select(i, ...) +    if tbl then +      for _, v in ipairs(tbl) do +        ret[#ret + 1] = v +      end +    end +  end +  return ret +end + +local function dedent(str) +  -- find minimum common indent across lines +  local indent = nil +  for line in str:gmatch('[^\n]+') do +    local line_indent = line:match('^%s+') or '' +    if indent == nil or #line_indent < #indent then +      indent = line_indent +    end +  end +  if indent == nil or #indent == 0 then +    -- no minimum common indent +    return str +  end +  -- create a pattern for the indent +  indent = indent:gsub('%s', '[ \t]') +  -- strip it from the first line +  str = str:gsub('^'..indent, '') +  -- strip it from the remaining lines +  str = str:gsub('[\n]'..indent, '\n') +  return str +end +  return {    eq = eq,    neq = neq, @@ -247,4 +295,6 @@ return {    hasenv = hasenv,    which = which,    shallowcopy = shallowcopy, +  concat_tables = concat_tables, +  dedent = dedent,  }  | 
