Some checks are pending
quality / changes (push) Waiting to run
quality / Lua Format Check (push) Blocked by required conditions
quality / Lua Lint Check (push) Blocked by required conditions
quality / Lua Type Check (push) Blocked by required conditions
quality / Markdown Format Check (push) Blocked by required conditions
test / Test (Neovim nightly) (push) Waiting to run
test / Test (Neovim stable) (push) Waiting to run
* refactor: revert module namespace from canola back to oil
Problem: the canola rename creates unnecessary friction for users
migrating from stevearc/oil.nvim — every `require('oil')` call and
config reference must change.
Solution: revert all module paths, URL schemes, autocmd groups,
highlight groups, and filetype names back to `oil`. The repo stays
`canola.nvim` for identity; the code is a drop-in replacement.
* refactor: remove `vim.g.oil` declarative config
Problem: the `vim.g.oil` configuration path was added prematurely.
It adds a second config entrypoint before the plugin has stabilized
enough to justify it.
Solution: remove `vim.g.oil` support from `plugin/oil.lua`,
`config.setup()`, docs, and tests. Users configure via
`require("oil").setup({})`.
149 lines
5 KiB
Lua
149 lines
5 KiB
Lua
local TmpDir = require('spec.tmpdir')
|
|
local test_util = require('spec.test_util')
|
|
|
|
describe('freedesktop', function()
|
|
local tmpdir
|
|
local tmphome
|
|
local home = vim.env.XDG_DATA_HOME
|
|
before_each(function()
|
|
require('oil.config').delete_to_trash = true
|
|
tmpdir = TmpDir.new()
|
|
tmphome = TmpDir.new()
|
|
package.loaded['oil.adapters.trash'] = require('oil.adapters.trash.freedesktop')
|
|
vim.env.XDG_DATA_HOME = tmphome.path
|
|
end)
|
|
after_each(function()
|
|
vim.env.XDG_DATA_HOME = home
|
|
if tmpdir then
|
|
tmpdir:dispose()
|
|
end
|
|
if tmphome then
|
|
tmphome:dispose()
|
|
end
|
|
test_util.reset_editor()
|
|
package.loaded['oil.adapters.trash'] = nil
|
|
end)
|
|
|
|
it('files can be moved to the trash', function()
|
|
tmpdir:create({ 'a.txt', 'foo/b.txt' })
|
|
test_util.actions.open({ tmpdir.path })
|
|
test_util.actions.focus('a.txt')
|
|
vim.api.nvim_feedkeys('dd', 'x', true)
|
|
test_util.actions.open({ '--trash', tmpdir.path })
|
|
vim.api.nvim_feedkeys('p', 'x', true)
|
|
test_util.actions.save()
|
|
tmpdir:assert_not_exists('a.txt')
|
|
tmpdir:assert_exists('foo/b.txt')
|
|
test_util.actions.reload()
|
|
assert.are.same({ 'a.txt' }, test_util.parse_entries(0))
|
|
end)
|
|
|
|
it('deleting a file moves it to trash', function()
|
|
tmpdir:create({ 'a.txt', 'foo/b.txt' })
|
|
test_util.actions.open({ tmpdir.path })
|
|
test_util.actions.focus('a.txt')
|
|
vim.api.nvim_feedkeys('dd', 'x', true)
|
|
test_util.actions.save()
|
|
tmpdir:assert_not_exists('a.txt')
|
|
tmpdir:assert_exists('foo/b.txt')
|
|
test_util.actions.open({ '--trash', tmpdir.path })
|
|
assert.are.same({ 'a.txt' }, test_util.parse_entries(0))
|
|
end)
|
|
|
|
it('deleting a directory moves it to trash', function()
|
|
tmpdir:create({ 'a.txt', 'foo/b.txt' })
|
|
test_util.actions.open({ tmpdir.path })
|
|
test_util.actions.focus('foo/')
|
|
vim.api.nvim_feedkeys('dd', 'x', true)
|
|
test_util.actions.save()
|
|
tmpdir:assert_not_exists('foo')
|
|
tmpdir:assert_exists('a.txt')
|
|
test_util.actions.open({ '--trash', tmpdir.path })
|
|
assert.are.same({ 'foo/' }, test_util.parse_entries(0))
|
|
end)
|
|
|
|
it('deleting a file from trash deletes it permanently', function()
|
|
tmpdir:create({ 'a.txt' })
|
|
test_util.actions.open({ tmpdir.path })
|
|
test_util.actions.focus('a.txt')
|
|
vim.api.nvim_feedkeys('dd', 'x', true)
|
|
test_util.actions.save()
|
|
test_util.actions.open({ '--trash', tmpdir.path })
|
|
test_util.actions.focus('a.txt')
|
|
vim.api.nvim_feedkeys('dd', 'x', true)
|
|
test_util.actions.save()
|
|
test_util.actions.reload()
|
|
tmpdir:assert_not_exists('a.txt')
|
|
assert.are.same({}, test_util.parse_entries(0))
|
|
end)
|
|
|
|
it('cannot create files in the trash', function()
|
|
tmpdir:create({ 'a.txt' })
|
|
test_util.actions.open({ tmpdir.path })
|
|
test_util.actions.focus('a.txt')
|
|
vim.api.nvim_feedkeys('dd', 'x', true)
|
|
test_util.actions.save()
|
|
test_util.actions.open({ '--trash', tmpdir.path })
|
|
vim.api.nvim_feedkeys('onew_file.txt', 'x', true)
|
|
test_util.actions.save()
|
|
test_util.actions.reload()
|
|
assert.are.same({ 'a.txt' }, test_util.parse_entries(0))
|
|
end)
|
|
|
|
it('cannot rename files in the trash', function()
|
|
tmpdir:create({ 'a.txt' })
|
|
test_util.actions.open({ tmpdir.path })
|
|
test_util.actions.focus('a.txt')
|
|
vim.api.nvim_feedkeys('dd', 'x', true)
|
|
test_util.actions.save()
|
|
test_util.actions.open({ '--trash', tmpdir.path })
|
|
vim.api.nvim_feedkeys('0facwnew_name', 'x', true)
|
|
test_util.actions.save()
|
|
test_util.actions.reload()
|
|
assert.are.same({ 'a.txt' }, test_util.parse_entries(0))
|
|
end)
|
|
|
|
it('cannot copy files in the trash', function()
|
|
tmpdir:create({ 'a.txt' })
|
|
test_util.actions.open({ tmpdir.path })
|
|
test_util.actions.focus('a.txt')
|
|
vim.api.nvim_feedkeys('dd', 'x', true)
|
|
test_util.actions.save()
|
|
test_util.actions.open({ '--trash', tmpdir.path })
|
|
vim.api.nvim_feedkeys('yypp', 'x', true)
|
|
test_util.actions.save()
|
|
test_util.actions.reload()
|
|
assert.are.same({ 'a.txt' }, test_util.parse_entries(0))
|
|
end)
|
|
|
|
it('can restore files from trash', function()
|
|
tmpdir:create({ 'a.txt' })
|
|
test_util.actions.open({ tmpdir.path })
|
|
test_util.actions.focus('a.txt')
|
|
vim.api.nvim_feedkeys('dd', 'x', true)
|
|
test_util.actions.save()
|
|
test_util.actions.open({ '--trash', tmpdir.path })
|
|
vim.api.nvim_feedkeys('dd', 'x', true)
|
|
test_util.actions.open({ tmpdir.path })
|
|
vim.api.nvim_feedkeys('p', 'x', true)
|
|
test_util.actions.save()
|
|
test_util.actions.reload()
|
|
assert.are.same({ 'a.txt' }, test_util.parse_entries(0))
|
|
tmpdir:assert_fs({
|
|
['a.txt'] = 'a.txt',
|
|
})
|
|
end)
|
|
|
|
it('can have multiple files with the same name in trash', function()
|
|
tmpdir:create({ 'a.txt' })
|
|
test_util.actions.open({ tmpdir.path })
|
|
vim.api.nvim_feedkeys('dd', 'x', true)
|
|
test_util.actions.save()
|
|
tmpdir:create({ 'a.txt' })
|
|
test_util.actions.reload()
|
|
vim.api.nvim_feedkeys('dd', 'x', true)
|
|
test_util.actions.save()
|
|
test_util.actions.open({ '--trash', tmpdir.path })
|
|
assert.are.same({ 'a.txt', 'a.txt' }, test_util.parse_entries(0))
|
|
end)
|
|
end)
|