Mercurial > vim
comparison src/testdir/test_autocmd.vim @ 18568:26a04a556982 v8.1.2278
patch 8.1.2278: using "cd" with "exe" may fail
Commit: https://github.com/vim/vim/commit/3503d7c94a6c8c2a5ca1665d648d0cb81afcc863
Author: Bram Moolenaar <Bram@vim.org>
Date: Sat Nov 9 20:10:17 2019 +0100
patch 8.1.2278: using "cd" with "exe" may fail
Problem: Using "cd" with "exe" may fail.
Solution: Use chdir() instead.
author | Bram Moolenaar <Bram@vim.org> |
---|---|
date | Sat, 09 Nov 2019 20:15:04 +0100 |
parents | 0cb608fc9c60 |
children | 75c466dcf61c |
comparison
equal
deleted
inserted
replaced
18567:ed3a8eb92f76 | 18568:26a04a556982 |
---|---|
1729 let s:dir_bar = s:dir_this . '/bar' | 1729 let s:dir_bar = s:dir_this . '/bar' |
1730 call mkdir(s:dir_bar) | 1730 call mkdir(s:dir_bar) |
1731 endfunc | 1731 endfunc |
1732 | 1732 |
1733 function s:After_test_dirchanged() | 1733 function s:After_test_dirchanged() |
1734 exe 'cd' s:dir_this | 1734 call chdir(s:dir_this) |
1735 call delete(s:dir_foo, 'd') | 1735 call delete(s:dir_foo, 'd') |
1736 call delete(s:dir_bar, 'd') | 1736 call delete(s:dir_bar, 'd') |
1737 augroup test_dirchanged | 1737 augroup test_dirchanged |
1738 autocmd! | 1738 autocmd! |
1739 augroup END | 1739 augroup END |
1741 | 1741 |
1742 function Test_dirchanged_global() | 1742 function Test_dirchanged_global() |
1743 call s:Before_test_dirchanged() | 1743 call s:Before_test_dirchanged() |
1744 autocmd test_dirchanged DirChanged global call add(s:li, "cd:") | 1744 autocmd test_dirchanged DirChanged global call add(s:li, "cd:") |
1745 autocmd test_dirchanged DirChanged global call add(s:li, expand("<afile>")) | 1745 autocmd test_dirchanged DirChanged global call add(s:li, expand("<afile>")) |
1746 exe 'cd' s:dir_foo | 1746 call chdir(s:dir_foo) |
1747 call assert_equal(["cd:", s:dir_foo], s:li) | 1747 call assert_equal(["cd:", s:dir_foo], s:li) |
1748 exe 'cd' s:dir_foo | 1748 call chdir(s:dir_foo) |
1749 call assert_equal(["cd:", s:dir_foo], s:li) | 1749 call assert_equal(["cd:", s:dir_foo], s:li) |
1750 exe 'lcd' s:dir_bar | 1750 exe 'lcd ' .. fnameescape(s:dir_bar) |
1751 call assert_equal(["cd:", s:dir_foo], s:li) | 1751 call assert_equal(["cd:", s:dir_foo], s:li) |
1752 call s:After_test_dirchanged() | 1752 call s:After_test_dirchanged() |
1753 endfunc | 1753 endfunc |
1754 | 1754 |
1755 function Test_dirchanged_local() | 1755 function Test_dirchanged_local() |
1756 call s:Before_test_dirchanged() | 1756 call s:Before_test_dirchanged() |
1757 autocmd test_dirchanged DirChanged window call add(s:li, "lcd:") | 1757 autocmd test_dirchanged DirChanged window call add(s:li, "lcd:") |
1758 autocmd test_dirchanged DirChanged window call add(s:li, expand("<afile>")) | 1758 autocmd test_dirchanged DirChanged window call add(s:li, expand("<afile>")) |
1759 exe 'cd' s:dir_foo | 1759 call chdir(s:dir_foo) |
1760 call assert_equal([], s:li) | 1760 call assert_equal([], s:li) |
1761 exe 'lcd' s:dir_bar | 1761 exe 'lcd ' .. fnameescape(s:dir_bar) |
1762 call assert_equal(["lcd:", s:dir_bar], s:li) | 1762 call assert_equal(["lcd:", s:dir_bar], s:li) |
1763 exe 'lcd' s:dir_bar | 1763 exe 'lcd ' .. fnameescape(s:dir_bar) |
1764 call assert_equal(["lcd:", s:dir_bar], s:li) | 1764 call assert_equal(["lcd:", s:dir_bar], s:li) |
1765 call s:After_test_dirchanged() | 1765 call s:After_test_dirchanged() |
1766 endfunc | 1766 endfunc |
1767 | 1767 |
1768 function Test_dirchanged_auto() | 1768 function Test_dirchanged_auto() |
1772 call s:Before_test_dirchanged() | 1772 call s:Before_test_dirchanged() |
1773 call test_autochdir() | 1773 call test_autochdir() |
1774 autocmd test_dirchanged DirChanged auto call add(s:li, "auto:") | 1774 autocmd test_dirchanged DirChanged auto call add(s:li, "auto:") |
1775 autocmd test_dirchanged DirChanged auto call add(s:li, expand("<afile>")) | 1775 autocmd test_dirchanged DirChanged auto call add(s:li, expand("<afile>")) |
1776 set acd | 1776 set acd |
1777 exe 'cd ..' | 1777 cd .. |
1778 call assert_equal([], s:li) | 1778 call assert_equal([], s:li) |
1779 exe 'edit ' . s:dir_foo . '/Xfile' | 1779 exe 'edit ' . s:dir_foo . '/Xfile' |
1780 call assert_equal(s:dir_foo, getcwd()) | 1780 call assert_equal(s:dir_foo, getcwd()) |
1781 call assert_equal(["auto:", s:dir_foo], s:li) | 1781 call assert_equal(["auto:", s:dir_foo], s:li) |
1782 set noacd | 1782 set noacd |