mirror of
				https://github.com/neovim/neovim.git
				synced 2025-10-26 12:27:24 +00:00 
			
		
		
		
	 08c5a874ab
			
		
	
	08c5a874ab
	
	
	
		
			
			Problem:    May pass weird strings to file name expansion.
Solution:   Check for matching characters.  Disallow control characters.
8f130eda47
		
	
		
			
				
	
	
		
			83 lines
		
	
	
		
			2.3 KiB
		
	
	
	
		
			Lua
		
	
	
	
	
	
			
		
		
	
	
			83 lines
		
	
	
		
			2.3 KiB
		
	
	
	
		
			Lua
		
	
	
	
	
	
| -- vim: set foldmethod=marker foldmarker=[[,]] :
 | |
| -- Test whether glob()/globpath() return correct results with certain escaped
 | |
| -- characters.
 | |
| 
 | |
| local helpers = require('test.functional.helpers')(after_each)
 | |
| local clear = helpers.clear
 | |
| local command, expect = helpers.command, helpers.expect
 | |
| 
 | |
| describe('glob() and globpath()', function()
 | |
|   setup(clear)
 | |
| 
 | |
|   setup(function()
 | |
|     if helpers.iswin() then
 | |
|       os.execute("md sautest\\autoload")
 | |
|       os.execute(".>sautest\\autoload\\Test104.vim 2>nul")
 | |
|       os.execute(".>sautest\\autoload\\footest.vim 2>nul")
 | |
|     else
 | |
|       os.execute("mkdir -p sautest/autoload")
 | |
|       os.execute("touch sautest/autoload/Test104.vim")
 | |
|       os.execute("touch sautest/autoload/footest.vim")
 | |
|     end
 | |
|   end)
 | |
| 
 | |
|   it('is working', function()
 | |
|     -- Make sure glob() doesn't use the shell
 | |
|     command('set shell=doesnotexist')
 | |
| 
 | |
|     -- Consistent sorting of file names
 | |
|     command('set nofileignorecase')
 | |
| 
 | |
|     if helpers.iswin() then
 | |
|       command([[$put =glob('Xxx{')]])
 | |
|       command([[$put =glob('Xxx$')]])
 | |
| 
 | |
|       command('silent w! Xxx{')
 | |
|       command([[w! Xxx$]])
 | |
|       command([[$put =glob('Xxx{')]])
 | |
|       command([[$put =glob('Xxx$')]])
 | |
| 
 | |
|       command([[$put =string(globpath('sautest\autoload', '*.vim'))]])
 | |
|       command([[$put =string(globpath('sautest\autoload', '*.vim', 0, 1))]])
 | |
|       expect([=[
 | |
| 
 | |
| 
 | |
| 
 | |
|         Xxx{
 | |
|         Xxx$
 | |
|         'sautest\autoload\Test104.vim
 | |
|         sautest\autoload\footest.vim'
 | |
|         ['sautest\autoload\Test104.vim', 'sautest\autoload\footest.vim']]=])
 | |
|     else
 | |
|       command([[$put =glob('Xxx\{')]])
 | |
|       command([[$put =glob('Xxx\$')]])
 | |
| 
 | |
|       command('silent w! Xxx\\{')
 | |
|       command([[w! Xxx\$]])
 | |
|       command([[$put =glob('Xxx\{')]])
 | |
|       command([[$put =glob('Xxx\$')]])
 | |
| 
 | |
|       command("$put =string(globpath('sautest/autoload', '*.vim'))")
 | |
|       command("$put =string(globpath('sautest/autoload', '*.vim', 0, 1))")
 | |
|       expect([=[
 | |
| 
 | |
| 
 | |
| 
 | |
|         Xxx{
 | |
|         Xxx$
 | |
|         'sautest/autoload/Test104.vim
 | |
|         sautest/autoload/footest.vim'
 | |
|         ['sautest/autoload/Test104.vim', 'sautest/autoload/footest.vim']]=])
 | |
|     end
 | |
|   end)
 | |
| 
 | |
|   teardown(function()
 | |
|     if helpers.iswin() then
 | |
|       os.execute('del /q/f Xxx{ Xxx$')
 | |
|       os.execute('rd /q /s sautest')
 | |
|     else
 | |
|       os.execute("rm -rf sautest Xxx{ Xxx$")
 | |
|     end
 | |
|   end)
 | |
| end)
 |