Files
wehub-resource-sync d5f207424b
e2e Tests / e2e (macos-latest) (push) Waiting to run
Nix CI / check (push) Waiting to run
Python CI / Python bindings (macos-latest) (push) Waiting to run
e2e Tests / e2e (windows-latest) (push) Waiting to run
Python CI / Python bindings (windows-latest) (push) Waiting to run
Build & Publish / Build Neovim aarch64-apple-darwin (push) Waiting to run
Build & Publish / Build Neovim aarch64-pc-windows-msvc (push) Waiting to run
Build & Publish / Build Neovim x86_64-apple-darwin (push) Waiting to run
Build & Publish / Build Neovim x86_64-pc-windows-msvc (push) Waiting to run
Build & Publish / Build C FFI aarch64-apple-darwin (push) Waiting to run
Build & Publish / Build C FFI aarch64-pc-windows-msvc (push) Waiting to run
Build & Publish / Build C FFI x86_64-apple-darwin (push) Waiting to run
Build & Publish / Build C FFI x86_64-pc-windows-msvc (push) Waiting to run
Build & Publish / Build MCP aarch64-apple-darwin (push) Waiting to run
Build & Publish / Build MCP aarch64-pc-windows-msvc (push) Waiting to run
Build & Publish / Build MCP x86_64-apple-darwin (push) Waiting to run
Build & Publish / Build MCP x86_64-pc-windows-msvc (push) Waiting to run
Build & Publish / Build Python wheels aarch64 (macos-latest) (push) Waiting to run
Build & Publish / Build Python wheels x86_64 (macos-latest) (push) Waiting to run
Build & Publish / Build Python wheels x86_64 (windows-latest) (push) Waiting to run
Build & Publish / Release (push) Blocked by required conditions
Build & Publish / Publish Python wheels to PyPI (push) Blocked by required conditions
Build & Publish / Publish Rust crates (push) Blocked by required conditions
Build & Publish / Publish npm packages (push) Blocked by required conditions
Rust CI / Fuzz Tests (windows-latest) (push) Waiting to run
Rust CI / Test (macos-latest) (push) Waiting to run
Rust CI / Test (windows-latest) (push) Waiting to run
Rust CI / Fuzz Tests (macos-latest) (push) Waiting to run
Python CI / Python bindings (ubuntu-latest) (push) Failing after 0s
Build & Publish / Build Neovim aarch64-linux-android (push) Failing after 0s
Build & Publish / Build Neovim aarch64-unknown-linux-gnu (push) Failing after 0s
Build & Publish / Build MCP x86_64-unknown-linux-musl (push) Failing after 1s
Build & Publish / Build Python wheels aarch64 (ubuntu-latest) (push) Failing after 0s
Build & Publish / Build Python wheels x86_64 (ubuntu-latest) (push) Failing after 1s
Build & Publish / Build Python sdist (push) Failing after 1s
Rust CI / Fuzz Tests (ubuntu-latest) (push) Failing after 1s
Rust CI / Build i686-unknown-linux-gnu (push) Failing after 0s
Rust CI / cargo clippy (push) Failing after 1s
e2e Tests / e2e (ubuntu-latest) (push) Failing after 1s
Lua CI / luacheck lint (push) Failing after 1s
Build & Publish / Build Neovim aarch64-unknown-linux-musl (push) Failing after 1s
Build & Publish / Build Neovim x86_64-unknown-linux-gnu (push) Failing after 0s
Build & Publish / Build Neovim x86_64-unknown-linux-musl (push) Failing after 1s
Build & Publish / Build C FFI aarch64-linux-android (push) Failing after 0s
Build & Publish / Build C FFI aarch64-unknown-linux-gnu (push) Failing after 0s
Build & Publish / Build C FFI aarch64-unknown-linux-musl (push) Failing after 1s
Build & Publish / Build C FFI x86_64-unknown-linux-gnu (push) Failing after 0s
Build & Publish / Build C FFI x86_64-unknown-linux-musl (push) Failing after 1s
Build & Publish / Build MCP aarch64-unknown-linux-gnu (push) Failing after 1s
Build & Publish / Build MCP aarch64-unknown-linux-musl (push) Failing after 0s
Build & Publish / Build MCP x86_64-unknown-linux-gnu (push) Failing after 1s
Spelling / Spell Check with Typos (push) Failing after 0s
Rust CI / Test (ubuntu-latest) (push) Failing after 0s
Rust CI / cargo fmt (push) Failing after 0s
Stylua / Check lua files using Stylua (push) Failing after 1s
Lua CI / lua-language-server type check (push) Failing after 12m29s
e2e Tests / e2e (alpine-musl) (push) Successful in 57m31s
chore: import upstream snapshot with attribution
2026-07-13 12:27:16 +08:00

