mirror of
https://github.com/neovim/neovim.git
synced 2025-02-25 18:55:25 -06:00
Used
sed -r -i -e '/ helpers =/ s/$/\nlocal itp = helpers.gen_itp(it)/; s/^(\s*)it\(/\1itp(/' test/unit/**/*_spec.lua
to alter all tests. Locally they all run fine now.
Reasoning:
1. General: state from one test should not affect other tests.
2. Local: travis build is failing with something which may be an output of
garbage collector. This should prevent state of the garbage collector from
interferring as well.
86 lines
2.7 KiB
Lua
86 lines
2.7 KiB
Lua
local helpers = require("test.unit.helpers")
|
|
local itp = helpers.gen_itp(it)
|
|
--{:cimport, :internalize, :eq, :neq, :ffi, :lib, :cstr, :to_cstr} = require 'test.unit.helpers'
|
|
|
|
local eq = helpers.eq
|
|
local ffi = helpers.ffi
|
|
local to_cstr = helpers.to_cstr
|
|
local NULL = helpers.NULL
|
|
|
|
local fileio = helpers.cimport("./src/nvim/fileio.h")
|
|
|
|
describe('file_pat functions', function()
|
|
describe('file_pat_to_reg_pat', function()
|
|
|
|
local file_pat_to_reg_pat = function(pat)
|
|
local res = fileio.file_pat_to_reg_pat(to_cstr(pat), NULL, NULL, 0)
|
|
return ffi.string(res)
|
|
end
|
|
|
|
itp('returns ^path$ regex for literal path input', function()
|
|
eq( '^path$', file_pat_to_reg_pat('path'))
|
|
end)
|
|
|
|
itp('does not prepend ^ when there is a starting glob (*)', function()
|
|
eq('path$', file_pat_to_reg_pat('*path'))
|
|
end)
|
|
|
|
itp('does not append $ when there is an ending glob (*)', function()
|
|
eq('^path', file_pat_to_reg_pat('path*'))
|
|
end)
|
|
|
|
itp('does not include ^ or $ when surrounded by globs (*)', function()
|
|
eq('path', file_pat_to_reg_pat('*path*'))
|
|
end)
|
|
|
|
itp('replaces the bash any character (?) with the regex any character (.)', function()
|
|
eq('^foo.bar$', file_pat_to_reg_pat('foo?bar'))
|
|
end)
|
|
|
|
itp('replaces a glob (*) in the middle of a path with regex multiple any character (.*)',
|
|
function()
|
|
eq('^foo.*bar$', file_pat_to_reg_pat('foo*bar'))
|
|
end)
|
|
|
|
itp([[unescapes \? to ?]], function()
|
|
eq('^foo?bar$', file_pat_to_reg_pat([[foo\?bar]]))
|
|
end)
|
|
|
|
itp([[unescapes \% to %]], function()
|
|
eq('^foo%bar$', file_pat_to_reg_pat([[foo\%bar]]))
|
|
end)
|
|
|
|
itp([[unescapes \, to ,]], function()
|
|
eq('^foo,bar$', file_pat_to_reg_pat([[foo\,bar]]))
|
|
end)
|
|
|
|
itp([[unescapes '\ ' to ' ']], function()
|
|
eq('^foo bar$', file_pat_to_reg_pat([[foo\ bar]]))
|
|
end)
|
|
|
|
itp([[escapes . to \.]], function()
|
|
eq([[^foo\.bar$]], file_pat_to_reg_pat('foo.bar'))
|
|
end)
|
|
|
|
itp('Converts bash brace expansion {a,b} to regex options (a|b)', function()
|
|
eq([[^foo\(bar\|baz\)$]], file_pat_to_reg_pat('foo{bar,baz}'))
|
|
end)
|
|
|
|
itp('Collapses multiple consecutive * into a single character', function()
|
|
eq([[^foo.*bar$]], file_pat_to_reg_pat('foo*******bar'))
|
|
eq([[foobar$]], file_pat_to_reg_pat('********foobar'))
|
|
eq([[^foobar]], file_pat_to_reg_pat('foobar********'))
|
|
end)
|
|
|
|
itp('Does not escape ^', function()
|
|
eq([[^^blah$]], file_pat_to_reg_pat('^blah'))
|
|
eq([[^foo^bar$]], file_pat_to_reg_pat('foo^bar'))
|
|
end)
|
|
|
|
itp('Does not escape $', function()
|
|
eq([[^blah$$]], file_pat_to_reg_pat('blah$'))
|
|
eq([[^foo$bar$]], file_pat_to_reg_pat('foo$bar'))
|
|
end)
|
|
end)
|
|
end)
|