Files
neovim/test/functional/options/autochdir_spec.lua
zeertzjq e3d46a6337 test: start test runners in Xtest_xdg dir (#37964)
This is a better way to prevent parallel tests from interfering with
each other, as there are many ways files can be created and deleted in
tests, so enforcing different file names is hard.

Using $TMPDIR can also work in most cases, but 'backipskip' etc. have
special defaults for $TMPDIR.

Symlink runtime/, src/, test/ and README.md to Xtest_xdg dir to make
tests more convenient (and symlinking test/ is required for busted).

Also, use README.md instead of test/README.md in the Ex mode inccommand
test, as test/README.md no longer contains 'N' char.
2026-02-20 06:53:33 +08:00

47 lines
1.5 KiB
Lua

local t = require('test.testutil')
local n = require('test.functional.testnvim')()
local clear = n.clear
local eq = t.eq
local fn = n.fn
local command = n.command
local mkdir = t.mkdir
describe("'autochdir'", function()
it('given on the shell gets processed properly', function()
local start_dir = vim.uv.cwd()
local target_dir = t.paths.test_source_path .. '/test/functional/fixtures'
-- By default 'autochdir' is off, thus getcwd() returns the initial directory.
clear(target_dir .. '/tty-test.c')
eq(start_dir, fn.getcwd())
-- With 'autochdir' on, we should get the directory of tty-test.c.
clear('--cmd', 'set autochdir', target_dir .. '/tty-test.c')
eq(t.is_os('win') and target_dir:gsub('/', '\\') or target_dir, fn.getcwd())
end)
it('is not overwritten by getwinvar() call #17609', function()
local curdir = t.fix_slashes(vim.uv.cwd())
local dir_a = curdir .. '/Xtest-functional-options-autochdir.dir_a'
local dir_b = curdir .. '/Xtest-functional-options-autochdir.dir_b'
mkdir(dir_a)
mkdir(dir_b)
clear()
command('set shellslash')
command('set autochdir')
command('edit ' .. dir_a .. '/file1')
eq(dir_a, fn.getcwd())
command('lcd ' .. dir_b)
eq(dir_b, fn.getcwd())
command('botright vnew ../file2')
eq(curdir, fn.getcwd())
command('wincmd w')
eq(dir_a, fn.getcwd())
fn.getwinvar(2, 'foo')
eq(dir_a, fn.getcwd())
n.rmdir(dir_a)
n.rmdir(dir_b)
end)
end)