diff options
| author | Mehmet Samet Duman <yongdohyun@projecttick.org> | 2026-04-03 22:21:25 +0300 |
|---|---|---|
| committer | Mehmet Samet Duman <yongdohyun@projecttick.org> | 2026-04-04 00:23:03 +0300 |
| commit | 2eae5db069dc171f74cd863487655f6a88e5384d (patch) | |
| tree | 2d9d05e09978a2a44acbfbb8d651f240df3ca052 /uvim/src/testdir/test_plugin_zip.vim | |
| parent | 473d922faed49241a5d29d9e37dc4819cd512006 (diff) | |
| download | Project-Tick-2eae5db069dc171f74cd863487655f6a88e5384d.tar.gz Project-Tick-2eae5db069dc171f74cd863487655f6a88e5384d.zip | |
NOISSUE rebrand vim to MNV's not Vim
Signed-off-by: Mehmet Samet Duman <yongdohyun@projecttick.org>
Diffstat (limited to 'uvim/src/testdir/test_plugin_zip.vim')
| -rw-r--r-- | uvim/src/testdir/test_plugin_zip.vim | 298 |
1 files changed, 0 insertions, 298 deletions
diff --git a/uvim/src/testdir/test_plugin_zip.vim b/uvim/src/testdir/test_plugin_zip.vim deleted file mode 100644 index 53b6120834..0000000000 --- a/uvim/src/testdir/test_plugin_zip.vim +++ /dev/null @@ -1,298 +0,0 @@ -vim9script - -CheckExecutable unzip - -if 0 # Find uncovered line - profile start zip_profile - profile! file */zip*.vim -endif - -runtime plugin/zipPlugin.vim - -def CopyZipFile(source: string) - if !filecopy($"samples/{source}", "X.zip") - assert_report($"Can't copy samples/{source}.zip") - endif -enddef - -def g:Test_zip_basic() - CopyZipFile("test.zip") - defer delete("X.zip") - e X.zip - - ### Check header - assert_match('^" zip\.vim version v\d\+', getline(1)) - assert_match('^" Browsing zipfile .*/X.zip', getline(2)) - assert_match('^" Select a file with cursor and press ENTER', getline(3)) - assert_match('^$', getline(4)) - - ### Check files listing - assert_equal(["Xzip/", "Xzip/dir/", "Xzip/file.txt"], getline(5, 7)) - - ### Check ENTER on header - :1 - exe ":normal \<cr>" - assert_equal("X.zip", @%) - - ### Check ENTER on directory - :1|:/^$//dir/ - assert_match('Please specify a file, not a directory', - execute("normal \<CR>")) - - ### Check ENTER on file - :1 - search('file.txt') - exe ":normal \<cr>" - assert_match('zipfile://.*/X.zip::Xzip/file.txt', @%) - assert_equal('one', getline(1)) - - ### Check editing file - if executable("zip") - s/one/two/ - assert_equal("two", getline(1)) - w - bw|bw - e X.zip - - :1|:/^$//file/ - exe "normal \<cr>" - assert_equal("two", getline(1)) - endif - - only - e X.zip - - ### Check extracting file - :1|:/^$//file/ - normal x - assert_true(filereadable("Xzip/file.txt")) - - ## Check not overwriting existing file - assert_match('<Xzip/file.txt> .* not overwriting!', execute("normal x")) - - delete("Xzip", "rf") - - ### Check extracting directory - :1|:/^$//dir/ - assert_match('Please specify a file, not a directory', execute("normal x")) - assert_equal("X.zip", @%) - - ### Check "x" on header - :1 - normal x - assert_equal("X.zip", @%) - bw - - ### Check opening zip when "unzip" program is missing - var save_zip_unzipcmd = g:zip_unzipcmd - g:zip_unzipcmd = "/" - assert_match('unzip not available on your system', execute("e X.zip")) - - ### Check when "unzip" don't work - if executable("false") - g:zip_unzipcmd = "false" - assert_match('X\.zip is not a zip file', execute("e X.zip")) - endif - bw - - g:zip_unzipcmd = save_zip_unzipcmd - e X.zip - - ### Check opening file when "unzip" is missing - g:zip_unzipcmd = "/" - assert_match('sorry, your system doesn''t appear to have the / program', - execute("normal \<CR>")) - - bw|bw - g:zip_unzipcmd = save_zip_unzipcmd - e X.zip - - ### Check :write when "zip" program is missing - :1|:/^$//file/ - exe "normal \<cr>Goanother\<esc>" - var save_zip_zipcmd = g:zip_zipcmd - g:zip_zipcmd = "/" - assert_match('sorry, your system doesn''t appear to have the / program', - execute("write")) - - ### Check when "zip" report failure - if executable("false") - g:zip_zipcmd = "false" - assert_match('sorry, unable to update .*/X.zip with Xzip/file.txt', - execute("write")) - endif - bw!|bw - - g:zip_zipcmd = save_zip_zipcmd - - ### Check opening an no zipfile - writefile(["qsdf"], "Xcorupt.zip", "D") - e! Xcorupt.zip - assert_equal("qsdf", getline(1)) - - bw - - ### Check no existing zipfile - assert_match('File not readable', execute("e Xnot_exists.zip")) - - bw -enddef - -def g:Test_zip_glob_fname() - CheckNotMSWindows - # does not work on Windows, why? - - CopyZipFile("testa.zip") - defer delete("X.zip") - defer delete('zipglob', 'rf') - - e X.zip - - ### 1) Check extracting strange files - :1 - var fname = 'a[a].txt' - search('\V' .. fname) - normal x - assert_true(filereadable('zipglob/' .. fname)) - delete('zipglob', 'rf') - - :1 - fname = 'a*.txt' - search('\V' .. fname) - normal x - assert_true(filereadable('zipglob/' .. fname)) - delete('zipglob', 'rf') - - :1 - fname = 'a?.txt' - search('\V' .. fname) - normal x - assert_true(filereadable('zipglob/' .. fname)) - delete('zipglob', 'rf') - - :1 - fname = 'a\.txt' - search('\V' .. escape(fname, '\\')) - normal x - assert_true(filereadable('zipglob/' .. fname)) - delete('zipglob', 'rf') - - :1 - fname = 'a\\.txt' - search('\V' .. escape(fname, '\\')) - normal x - assert_true(filereadable('zipglob/' .. fname)) - delete('zipglob', 'rf') - - ### 2) Check entering strange file names - :1 - fname = 'a[a].txt' - search('\V' .. fname) - exe ":normal \<cr>" - assert_match('zipfile://.*/X.zip::zipglob/a\[a\].txt', @%) - assert_equal('a test file with []', getline(1)) - bw - - e X.zip - :1 - fname = 'a*.txt' - search('\V' .. fname) - exe ":normal \<cr>" - assert_match('zipfile://.*/X.zip::zipglob/a\*.txt', @%) - assert_equal('a test file with a*', getline(1)) - bw - - e X.zip - :1 - fname = 'a?.txt' - search('\V' .. fname) - exe ":normal \<cr>" - assert_match('zipfile://.*/X.zip::zipglob/a?.txt', @%) - assert_equal('a test file with a?', getline(1)) - bw - - e X.zip - :1 - fname = 'a\.txt' - search('\V' .. escape(fname, '\\')) - exe ":normal \<cr>" - assert_match('zipfile://.*/X.zip::zipglob/a\\.txt', @%) - assert_equal('a test file with a\', getline(1)) - bw - - e X.zip - :1 - fname = 'a\\.txt' - search('\V' .. escape(fname, '\\')) - exe ":normal \<cr>" - assert_match('zipfile://.*/X.zip::zipglob/a\\\\.txt', @%) - assert_equal('a test file with a double \', getline(1)) - bw - - bw -enddef - -def g:Test_zip_fname_leading_hyphen() - CheckNotMSWindows - - ### copy sample zip file - CopyZipFile("poc.zip") - defer delete("X.zip") - defer delete('-d', 'rf') - defer delete('/tmp/pwned', 'rf') - - e X.zip - - :1 - var fname = '-d/tmp' - search('\V' .. fname) - normal x - assert_true(filereadable('-d/tmp')) - assert_false(filereadable('/tmp/pwned')) - bw -enddef - -def g:Test_zip_fname_evil_path() - CheckNotMSWindows - # needed for writing the zip file - CheckExecutable zip - - CopyZipFile("evil.zip") - defer delete("X.zip") - e X.zip - - :1 - var fname = 'pwn' - search('\V' .. fname) - normal x - assert_false(filereadable('/etc/ax-pwn')) - var mess = execute(':mess') - assert_match('Path Traversal Attack', mess) - - exe ":normal \<cr>" - :w - assert_match('zipfile://.*::etc/ax-pwn', @%) - bw -enddef - -def g:Test_zip_fname_evil_path2() - CheckNotMSWindows - # needed for writing the zip file - CheckExecutable zip - - CopyZipFile("evil.zip") - defer delete("X.zip") - e X.zip - - :1 - var fname = 'foobar' - search('\V' .. fname) - exe "normal \<cr>" - normal x - assert_false(filereadable('/tmp/foobar')) - :w - var mess = execute(':mess') - assert_match('Path Traversal Attack', mess) - assert_match('zipfile://.*::.*tmp/foobar', @%) - bw! -enddef |
