local fs = require('oil.fs') local test_util = require('spec.test_util') local util = require('oil.util') describe('update_moved_buffers', function() after_each(function() test_util.reset_editor() end) it('Renames moved buffers', function() vim.cmd.edit({ args = { 'oil-test:///foo/bar.txt' } }) util.update_moved_buffers('file', 'oil-test:///foo/bar.txt', 'oil-test:///foo/baz.txt') assert.equals('oil-test:///foo/baz.txt', vim.api.nvim_buf_get_name(0)) end) it('Renames moved buffers when they are normal files', function() local tmpdir = fs.join(vim.loop.fs_realpath(vim.fn.stdpath('cache')), 'oil', 'test') local testfile = fs.join(tmpdir, 'foo.txt') vim.cmd.edit({ args = { testfile } }) util.update_moved_buffers( 'file', 'oil://' .. fs.os_to_posix_path(testfile), 'oil://' .. fs.os_to_posix_path(fs.join(tmpdir, 'bar.txt')) ) assert.equals(fs.join(tmpdir, 'bar.txt'), vim.api.nvim_buf_get_name(0)) end) it('Renames directories', function() vim.cmd.edit({ args = { 'oil-test:///foo/' } }) util.update_moved_buffers('directory', 'oil-test:///foo/', 'oil-test:///bar/') assert.equals('oil-test:///bar/', vim.api.nvim_buf_get_name(0)) end) it('Renames subdirectories', function() vim.cmd.edit({ args = { 'oil-test:///foo/bar/' } }) util.update_moved_buffers('directory', 'oil-test:///foo/', 'oil-test:///baz/') assert.equals('oil-test:///baz/bar/', vim.api.nvim_buf_get_name(0)) end) it('Renames subfiles', function() vim.cmd.edit({ args = { 'oil-test:///foo/bar.txt' } }) util.update_moved_buffers('directory', 'oil-test:///foo/', 'oil-test:///baz/') assert.equals('oil-test:///baz/bar.txt', vim.api.nvim_buf_get_name(0)) end) it('Renames subfiles when they are normal files', function() local tmpdir = fs.join(vim.loop.fs_realpath(vim.fn.stdpath('cache')), 'oil', 'test') local foo = fs.join(tmpdir, 'foo') local bar = fs.join(tmpdir, 'bar') local testfile = fs.join(foo, 'foo.txt') vim.cmd.edit({ args = { testfile } }) util.update_moved_buffers( 'directory', 'oil://' .. fs.os_to_posix_path(foo), 'oil://' .. fs.os_to_posix_path(bar) ) assert.equals(fs.join(bar, 'foo.txt'), vim.api.nvim_buf_get_name(0)) end) end)