87 lines
3.2 KiB
Lua

---@diagnostic disable: undefined-field, missing-fields
local fff_rust = require('fff.rust')
describe('clear_cache', function()
local test_dir
local tmp_frecency_path
local tmp_history_path
before_each(function()
test_dir = vim.fn.fnamemodify(debug.getinfo(1, 'S').source:sub(2), ':h:h')
if vim.fn.isdirectory(test_dir) ~= 1 then test_dir = vim.fn.getcwd() end
tmp_frecency_path = vim.fn.tempname() .. '_fff_test_frecency'
tmp_history_path = vim.fn.tempname() .. '_fff_test_history'
vim.g.fff = {
frecency = { enabled = true, db_path = tmp_frecency_path },
history = { enabled = true, db_path = tmp_history_path },
}
package.loaded['fff.conf'] = nil
package.loaded['fff.main'] = nil
end)
after_each(function()
pcall(fff_rust.stop_background_monitor)
pcall(fff_rust.cleanup_file_picker)
pcall(fff_rust.destroy_frecency_db)
pcall(fff_rust.destroy_query_db)
vim.fn.delete(tmp_frecency_path, 'rf')
vim.fn.delete(tmp_history_path, 'rf')
vim.g.fff = nil
package.loaded['fff.conf'] = nil
package.loaded['fff.main'] = nil
end)
it('deletes on-disk database directories when clearing all', function()
-- Initialize databases at temporary paths
local ok = fff_rust.init_db(tmp_frecency_path, tmp_history_path, true)
assert.is_true(ok)
-- LMDB creates the directory on init
assert.are.equal(1, vim.fn.isdirectory(tmp_frecency_path), 'frecency db dir should exist after init')
assert.are.equal(1, vim.fn.isdirectory(tmp_history_path), 'history db dir should exist after init')
local main = require('fff.main')
local result = main.clear_cache('all')
assert.is_true(result)
assert.are.equal(0, vim.fn.isdirectory(tmp_frecency_path), 'frecency db dir should be removed after clear')
assert.are.equal(0, vim.fn.isdirectory(tmp_history_path), 'history db dir should be removed after clear')
end)
it('deletes only frecency databases when scope is frecency', function()
local ok = fff_rust.init_db(tmp_frecency_path, tmp_history_path, true)
assert.is_true(ok)
ok = fff_rust.init_file_picker(test_dir)
assert.is_true(ok)
fff_rust.wait_for_initial_scan(10000)
local main = require('fff.main')
local result = main.clear_cache('frecency')
assert.is_true(result)
assert.are.equal(0, vim.fn.isdirectory(tmp_frecency_path), 'frecency db dir should be removed')
assert.are.equal(0, vim.fn.isdirectory(tmp_history_path), 'history db dir should be removed')
local progress = fff_rust.get_scan_progress()
assert.is_not_nil(progress)
assert.is_true(progress.scanned_files_count > 0, 'file picker should still have scanned files')
end)
it('cleans file picker but keeps databases when scope is files', function()
local ok = fff_rust.init_db(tmp_frecency_path, tmp_history_path, true)
assert.is_true(ok)
ok = fff_rust.init_file_picker(test_dir)
assert.is_true(ok)
fff_rust.wait_for_initial_scan(10000)
local main = require('fff.main')
local result = main.clear_cache('files')
assert.is_true(result)
assert.are.equal(1, vim.fn.isdirectory(tmp_frecency_path), 'frecency db dir should still exist')
assert.are.equal(1, vim.fn.isdirectory(tmp_history_path), 'history db dir should still exist')
end)
end)